@nxtedition/mime 1.1.2 → 1.1.4
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 +78 -32
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +255 -184
- package/lib/index.js.map +1 -0
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -21,6 +21,10 @@ lookup('video.nut') // 'video/x-nut'
|
|
|
21
21
|
lookup('audio.ac3') // 'audio/ac3'
|
|
22
22
|
lookup('subs.stl') // 'application/x-ebu-stl'
|
|
23
23
|
lookup('subs.scc') // 'text/x-scc'
|
|
24
|
+
|
|
25
|
+
// Bare extensions work too (like the standard mime package):
|
|
26
|
+
lookup('nut') // 'video/x-nut'
|
|
27
|
+
lookup('dnxhd') // 'video/x-dnxhd'
|
|
24
28
|
```
|
|
25
29
|
|
|
26
30
|
### Get extension from MIME type
|
|
@@ -32,49 +36,91 @@ extension('video/mp4') // 'mp4'
|
|
|
32
36
|
extension('video/x-dnxhd') // 'dnxhd'
|
|
33
37
|
extension('audio/ac3') // 'ac3'
|
|
34
38
|
extension('application/x-ebu-stl') // 'stl'
|
|
35
|
-
extension('video/quicktime'
|
|
39
|
+
extension('video/quicktime') // 'mov'
|
|
40
|
+
|
|
41
|
+
// MIME types are case-insensitive and parameters are ignored:
|
|
42
|
+
extension('Video/X-DnxHD; profile=hd') // 'dnxhd'
|
|
36
43
|
```
|
|
37
44
|
|
|
38
45
|
## Broadcast & media types
|
|
39
46
|
|
|
40
|
-
Types handled beyond the standard `mime` package:
|
|
41
|
-
|
|
42
|
-
| Extension
|
|
43
|
-
|
|
|
44
|
-
| `.nut`
|
|
45
|
-
| `.
|
|
46
|
-
| `.
|
|
47
|
-
| `.
|
|
48
|
-
| `.
|
|
49
|
-
| `.
|
|
50
|
-
| `.
|
|
51
|
-
| `.
|
|
52
|
-
| `.
|
|
53
|
-
| `.
|
|
54
|
-
| `.
|
|
55
|
-
| `.
|
|
56
|
-
| `.
|
|
57
|
-
| `.
|
|
58
|
-
| `.
|
|
59
|
-
| `.
|
|
60
|
-
| `.
|
|
61
|
-
| `.
|
|
62
|
-
| `.
|
|
63
|
-
| `.
|
|
64
|
-
| `.
|
|
65
|
-
| `.
|
|
66
|
-
| `.
|
|
67
|
-
| `.
|
|
47
|
+
Types handled beyond (or instead of) the standard `mime` package:
|
|
48
|
+
|
|
49
|
+
| Extension | MIME Type | Format |
|
|
50
|
+
| ---------------------- | ----------------------------- | ------------------------- |
|
|
51
|
+
| `.nut` | `video/x-nut` | NUT container |
|
|
52
|
+
| `.aaf` | `application/x-aaf` | Avid AAF |
|
|
53
|
+
| `.lxf` | `application/x-lxf` | Leitch LXF |
|
|
54
|
+
| `.dnxhd` `.dnxhr` | `video/x-dnxhd` | Avid DNxHD/DNxHR |
|
|
55
|
+
| `.dv` | `video/x-dv` | DV video |
|
|
56
|
+
| `.h265` `.265` `.hevc` | `video/h265` | Raw HEVC stream |
|
|
57
|
+
| `.264` `.avc` | `video/h264` | Raw AVC stream |
|
|
58
|
+
| `.h266` `.266` `.vvc` | `video/h266` | Raw VVC stream |
|
|
59
|
+
| `.av1` | `video/av1` | Raw AV1 stream |
|
|
60
|
+
| `.ffv1` | `video/ffv1` | FFV1 archival codec |
|
|
61
|
+
| `.vc1` | `video/vc1` | VC-1 video |
|
|
62
|
+
| `.prores` | `video/x-prores` | Apple ProRes |
|
|
63
|
+
| `.r3d` | `video/x-red-r3d` | RED REDCODE RAW |
|
|
64
|
+
| `.braw` | `video/x-blackmagic-braw` | Blackmagic RAW |
|
|
65
|
+
| `.ari` | `image/x-arri-ari` | ARRIRAW frame |
|
|
66
|
+
| `.ac3` | `audio/ac3` | Dolby Digital |
|
|
67
|
+
| `.eac3` `.ec3` | `audio/eac3` | Dolby Digital Plus |
|
|
68
|
+
| `.opus` | `audio/opus` | Opus audio |
|
|
69
|
+
| `.flac` | `audio/flac` | FLAC lossless |
|
|
70
|
+
| `.pcm-s16le` | `audio/x-pcm-s16le` | Raw 16-bit PCM |
|
|
71
|
+
| `.pcm-s24le` | `audio/x-pcm-s24le` | Raw 24-bit PCM |
|
|
72
|
+
| `.pcm-s32le` | `audio/x-pcm-s32le` | Raw 32-bit PCM |
|
|
73
|
+
| `.bwf` | `audio/wav` | Broadcast Wave |
|
|
74
|
+
| `.w64` | `audio/x-w64` | Sony Wave64 |
|
|
75
|
+
| `.rf64` | `audio/x-rf64` | EBU RF64 |
|
|
76
|
+
| `.stl` | `application/x-ebu-stl` | EBU STL subtitles |
|
|
77
|
+
| `.scc` | `text/x-scc` | Scenarist Closed Captions |
|
|
78
|
+
| `.cap` | `application/x-cap` | Softel CAP captions |
|
|
79
|
+
| `.890` | `application/x-890` | Cavena 890 subtitles |
|
|
80
|
+
| `.pac` | `application/x-pac` | Screen Electronics PAC |
|
|
81
|
+
| `.ass` | `text/x-ass` | Advanced SubStation Alpha |
|
|
82
|
+
| `.ssa` | `text/x-ssa` | SubStation Alpha |
|
|
83
|
+
| `.dfxp` `.itt` | `application/ttml+xml` | TTML dialects |
|
|
84
|
+
| `.exr` | `image/x-exr` | OpenEXR |
|
|
85
|
+
| `.cin` | `image/x-cin` | Cineon |
|
|
86
|
+
| `.ism` | `application/vnd.ms-sstr+xml` | Smooth Streaming |
|
|
87
|
+
| `.mp3` | `audio/mp3` | MP3 (Chrome workaround) |
|
|
88
|
+
|
|
89
|
+
Camera RAW stills are also covered: `cr2`, `cr3`, `nef`, `nrw`, `arw`, `srf`, `sr2`, `raf`, `rw2`, `orf`, `pef`, `ptx`, `x3f`, `3fr`, `fff`, `iiq`, `mrw`, `mef`, `dng`, `raw`, `rwl`, `k25`, `kdc`, `bay`, `erf`, `srw`, `mos` — each mapped to its vendor `image/x-*` type.
|
|
90
|
+
|
|
91
|
+
### Deliberate differences from `mime`
|
|
92
|
+
|
|
93
|
+
Some mappings intentionally shadow standard ones for broadcast use. If you serve 3D models, pcap captures, or proxy autoconfig files, this package is not for you:
|
|
94
|
+
|
|
95
|
+
- `.stl` → `application/x-ebu-stl` (not `model/stl`)
|
|
96
|
+
- `.cap` → `application/x-cap` (not `application/vnd.tcpdump.pcap`)
|
|
97
|
+
- `.pac` → `application/x-pac` (not `application/x-ns-proxy-autoconfig`)
|
|
98
|
+
- `.opus` → `audio/opus` (not `audio/ogg`)
|
|
99
|
+
- `.flac` → `audio/flac` (not `audio/x-flac`)
|
|
100
|
+
- `.exr` → `image/x-exr` (not `image/aces`)
|
|
101
|
+
- `.mp3` → `audio/mp3` (not `audio/mpeg`, see [Chromium #227004](https://bugs.chromium.org/p/chromium/issues/detail?id=227004))
|
|
102
|
+
|
|
103
|
+
In the reverse direction, common media extensions are preferred over mime-db's first entries:
|
|
104
|
+
|
|
105
|
+
- `video/quicktime` → `mov` (not `qt`)
|
|
106
|
+
- `audio/mpeg` → `mp3` (not `mpga`)
|
|
107
|
+
- `audio/aac` → `aac` (not `adts`)
|
|
108
|
+
|
|
109
|
+
`extension()` also accepts common alias spellings that have no forward mapping: `video/nut`, `video/dnxhd`, `video/dv`, `video/hevc` (→ `h265`), `video/x-m2ts`, `audio/pcm-s16le`/`-s24le`/`-s32le` (without the `x-` prefix), and `image/x-dpx`.
|
|
68
110
|
|
|
69
111
|
## API
|
|
70
112
|
|
|
71
113
|
### `lookup(name: string): string | null`
|
|
72
114
|
|
|
73
|
-
Returns the MIME type for the given filename or
|
|
115
|
+
Returns the MIME type for the given filename, path, or bare extension, or `null` if unknown. Matching is case-insensitive and follows the standard `mime` package's path semantics: the extension is what follows the last dot of the basename, provided that dot is not the basename's first character (a dotfile with a path, like `/path/.nut`, is extensionless). A name without such an extension is treated as a bare extension only when it has no path component (`nut` and `.nut` both resolve).
|
|
116
|
+
|
|
117
|
+
Also exported as `getType`.
|
|
118
|
+
|
|
119
|
+
### `extension(mimeType: string): string | null`
|
|
74
120
|
|
|
75
|
-
|
|
121
|
+
Returns the file extension for the given MIME type, or `null` if unknown. Matching is case-insensitive and ignores parameters (e.g. `; charset=...`).
|
|
76
122
|
|
|
77
|
-
|
|
123
|
+
Also exported as `getExtension`.
|
|
78
124
|
|
|
79
125
|
## License
|
|
80
126
|
|
package/lib/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwOA,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmClD;AAED,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,CAAA;AAE5B,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBzD;AAED,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,CAAA"}
|
package/lib/index.js
CHANGED
|
@@ -1,188 +1,259 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
const EXT_TO_MIME
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
eac3: 'audio/eac3',
|
|
27
|
-
ec3: 'audio/eac3',
|
|
28
|
-
opus: 'audio/opus',
|
|
29
|
-
flac: 'audio/flac',
|
|
30
|
-
|
|
31
|
-
// Broadcast subtitle/caption formats
|
|
32
|
-
stl: 'application/x-ebu-stl',
|
|
33
|
-
scc: 'text/x-scc',
|
|
34
|
-
cap: 'application/x-cap',
|
|
35
|
-
890: 'application/x-890',
|
|
36
|
-
pac: 'application/x-pac',
|
|
37
|
-
ass: 'text/x-ass',
|
|
38
|
-
ssa: 'text/x-ssa',
|
|
39
|
-
|
|
40
|
-
// Camera RAW
|
|
41
|
-
cr2: 'image/x-canon-cr2',
|
|
42
|
-
nef: 'image/x-nikon-nef',
|
|
43
|
-
cr3: 'image/x-canon-cr3',
|
|
44
|
-
nrw: 'image/x-nikon-nrw',
|
|
45
|
-
arw: 'image/x-sony-arw',
|
|
46
|
-
srf: 'image/x-sony-srf',
|
|
47
|
-
sr2: 'image/x-sony-sr2',
|
|
48
|
-
raf: 'image/x-fujifilm-raf',
|
|
49
|
-
rw2: 'image/x-panasonic-rw2',
|
|
50
|
-
orf: 'image/x-olympus-orf',
|
|
51
|
-
pef: 'image/x-pentax-pef',
|
|
52
|
-
ptx: 'image/x-pentax-ptx',
|
|
53
|
-
x3f: 'image/x-sigma-x3f',
|
|
54
|
-
'3fr': 'image/x-hasselblad-3fr',
|
|
55
|
-
fff: 'image/x-hasselblad-fff',
|
|
56
|
-
iiq: 'image/x-phase-one-iiq',
|
|
57
|
-
mrw: 'image/x-minolta-mrw',
|
|
58
|
-
mef: 'image/x-mamiya-mef',
|
|
59
|
-
dng: 'image/x-adobe-dng',
|
|
60
|
-
raw: 'image/x-raw',
|
|
61
|
-
rwl: 'image/x-leica-rwl',
|
|
62
|
-
k25: 'image/x-kodak-k25',
|
|
63
|
-
kdc: 'image/x-kodak-kdc',
|
|
64
|
-
bay: 'image/x-casio-bay',
|
|
65
|
-
erf: 'image/x-epson-erf',
|
|
66
|
-
srw: 'image/x-samsung-srw',
|
|
67
|
-
mos: 'image/x-leaf-mos',
|
|
68
|
-
|
|
69
|
-
// Imaging
|
|
70
|
-
exr: 'image/x-exr',
|
|
71
|
-
cin: 'image/x-cin',
|
|
72
|
-
|
|
73
|
-
// Streaming
|
|
74
|
-
ism: 'application/vnd.ms-sstr+xml',
|
|
75
|
-
|
|
76
|
-
// NOTE: Workaround for Chrome.
|
|
77
|
-
// See, https://bugs.chromium.org/p/chromium/issues/detail?id=227004.
|
|
78
|
-
mp3: 'audio/mp3',
|
|
1
|
+
import standardTypes from 'mime/types/standard.js';
|
|
2
|
+
import otherTypes from 'mime/types/other.js';
|
|
3
|
+
const EXT_TO_MIME = new Map();
|
|
4
|
+
const MIME_TO_EXT = new Map();
|
|
5
|
+
// Replicates Mime#define over mime's public data exports. The default mime
|
|
6
|
+
// instance is frozen (no runtime define), so merging at load time is exactly
|
|
7
|
+
// equivalent: the first extension of a type wins the reverse mapping, and
|
|
8
|
+
// '*'-prefixed extensions don't claim the forward mapping.
|
|
9
|
+
for (const typeMap of [standardTypes, otherTypes]) {
|
|
10
|
+
for (const [type, extensions] of Object.entries(typeMap)) {
|
|
11
|
+
let first = true;
|
|
12
|
+
for (let ext of extensions) {
|
|
13
|
+
const starred = ext.startsWith('*');
|
|
14
|
+
if (starred) {
|
|
15
|
+
ext = ext.slice(1);
|
|
16
|
+
}
|
|
17
|
+
if (first) {
|
|
18
|
+
MIME_TO_EXT.set(type, ext);
|
|
19
|
+
first = false;
|
|
20
|
+
}
|
|
21
|
+
if (!starred) {
|
|
22
|
+
EXT_TO_MIME.set(ext, type);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
79
26
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
27
|
+
// Custom mappings applied on top of mime-db. Some deliberately shadow
|
|
28
|
+
// standard mappings (stl, cap, pac, opus, flac, exr, mp3) — see README.
|
|
29
|
+
for (const [ext, type] of Object.entries({
|
|
30
|
+
// Broadcast containers
|
|
31
|
+
nut: 'video/x-nut',
|
|
32
|
+
aaf: 'application/x-aaf',
|
|
33
|
+
lxf: 'application/x-lxf',
|
|
34
|
+
// Raw codecs
|
|
35
|
+
dnxhd: 'video/x-dnxhd',
|
|
36
|
+
dnxhr: 'video/x-dnxhd',
|
|
37
|
+
dv: 'video/x-dv',
|
|
38
|
+
h265: 'video/h265',
|
|
39
|
+
265: 'video/h265',
|
|
40
|
+
hevc: 'video/h265',
|
|
41
|
+
264: 'video/h264',
|
|
42
|
+
avc: 'video/h264',
|
|
43
|
+
h266: 'video/h266',
|
|
44
|
+
266: 'video/h266',
|
|
45
|
+
vvc: 'video/h266',
|
|
46
|
+
av1: 'video/av1',
|
|
47
|
+
ffv1: 'video/ffv1',
|
|
48
|
+
vc1: 'video/vc1',
|
|
49
|
+
prores: 'video/x-prores',
|
|
50
|
+
// Cinema camera RAW
|
|
51
|
+
r3d: 'video/x-red-r3d',
|
|
52
|
+
braw: 'video/x-blackmagic-braw',
|
|
53
|
+
ari: 'image/x-arri-ari',
|
|
54
|
+
// Raw PCM
|
|
55
|
+
'pcm-s32le': 'audio/x-pcm-s32le',
|
|
56
|
+
'pcm-s24le': 'audio/x-pcm-s24le',
|
|
57
|
+
'pcm-s16le': 'audio/x-pcm-s16le',
|
|
58
|
+
// Audio codecs missing extensions in mime-db
|
|
59
|
+
ac3: 'audio/ac3',
|
|
60
|
+
eac3: 'audio/eac3',
|
|
61
|
+
ec3: 'audio/eac3',
|
|
62
|
+
opus: 'audio/opus',
|
|
63
|
+
flac: 'audio/flac',
|
|
64
|
+
// Broadcast audio containers
|
|
65
|
+
bwf: 'audio/wav',
|
|
66
|
+
w64: 'audio/x-w64',
|
|
67
|
+
rf64: 'audio/x-rf64',
|
|
68
|
+
// Broadcast subtitle/caption formats
|
|
69
|
+
stl: 'application/x-ebu-stl',
|
|
70
|
+
scc: 'text/x-scc',
|
|
71
|
+
cap: 'application/x-cap',
|
|
72
|
+
890: 'application/x-890',
|
|
73
|
+
pac: 'application/x-pac',
|
|
74
|
+
ass: 'text/x-ass',
|
|
75
|
+
ssa: 'text/x-ssa',
|
|
76
|
+
dfxp: 'application/ttml+xml',
|
|
77
|
+
itt: 'application/ttml+xml',
|
|
78
|
+
// Camera RAW
|
|
79
|
+
cr2: 'image/x-canon-cr2',
|
|
80
|
+
nef: 'image/x-nikon-nef',
|
|
81
|
+
cr3: 'image/x-canon-cr3',
|
|
82
|
+
nrw: 'image/x-nikon-nrw',
|
|
83
|
+
arw: 'image/x-sony-arw',
|
|
84
|
+
srf: 'image/x-sony-srf',
|
|
85
|
+
sr2: 'image/x-sony-sr2',
|
|
86
|
+
raf: 'image/x-fujifilm-raf',
|
|
87
|
+
rw2: 'image/x-panasonic-rw2',
|
|
88
|
+
orf: 'image/x-olympus-orf',
|
|
89
|
+
pef: 'image/x-pentax-pef',
|
|
90
|
+
ptx: 'image/x-pentax-ptx',
|
|
91
|
+
x3f: 'image/x-sigma-x3f',
|
|
92
|
+
'3fr': 'image/x-hasselblad-3fr',
|
|
93
|
+
fff: 'image/x-hasselblad-fff',
|
|
94
|
+
iiq: 'image/x-phase-one-iiq',
|
|
95
|
+
mrw: 'image/x-minolta-mrw',
|
|
96
|
+
mef: 'image/x-mamiya-mef',
|
|
97
|
+
dng: 'image/x-adobe-dng',
|
|
98
|
+
raw: 'image/x-raw',
|
|
99
|
+
rwl: 'image/x-leica-rwl',
|
|
100
|
+
k25: 'image/x-kodak-k25',
|
|
101
|
+
kdc: 'image/x-kodak-kdc',
|
|
102
|
+
bay: 'image/x-casio-bay',
|
|
103
|
+
erf: 'image/x-epson-erf',
|
|
104
|
+
srw: 'image/x-samsung-srw',
|
|
105
|
+
mos: 'image/x-leaf-mos',
|
|
106
|
+
// Imaging
|
|
107
|
+
exr: 'image/x-exr',
|
|
108
|
+
cin: 'image/x-cin',
|
|
109
|
+
// Streaming
|
|
110
|
+
ism: 'application/vnd.ms-sstr+xml',
|
|
111
|
+
// NOTE: Workaround for Chrome.
|
|
112
|
+
// See, https://bugs.chromium.org/p/chromium/issues/detail?id=227004.
|
|
113
|
+
mp3: 'audio/mp3',
|
|
114
|
+
})) {
|
|
115
|
+
EXT_TO_MIME.set(ext, type);
|
|
157
116
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
117
|
+
for (const [type, ext] of Object.entries({
|
|
118
|
+
// Broadcast containers
|
|
119
|
+
'video/x-nut': 'nut',
|
|
120
|
+
'video/nut': 'nut',
|
|
121
|
+
'video/x-m2ts': 'm2ts',
|
|
122
|
+
'application/x-aaf': 'aaf',
|
|
123
|
+
'application/x-lxf': 'lxf',
|
|
124
|
+
// Raw codecs
|
|
125
|
+
'video/x-dnxhd': 'dnxhd',
|
|
126
|
+
'video/dnxhd': 'dnxhd',
|
|
127
|
+
'video/x-dv': 'dv',
|
|
128
|
+
'video/dv': 'dv',
|
|
129
|
+
'video/h265': 'h265',
|
|
130
|
+
'video/hevc': 'h265',
|
|
131
|
+
'video/h266': 'h266',
|
|
132
|
+
'video/av1': 'av1',
|
|
133
|
+
'video/ffv1': 'ffv1',
|
|
134
|
+
'video/vc1': 'vc1',
|
|
135
|
+
'video/x-prores': 'prores',
|
|
136
|
+
// Cinema camera RAW
|
|
137
|
+
'video/x-red-r3d': 'r3d',
|
|
138
|
+
'video/x-blackmagic-braw': 'braw',
|
|
139
|
+
'image/x-arri-ari': 'ari',
|
|
140
|
+
// Raw PCM
|
|
141
|
+
'audio/x-pcm-s32le': 'pcm-s32le',
|
|
142
|
+
'audio/pcm-s32le': 'pcm-s32le',
|
|
143
|
+
'audio/x-pcm-s24le': 'pcm-s24le',
|
|
144
|
+
'audio/pcm-s24le': 'pcm-s24le',
|
|
145
|
+
'audio/x-pcm-s16le': 'pcm-s16le',
|
|
146
|
+
'audio/pcm-s16le': 'pcm-s16le',
|
|
147
|
+
// Audio codecs
|
|
148
|
+
'audio/ac3': 'ac3',
|
|
149
|
+
'audio/eac3': 'eac3',
|
|
150
|
+
'audio/opus': 'opus',
|
|
151
|
+
'audio/flac': 'flac',
|
|
152
|
+
// Broadcast audio containers
|
|
153
|
+
'audio/x-w64': 'w64',
|
|
154
|
+
'audio/x-rf64': 'rf64',
|
|
155
|
+
// Prefer the ubiquitous extensions over mime-db's first entries
|
|
156
|
+
// ('mpga' and 'adts').
|
|
157
|
+
'audio/mpeg': 'mp3',
|
|
158
|
+
'audio/mp3': 'mp3',
|
|
159
|
+
'audio/aac': 'aac',
|
|
160
|
+
// Broadcast subtitle/caption formats
|
|
161
|
+
'application/x-ebu-stl': 'stl',
|
|
162
|
+
'text/x-scc': 'scc',
|
|
163
|
+
'application/x-cap': 'cap',
|
|
164
|
+
'application/x-890': '890',
|
|
165
|
+
'application/x-pac': 'pac',
|
|
166
|
+
'text/x-ass': 'ass',
|
|
167
|
+
'text/x-ssa': 'ssa',
|
|
168
|
+
// Camera RAW
|
|
169
|
+
'image/x-nikon-nef': 'nef',
|
|
170
|
+
'image/x-canon-cr2': 'cr2',
|
|
171
|
+
'image/x-canon-cr3': 'cr3',
|
|
172
|
+
'image/x-nikon-nrw': 'nrw',
|
|
173
|
+
'image/x-sony-arw': 'arw',
|
|
174
|
+
'image/x-sony-srf': 'srf',
|
|
175
|
+
'image/x-sony-sr2': 'sr2',
|
|
176
|
+
'image/x-fujifilm-raf': 'raf',
|
|
177
|
+
'image/x-panasonic-rw2': 'rw2',
|
|
178
|
+
'image/x-olympus-orf': 'orf',
|
|
179
|
+
'image/x-pentax-pef': 'pef',
|
|
180
|
+
'image/x-pentax-ptx': 'ptx',
|
|
181
|
+
'image/x-sigma-x3f': 'x3f',
|
|
182
|
+
'image/x-hasselblad-3fr': '3fr',
|
|
183
|
+
'image/x-hasselblad-fff': 'fff',
|
|
184
|
+
'image/x-phase-one-iiq': 'iiq',
|
|
185
|
+
'image/x-minolta-mrw': 'mrw',
|
|
186
|
+
'image/x-mamiya-mef': 'mef',
|
|
187
|
+
'image/x-adobe-dng': 'dng',
|
|
188
|
+
'image/x-raw': 'raw',
|
|
189
|
+
'image/x-leica-rwl': 'rwl',
|
|
190
|
+
'image/x-kodak-k25': 'k25',
|
|
191
|
+
'image/x-kodak-kdc': 'kdc',
|
|
192
|
+
'image/x-casio-bay': 'bay',
|
|
193
|
+
'image/x-epson-erf': 'erf',
|
|
194
|
+
'image/x-samsung-srw': 'srw',
|
|
195
|
+
'image/x-leaf-mos': 'mos',
|
|
196
|
+
// Imaging
|
|
197
|
+
'image/x-exr': 'exr',
|
|
198
|
+
'image/x-cin': 'cin',
|
|
199
|
+
'image/x-dpx': 'dpx',
|
|
200
|
+
// Streaming
|
|
201
|
+
'application/vnd.ms-sstr+xml': 'ism',
|
|
202
|
+
// QuickTime — prefer .mov over .qt
|
|
203
|
+
'video/quicktime': 'mov',
|
|
204
|
+
})) {
|
|
205
|
+
MIME_TO_EXT.set(type, ext);
|
|
172
206
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
207
|
+
export function lookup(name) {
|
|
208
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
// Mirrors mime's path parsing: the extension is what follows the last dot
|
|
212
|
+
// of the basename, provided that dot is not the basename's first character
|
|
213
|
+
// (a dotfile with a path, like '/path/.nut', is extensionless). A name
|
|
214
|
+
// without such an extension is treated as a bare extension, but only when
|
|
215
|
+
// it has no path component ('nut' and '.nut' both resolve).
|
|
216
|
+
let start = 0;
|
|
217
|
+
for (let i = name.length - 1; i >= 0; i--) {
|
|
218
|
+
const code = name.charCodeAt(i);
|
|
219
|
+
if (code === 0x2f /* / */ || code === 0x5c /* \ */) {
|
|
220
|
+
start = i + 1;
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const dot = name.lastIndexOf('.');
|
|
225
|
+
let ext;
|
|
226
|
+
if (dot > start) {
|
|
227
|
+
ext = name.slice(dot + 1).toLowerCase();
|
|
228
|
+
}
|
|
229
|
+
else if (start === 0) {
|
|
230
|
+
ext = (dot === 0 ? name.slice(1) : name).toLowerCase();
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
if (ext.length === 0) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
return EXT_TO_MIME.get(ext) ?? null;
|
|
186
239
|
}
|
|
187
|
-
|
|
188
|
-
export
|
|
240
|
+
export { lookup as getType };
|
|
241
|
+
export function extension(mimeType) {
|
|
242
|
+
if (typeof mimeType !== 'string' || mimeType.length === 0) {
|
|
243
|
+
return null;
|
|
244
|
+
}
|
|
245
|
+
// Fast path for canonical (lowercase, parameterless) types.
|
|
246
|
+
const ext = MIME_TO_EXT.get(mimeType);
|
|
247
|
+
if (ext !== undefined) {
|
|
248
|
+
return ext;
|
|
249
|
+
}
|
|
250
|
+
// Mirrors mime's normalization: parameters stripped, trimmed, lowercased.
|
|
251
|
+
const semi = mimeType.indexOf(';');
|
|
252
|
+
const essence = (semi === -1 ? mimeType : mimeType.slice(0, semi)).trim().toLowerCase();
|
|
253
|
+
if (essence === mimeType) {
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
return MIME_TO_EXT.get(essence) ?? null;
|
|
257
|
+
}
|
|
258
|
+
export { extension as getExtension };
|
|
259
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nxtedition/mime",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"access": "public"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "rimraf lib && tsc -p tsconfig.build.json
|
|
17
|
+
"build": "rimraf lib && tsc -p tsconfig.build.json",
|
|
18
18
|
"prepublishOnly": "yarn build",
|
|
19
19
|
"typecheck": "tsc --noEmit",
|
|
20
20
|
"test": "node --test",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "^25.5.0",
|
|
28
|
-
"
|
|
28
|
+
"mitata": "^1.0.34",
|
|
29
29
|
"oxlint-tsgolint": "^0.17.0",
|
|
30
30
|
"rimraf": "^6.1.3",
|
|
31
31
|
"typescript": "^5.9.3"
|
|
32
32
|
},
|
|
33
|
-
"gitHead": "
|
|
33
|
+
"gitHead": "c9f2526dc870597de119b8ec5083f97901d4a2e2"
|
|
34
34
|
}
|