@wooksjs/http-static 0.4.8 → 0.4.10

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/dist/index.mjs CHANGED
@@ -16,7 +16,7 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
16
16
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17
17
  PERFORMANCE OF THIS SOFTWARE.
18
18
  ***************************************************************************** */
19
- /* global Reflect, Promise */
19
+ /* global Reflect, Promise, SuppressedError, Symbol */
20
20
 
21
21
 
22
22
  function __awaiter(thisArg, _arguments, P, generator) {
@@ -27,1403 +27,1408 @@ function __awaiter(thisArg, _arguments, P, generator) {
27
27
  function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
28
28
  step((generator = generator.apply(thisArg, _arguments || [])).next());
29
29
  });
30
- }
30
+ }
31
+
32
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
33
+ var e = new Error(message);
34
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
35
+ };
31
36
 
32
- const extensions = {
33
- '123': 'application/vnd.lotus-1-2-3',
34
- ez: 'application/andrew-inset',
35
- aw: 'application/applixware',
36
- atom: 'application/atom+xml',
37
- atomcat: 'application/atomcat+xml',
38
- atomdeleted: 'application/atomdeleted+xml',
39
- atomsvc: 'application/atomsvc+xml',
40
- dwd: 'application/atsc-dwd+xml',
41
- held: 'application/atsc-held+xml',
42
- rsat: 'application/atsc-rsat+xml',
43
- bdoc: 'application/x-bdoc',
44
- xcs: 'application/calendar+xml',
45
- ccxml: 'application/ccxml+xml',
46
- cdfx: 'application/cdfx+xml',
47
- cdmia: 'application/cdmi-capability',
48
- cdmic: 'application/cdmi-container',
49
- cdmid: 'application/cdmi-domain',
50
- cdmio: 'application/cdmi-object',
51
- cdmiq: 'application/cdmi-queue',
52
- cpl: 'application/cpl+xml',
53
- cu: 'application/cu-seeme',
54
- cwl: 'application/cwl',
55
- mpd: 'application/dash+xml',
56
- mpp: 'application/vnd.ms-project',
57
- davmount: 'application/davmount+xml',
58
- dbk: 'application/docbook+xml',
59
- dssc: 'application/dssc+der',
60
- xdssc: 'application/dssc+xml',
61
- ecma: 'application/ecmascript',
62
- emma: 'application/emma+xml',
63
- emotionml: 'application/emotionml+xml',
64
- epub: 'application/epub+zip',
65
- exi: 'application/exi',
66
- exp: 'application/express',
67
- fdf: 'application/vnd.fdf',
68
- fdt: 'application/fdt+xml',
69
- pfr: 'application/font-tdpfr',
70
- geojson: 'application/geo+json',
71
- gml: 'application/gml+xml',
72
- gpx: 'application/gpx+xml',
73
- gxf: 'application/gxf',
74
- gz: 'application/gzip',
75
- hjson: 'application/hjson',
76
- stk: 'application/hyperstudio',
77
- ink: 'application/inkml+xml',
78
- inkml: 'application/inkml+xml',
79
- ipfix: 'application/ipfix',
80
- its: 'application/its+xml',
81
- jar: 'application/java-archive',
82
- war: 'application/java-archive',
83
- ear: 'application/java-archive',
84
- ser: 'application/java-serialized-object',
85
- class: 'application/java-vm',
86
- js: 'application/javascript',
87
- mjs: 'application/javascript',
88
- json: 'application/json',
89
- map: 'application/json',
90
- json5: 'application/json5',
91
- jsonml: 'application/jsonml+json',
92
- jsonld: 'application/ld+json',
93
- lgr: 'application/lgr+xml',
94
- lostxml: 'application/lost+xml',
95
- hqx: 'application/mac-binhex40',
96
- cpt: 'application/mac-compactpro',
97
- mads: 'application/mads+xml',
98
- webmanifest: 'application/manifest+json',
99
- mrc: 'application/marc',
100
- mrcx: 'application/marcxml+xml',
101
- ma: 'application/mathematica',
102
- nb: 'application/mathematica',
103
- mb: 'application/mathematica',
104
- mathml: 'application/mathml+xml',
105
- mbox: 'application/mbox',
106
- mpf: 'application/media-policy-dataset+xml',
107
- mscml: 'application/mediaservercontrol+xml',
108
- metalink: 'application/metalink+xml',
109
- meta4: 'application/metalink4+xml',
110
- mets: 'application/mets+xml',
111
- maei: 'application/mmt-aei+xml',
112
- musd: 'application/mmt-usd+xml',
113
- mods: 'application/mods+xml',
114
- m21: 'application/mp21',
115
- mp21: 'application/mp21',
116
- mp4s: 'application/mp4',
117
- m4p: 'application/mp4',
118
- doc: 'application/msword',
119
- dot: 'application/msword',
120
- mxf: 'application/mxf',
121
- nq: 'application/n-quads',
122
- nt: 'application/n-triples',
123
- cjs: 'application/node',
124
- bin: 'application/octet-stream',
125
- dms: 'application/octet-stream',
126
- lrf: 'application/octet-stream',
127
- mar: 'application/octet-stream',
128
- so: 'application/octet-stream',
129
- dist: 'application/octet-stream',
130
- distz: 'application/octet-stream',
131
- pkg: 'application/octet-stream',
132
- bpk: 'application/octet-stream',
133
- dump: 'application/octet-stream',
134
- elc: 'application/octet-stream',
135
- deploy: 'application/octet-stream',
136
- exe: 'application/x-msdownload',
137
- dll: 'application/x-msdownload',
138
- deb: 'application/x-debian-package',
139
- dmg: 'application/x-apple-diskimage',
140
- iso: 'application/x-iso9660-image',
141
- img: 'application/octet-stream',
142
- msi: 'application/x-msdownload',
143
- msp: 'application/octet-stream',
144
- msm: 'application/octet-stream',
145
- buffer: 'application/octet-stream',
146
- oda: 'application/oda',
147
- opf: 'application/oebps-package+xml',
148
- ogx: 'application/ogg',
149
- omdoc: 'application/omdoc+xml',
150
- onetoc: 'application/onenote',
151
- onetoc2: 'application/onenote',
152
- onetmp: 'application/onenote',
153
- onepkg: 'application/onenote',
154
- oxps: 'application/oxps',
155
- relo: 'application/p2p-overlay+xml',
156
- xer: 'application/patch-ops-error+xml',
157
- pdf: 'application/pdf',
158
- pgp: 'application/pgp-encrypted',
159
- asc: 'application/pgp-signature',
160
- sig: 'application/pgp-signature',
161
- prf: 'application/pics-rules',
162
- p10: 'application/pkcs10',
163
- p7m: 'application/pkcs7-mime',
164
- p7c: 'application/pkcs7-mime',
165
- p7s: 'application/pkcs7-signature',
166
- p8: 'application/pkcs8',
167
- ac: 'application/vnd.nokia.n-gage.ac+xml',
168
- cer: 'application/pkix-cert',
169
- crl: 'application/pkix-crl',
170
- pkipath: 'application/pkix-pkipath',
171
- pki: 'application/pkixcmp',
172
- pls: 'application/pls+xml',
173
- ai: 'application/postscript',
174
- eps: 'application/postscript',
175
- ps: 'application/postscript',
176
- provx: 'application/provenance+xml',
177
- cww: 'application/prs.cww',
178
- pskcxml: 'application/pskc+xml',
179
- raml: 'application/raml+yaml',
180
- rdf: 'application/rdf+xml',
181
- owl: 'application/rdf+xml',
182
- rif: 'application/reginfo+xml',
183
- rnc: 'application/relax-ng-compact-syntax',
184
- rl: 'application/resource-lists+xml',
185
- rld: 'application/resource-lists-diff+xml',
186
- rs: 'application/rls-services+xml',
187
- rapd: 'application/route-apd+xml',
188
- sls: 'application/route-s-tsid+xml',
189
- rusd: 'application/route-usd+xml',
190
- gbr: 'application/rpki-ghostbusters',
191
- mft: 'application/rpki-manifest',
192
- roa: 'application/rpki-roa',
193
- rsd: 'application/rsd+xml',
194
- rss: 'application/rss+xml',
195
- rtf: 'text/rtf',
196
- sbml: 'application/sbml+xml',
197
- scq: 'application/scvp-cv-request',
198
- scs: 'application/scvp-cv-response',
199
- spq: 'application/scvp-vp-request',
200
- spp: 'application/scvp-vp-response',
201
- sdp: 'application/sdp',
202
- senmlx: 'application/senml+xml',
203
- sensmlx: 'application/sensml+xml',
204
- setpay: 'application/set-payment-initiation',
205
- setreg: 'application/set-registration-initiation',
206
- shf: 'application/shf+xml',
207
- siv: 'application/sieve',
208
- sieve: 'application/sieve',
209
- smi: 'application/smil+xml',
210
- smil: 'application/smil+xml',
211
- rq: 'application/sparql-query',
212
- srx: 'application/sparql-results+xml',
213
- gram: 'application/srgs',
214
- grxml: 'application/srgs+xml',
215
- sru: 'application/sru+xml',
216
- ssdl: 'application/ssdl+xml',
217
- ssml: 'application/ssml+xml',
218
- swidtag: 'application/swid+xml',
219
- tei: 'application/tei+xml',
220
- teicorpus: 'application/tei+xml',
221
- tfi: 'application/thraud+xml',
222
- tsd: 'application/timestamped-data',
223
- toml: 'application/toml',
224
- trig: 'application/trig',
225
- ttml: 'application/ttml+xml',
226
- ubj: 'application/ubjson',
227
- rsheet: 'application/urc-ressheet+xml',
228
- td: 'application/urc-targetdesc+xml',
229
- '1km': 'application/vnd.1000minds.decision-model+xml',
230
- plb: 'application/vnd.3gpp.pic-bw-large',
231
- psb: 'application/vnd.3gpp.pic-bw-small',
232
- pvb: 'application/vnd.3gpp.pic-bw-var',
233
- tcap: 'application/vnd.3gpp2.tcap',
234
- pwn: 'application/vnd.3m.post-it-notes',
235
- aso: 'application/vnd.accpac.simply.aso',
236
- imp: 'application/vnd.accpac.simply.imp',
237
- acu: 'application/vnd.acucobol',
238
- atc: 'application/vnd.acucorp',
239
- acutc: 'application/vnd.acucorp',
240
- air: 'application/vnd.adobe.air-application-installer-package+zip',
241
- fcdt: 'application/vnd.adobe.formscentral.fcdt',
242
- fxp: 'application/vnd.adobe.fxp',
243
- fxpl: 'application/vnd.adobe.fxp',
244
- xdp: 'application/vnd.adobe.xdp+xml',
245
- xfdf: 'application/xfdf',
246
- age: 'application/vnd.age',
247
- ahead: 'application/vnd.ahead.space',
248
- azf: 'application/vnd.airzip.filesecure.azf',
249
- azs: 'application/vnd.airzip.filesecure.azs',
250
- azw: 'application/vnd.amazon.ebook',
251
- acc: 'application/vnd.americandynamics.acc',
252
- ami: 'application/vnd.amiga.ami',
253
- apk: 'application/vnd.android.package-archive',
254
- cii: 'application/vnd.anser-web-certificate-issue-initiation',
255
- fti: 'application/vnd.anser-web-funds-transfer-initiation',
256
- atx: 'application/vnd.antix.game-component',
257
- mpkg: 'application/vnd.apple.installer+xml',
258
- key: 'application/x-iwork-keynote-sffkey',
259
- m3u8: 'application/vnd.apple.mpegurl',
260
- numbers: 'application/x-iwork-numbers-sffnumbers',
261
- pages: 'application/x-iwork-pages-sffpages',
262
- pkpass: 'application/vnd.apple.pkpass',
263
- swi: 'application/vnd.aristanetworks.swi',
264
- iota: 'application/vnd.astraea-software.iota',
265
- aep: 'application/vnd.audiograph',
266
- bmml: 'application/vnd.balsamiq.bmml+xml',
267
- mpm: 'application/vnd.blueice.multipass',
268
- bmi: 'application/vnd.bmi',
269
- rep: 'application/vnd.businessobjects',
270
- cdxml: 'application/vnd.chemdraw+xml',
271
- mmd: 'application/vnd.chipnuts.karaoke-mmd',
272
- cdy: 'application/vnd.cinderella',
273
- csl: 'application/vnd.citationstyles.style+xml',
274
- cla: 'application/vnd.claymore',
275
- rp9: 'application/vnd.cloanto.rp9',
276
- c4g: 'application/vnd.clonk.c4group',
277
- c4d: 'application/vnd.clonk.c4group',
278
- c4f: 'application/vnd.clonk.c4group',
279
- c4p: 'application/vnd.clonk.c4group',
280
- c4u: 'application/vnd.clonk.c4group',
281
- c11amc: 'application/vnd.cluetrust.cartomobile-config',
282
- c11amz: 'application/vnd.cluetrust.cartomobile-config-pkg',
283
- csp: 'application/vnd.commonspace',
284
- cdbcmsg: 'application/vnd.contact.cmsg',
285
- cmc: 'application/vnd.cosmocaller',
286
- clkx: 'application/vnd.crick.clicker',
287
- clkk: 'application/vnd.crick.clicker.keyboard',
288
- clkp: 'application/vnd.crick.clicker.palette',
289
- clkt: 'application/vnd.crick.clicker.template',
290
- clkw: 'application/vnd.crick.clicker.wordbank',
291
- wbs: 'application/vnd.criticaltools.wbs+xml',
292
- pml: 'application/vnd.ctc-posml',
293
- ppd: 'application/vnd.cups-ppd',
294
- car: 'application/vnd.curl.car',
295
- pcurl: 'application/vnd.curl.pcurl',
296
- dart: 'application/vnd.dart',
297
- rdz: 'application/vnd.data-vision.rdz',
298
- dbf: 'application/vnd.dbf',
299
- uvf: 'application/vnd.dece.data',
300
- uvvf: 'application/vnd.dece.data',
301
- uvd: 'application/vnd.dece.data',
302
- uvvd: 'application/vnd.dece.data',
303
- uvt: 'application/vnd.dece.ttml+xml',
304
- uvvt: 'application/vnd.dece.ttml+xml',
305
- uvx: 'application/vnd.dece.unspecified',
306
- uvvx: 'application/vnd.dece.unspecified',
307
- uvz: 'application/vnd.dece.zip',
308
- uvvz: 'application/vnd.dece.zip',
309
- fe_launch: 'application/vnd.denovo.fcselayout-link',
310
- dna: 'application/vnd.dna',
311
- mlp: 'application/vnd.dolby.mlp',
312
- dpg: 'application/vnd.dpgraph',
313
- dfac: 'application/vnd.dreamfactory',
314
- kpxx: 'application/vnd.ds-keypoint',
315
- ait: 'application/vnd.dvb.ait',
316
- svc: 'application/vnd.dvb.service',
317
- geo: 'application/vnd.dynageo',
318
- mag: 'application/vnd.ecowin.chart',
319
- nml: 'application/vnd.enliven',
320
- esf: 'application/vnd.epson.esf',
321
- msf: 'application/vnd.epson.msf',
322
- qam: 'application/vnd.epson.quickanime',
323
- slt: 'application/vnd.epson.salt',
324
- ssf: 'application/vnd.epson.ssf',
325
- es3: 'application/vnd.eszigno3+xml',
326
- et3: 'application/vnd.eszigno3+xml',
327
- ez2: 'application/vnd.ezpix-album',
328
- ez3: 'application/vnd.ezpix-package',
329
- mseed: 'application/vnd.fdsn.mseed',
330
- seed: 'application/vnd.fdsn.seed',
331
- dataless: 'application/vnd.fdsn.seed',
332
- gph: 'application/vnd.flographit',
333
- ftc: 'application/vnd.fluxtime.clip',
334
- fm: 'application/vnd.framemaker',
335
- frame: 'application/vnd.framemaker',
336
- maker: 'application/vnd.framemaker',
337
- book: 'application/vnd.framemaker',
338
- fnc: 'application/vnd.frogans.fnc',
339
- ltf: 'application/vnd.frogans.ltf',
340
- fsc: 'application/vnd.fsc.weblaunch',
341
- oas: 'application/vnd.fujitsu.oasys',
342
- oa2: 'application/vnd.fujitsu.oasys2',
343
- oa3: 'application/vnd.fujitsu.oasys3',
344
- fg5: 'application/vnd.fujitsu.oasysgp',
345
- bh2: 'application/vnd.fujitsu.oasysprs',
346
- ddd: 'application/vnd.fujixerox.ddd',
347
- xdw: 'application/vnd.fujixerox.docuworks',
348
- xbd: 'application/vnd.fujixerox.docuworks.binder',
349
- fzs: 'application/vnd.fuzzysheet',
350
- txd: 'application/vnd.genomatix.tuxedo',
351
- ggb: 'application/vnd.geogebra.file',
352
- ggt: 'application/vnd.geogebra.tool',
353
- gex: 'application/vnd.geometry-explorer',
354
- gre: 'application/vnd.geometry-explorer',
355
- gxt: 'application/vnd.geonext',
356
- g2w: 'application/vnd.geoplan',
357
- g3w: 'application/vnd.geospace',
358
- gmx: 'application/vnd.gmx',
359
- gdoc: 'application/vnd.google-apps.document',
360
- gslides: 'application/vnd.google-apps.presentation',
361
- gsheet: 'application/vnd.google-apps.spreadsheet',
362
- kml: 'application/vnd.google-earth.kml+xml',
363
- kmz: 'application/vnd.google-earth.kmz',
364
- gqf: 'application/vnd.grafeq',
365
- gqs: 'application/vnd.grafeq',
366
- gac: 'application/vnd.groove-account',
367
- ghf: 'application/vnd.groove-help',
368
- gim: 'application/vnd.groove-identity-message',
369
- grv: 'application/vnd.groove-injector',
370
- gtm: 'application/vnd.groove-tool-message',
371
- tpl: 'application/vnd.groove-tool-template',
372
- vcg: 'application/vnd.groove-vcard',
373
- hal: 'application/vnd.hal+xml',
374
- zmm: 'application/vnd.handheld-entertainment+xml',
375
- hbci: 'application/vnd.hbci',
376
- les: 'application/vnd.hhe.lesson-player',
377
- hpgl: 'application/vnd.hp-hpgl',
378
- hpid: 'application/vnd.hp-hpid',
379
- hps: 'application/vnd.hp-hps',
380
- jlt: 'application/vnd.hp-jlyt',
381
- pcl: 'application/vnd.hp-pcl',
382
- pclxl: 'application/vnd.hp-pclxl',
383
- 'sfd-hdstx': 'application/vnd.hydrostatix.sof-data',
384
- mpy: 'application/vnd.ibm.minipay',
385
- afp: 'application/vnd.ibm.modcap',
386
- listafp: 'application/vnd.ibm.modcap',
387
- list3820: 'application/vnd.ibm.modcap',
388
- irm: 'application/vnd.ibm.rights-management',
389
- sc: 'application/vnd.ibm.secure-container',
390
- icc: 'application/vnd.iccprofile',
391
- icm: 'application/vnd.iccprofile',
392
- igl: 'application/vnd.igloader',
393
- ivp: 'application/vnd.immervision-ivp',
394
- ivu: 'application/vnd.immervision-ivu',
395
- igm: 'application/vnd.insors.igm',
396
- xpw: 'application/vnd.intercon.formnet',
397
- xpx: 'application/vnd.intercon.formnet',
398
- i2g: 'application/vnd.intergeo',
399
- qbo: 'application/vnd.intu.qbo',
400
- qfx: 'application/vnd.intu.qfx',
401
- rcprofile: 'application/vnd.ipunplugged.rcprofile',
402
- irp: 'application/vnd.irepository.package+xml',
403
- xpr: 'application/vnd.is-xpr',
404
- fcs: 'application/vnd.isac.fcs',
405
- jam: 'application/vnd.jam',
406
- rms: 'application/vnd.jcp.javame.midlet-rms',
407
- jisp: 'application/vnd.jisp',
408
- joda: 'application/vnd.joost.joda-archive',
409
- ktz: 'application/vnd.kahootz',
410
- ktr: 'application/vnd.kahootz',
411
- karbon: 'application/vnd.kde.karbon',
412
- chrt: 'application/vnd.kde.kchart',
413
- kfo: 'application/vnd.kde.kformula',
414
- flw: 'application/vnd.kde.kivio',
415
- kon: 'application/vnd.kde.kontour',
416
- kpr: 'application/vnd.kde.kpresenter',
417
- kpt: 'application/vnd.kde.kpresenter',
418
- ksp: 'application/vnd.kde.kspread',
419
- kwd: 'application/vnd.kde.kword',
420
- kwt: 'application/vnd.kde.kword',
421
- htke: 'application/vnd.kenameaapp',
422
- kia: 'application/vnd.kidspiration',
423
- kne: 'application/vnd.kinar',
424
- knp: 'application/vnd.kinar',
425
- skp: 'application/vnd.koan',
426
- skd: 'application/vnd.koan',
427
- skt: 'application/vnd.koan',
428
- skm: 'application/vnd.koan',
429
- sse: 'application/vnd.kodak-descriptor',
430
- lasxml: 'application/vnd.las.las+xml',
431
- lbd: 'application/vnd.llamagraphics.life-balance.desktop',
432
- lbe: 'application/vnd.llamagraphics.life-balance.exchange+xml',
433
- apr: 'application/vnd.lotus-approach',
434
- pre: 'application/vnd.lotus-freelance',
435
- nsf: 'application/vnd.lotus-notes',
436
- org: 'text/x-org',
437
- scm: 'application/vnd.lotus-screencam',
438
- lwp: 'application/vnd.lotus-wordpro',
439
- portpkg: 'application/vnd.macports.portpkg',
440
- mvt: 'application/vnd.mapbox-vector-tile',
441
- mcd: 'application/vnd.mcd',
442
- mc1: 'application/vnd.medcalcdata',
443
- cdkey: 'application/vnd.mediastation.cdkey',
444
- mwf: 'application/vnd.mfer',
445
- mfm: 'application/vnd.mfmp',
446
- flo: 'application/vnd.micrografx.flo',
447
- igx: 'application/vnd.micrografx.igx',
448
- mif: 'application/vnd.mif',
449
- daf: 'application/vnd.mobius.daf',
450
- dis: 'application/vnd.mobius.dis',
451
- mbk: 'application/vnd.mobius.mbk',
452
- mqy: 'application/vnd.mobius.mqy',
453
- msl: 'application/vnd.mobius.msl',
454
- plc: 'application/vnd.mobius.plc',
455
- txf: 'application/vnd.mobius.txf',
456
- mpn: 'application/vnd.mophun.application',
457
- mpc: 'application/vnd.mophun.certificate',
458
- xul: 'application/vnd.mozilla.xul+xml',
459
- cil: 'application/vnd.ms-artgalry',
460
- cab: 'application/vnd.ms-cab-compressed',
461
- xls: 'application/vnd.ms-excel',
462
- xlm: 'application/vnd.ms-excel',
463
- xla: 'application/vnd.ms-excel',
464
- xlc: 'application/vnd.ms-excel',
465
- xlt: 'application/vnd.ms-excel',
466
- xlw: 'application/vnd.ms-excel',
467
- xlam: 'application/vnd.ms-excel.addin.macroenabled.12',
468
- xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
469
- xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',
470
- xltm: 'application/vnd.ms-excel.template.macroenabled.12',
471
- eot: 'application/vnd.ms-fontobject',
472
- chm: 'application/vnd.ms-htmlhelp',
473
- ims: 'application/vnd.ms-ims',
474
- lrm: 'application/vnd.ms-lrm',
475
- thmx: 'application/vnd.ms-officetheme',
476
- msg: 'application/vnd.ms-outlook',
477
- cat: 'application/vnd.ms-pki.seccat',
478
- stl: 'model/stl',
479
- ppt: 'application/vnd.ms-powerpoint',
480
- pps: 'application/vnd.ms-powerpoint',
481
- pot: 'application/vnd.ms-powerpoint',
482
- ppam: 'application/vnd.ms-powerpoint.addin.macroenabled.12',
483
- pptm: 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
484
- sldm: 'application/vnd.ms-powerpoint.slide.macroenabled.12',
485
- ppsm: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
486
- potm: 'application/vnd.ms-powerpoint.template.macroenabled.12',
487
- mpt: 'application/vnd.ms-project',
488
- docm: 'application/vnd.ms-word.document.macroenabled.12',
489
- dotm: 'application/vnd.ms-word.template.macroenabled.12',
490
- wps: 'application/vnd.ms-works',
491
- wks: 'application/vnd.ms-works',
492
- wcm: 'application/vnd.ms-works',
493
- wdb: 'application/vnd.ms-works',
494
- wpl: 'application/vnd.ms-wpl',
495
- xps: 'application/vnd.ms-xpsdocument',
496
- mseq: 'application/vnd.mseq',
497
- mus: 'application/vnd.musician',
498
- msty: 'application/vnd.muvee.style',
499
- taglet: 'application/vnd.mynfc',
500
- nlu: 'application/vnd.neurolanguage.nlu',
501
- ntf: 'application/vnd.nitf',
502
- nitf: 'application/vnd.nitf',
503
- nnd: 'application/vnd.noblenet-directory',
504
- nns: 'application/vnd.noblenet-sealer',
505
- nnw: 'application/vnd.noblenet-web',
506
- ngdat: 'application/vnd.nokia.n-gage.data',
507
- 'n-gage': 'application/vnd.nokia.n-gage.symbian.install',
508
- rpst: 'application/vnd.nokia.radio-preset',
509
- rpss: 'application/vnd.nokia.radio-presets',
510
- edm: 'application/vnd.novadigm.edm',
511
- edx: 'application/vnd.novadigm.edx',
512
- ext: 'application/vnd.novadigm.ext',
513
- odc: 'application/vnd.oasis.opendocument.chart',
514
- otc: 'application/vnd.oasis.opendocument.chart-template',
515
- odb: 'application/vnd.oasis.opendocument.database',
516
- odf: 'application/vnd.oasis.opendocument.formula',
517
- odft: 'application/vnd.oasis.opendocument.formula-template',
518
- odg: 'application/vnd.oasis.opendocument.graphics',
519
- otg: 'application/vnd.oasis.opendocument.graphics-template',
520
- odi: 'application/vnd.oasis.opendocument.image',
521
- oti: 'application/vnd.oasis.opendocument.image-template',
522
- odp: 'application/vnd.oasis.opendocument.presentation',
523
- otp: 'application/vnd.oasis.opendocument.presentation-template',
524
- ods: 'application/vnd.oasis.opendocument.spreadsheet',
525
- ots: 'application/vnd.oasis.opendocument.spreadsheet-template',
526
- odt: 'application/vnd.oasis.opendocument.text',
527
- odm: 'application/vnd.oasis.opendocument.text-master',
528
- ott: 'application/vnd.oasis.opendocument.text-template',
529
- oth: 'application/vnd.oasis.opendocument.text-web',
530
- xo: 'application/vnd.olpc-sugar',
531
- dd2: 'application/vnd.oma.dd2+xml',
532
- obgx: 'application/vnd.openblox.game+xml',
533
- oxt: 'application/vnd.openofficeorg.extension',
534
- osm: 'application/vnd.openstreetmap.data+xml',
535
- pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
536
- sldx: 'application/vnd.openxmlformats-officedocument.presentationml.slide',
537
- ppsx: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
538
- potx: 'application/vnd.openxmlformats-officedocument.presentationml.template',
539
- xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
540
- xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
541
- docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
542
- dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
543
- mgp: 'application/vnd.osgeo.mapguide.package',
544
- dp: 'application/vnd.osgi.dp',
545
- esa: 'application/vnd.osgi.subsystem',
546
- pdb: 'application/x-pilot',
547
- pqa: 'application/vnd.palm',
548
- oprc: 'application/vnd.palm',
549
- paw: 'application/vnd.pawaafile',
550
- str: 'application/vnd.pg.format',
551
- ei6: 'application/vnd.pg.osasli',
552
- efif: 'application/vnd.picsel',
553
- wg: 'application/vnd.pmi.widget',
554
- plf: 'application/vnd.pocketlearn',
555
- pbd: 'application/vnd.powerbuilder6',
556
- box: 'application/vnd.previewsystems.box',
557
- mgz: 'application/vnd.proteus.magazine',
558
- qps: 'application/vnd.publishare-delta-tree',
559
- ptid: 'application/vnd.pvi.ptid1',
560
- qxd: 'application/vnd.quark.quarkxpress',
561
- qxt: 'application/vnd.quark.quarkxpress',
562
- qwd: 'application/vnd.quark.quarkxpress',
563
- qwt: 'application/vnd.quark.quarkxpress',
564
- qxl: 'application/vnd.quark.quarkxpress',
565
- qxb: 'application/vnd.quark.quarkxpress',
566
- rar: 'application/x-rar-compressed',
567
- bed: 'application/vnd.realvnc.bed',
568
- mxl: 'application/vnd.recordare.musicxml',
569
- musicxml: 'application/vnd.recordare.musicxml+xml',
570
- cryptonote: 'application/vnd.rig.cryptonote',
571
- cod: 'application/vnd.rim.cod',
572
- rm: 'application/vnd.rn-realmedia',
573
- rmvb: 'application/vnd.rn-realmedia-vbr',
574
- link66: 'application/vnd.route66.link66+xml',
575
- st: 'application/vnd.sailingtracker.track',
576
- see: 'application/vnd.seemail',
577
- sema: 'application/vnd.sema',
578
- semd: 'application/vnd.semd',
579
- semf: 'application/vnd.semf',
580
- ifm: 'application/vnd.shana.informed.formdata',
581
- itp: 'application/vnd.shana.informed.formtemplate',
582
- iif: 'application/vnd.shana.informed.interchange',
583
- ipk: 'application/vnd.shana.informed.package',
584
- twd: 'application/vnd.simtech-mindmapper',
585
- twds: 'application/vnd.simtech-mindmapper',
586
- mmf: 'application/vnd.smaf',
587
- teacher: 'application/vnd.smart.teacher',
588
- fo: 'application/vnd.software602.filler.form+xml',
589
- sdkm: 'application/vnd.solent.sdkm+xml',
590
- sdkd: 'application/vnd.solent.sdkm+xml',
591
- dxp: 'application/vnd.spotfire.dxp',
592
- sfs: 'application/vnd.spotfire.sfs',
593
- sdc: 'application/vnd.stardivision.calc',
594
- sda: 'application/vnd.stardivision.draw',
595
- sdd: 'application/vnd.stardivision.impress',
596
- smf: 'application/vnd.stardivision.math',
597
- sdw: 'application/vnd.stardivision.writer',
598
- vor: 'application/vnd.stardivision.writer',
599
- sgl: 'application/vnd.stardivision.writer-global',
600
- smzip: 'application/vnd.stepmania.package',
601
- sm: 'application/vnd.stepmania.stepchart',
602
- wadl: 'application/vnd.sun.wadl+xml',
603
- sxc: 'application/vnd.sun.xml.calc',
604
- stc: 'application/vnd.sun.xml.calc.template',
605
- sxd: 'application/vnd.sun.xml.draw',
606
- std: 'application/vnd.sun.xml.draw.template',
607
- sxi: 'application/vnd.sun.xml.impress',
608
- sti: 'application/vnd.sun.xml.impress.template',
609
- sxm: 'application/vnd.sun.xml.math',
610
- sxw: 'application/vnd.sun.xml.writer',
611
- sxg: 'application/vnd.sun.xml.writer.global',
612
- stw: 'application/vnd.sun.xml.writer.template',
613
- sus: 'application/vnd.sus-calendar',
614
- susp: 'application/vnd.sus-calendar',
615
- svd: 'application/vnd.svd',
616
- sis: 'application/vnd.symbian.install',
617
- sisx: 'application/vnd.symbian.install',
618
- xsm: 'application/vnd.syncml+xml',
619
- bdm: 'application/vnd.syncml.dm+wbxml',
620
- xdm: 'application/vnd.syncml.dm+xml',
621
- ddf: 'application/vnd.syncml.dmddf+xml',
622
- tao: 'application/vnd.tao.intent-module-archive',
623
- pcap: 'application/vnd.tcpdump.pcap',
624
- cap: 'application/vnd.tcpdump.pcap',
625
- dmp: 'application/vnd.tcpdump.pcap',
626
- tmo: 'application/vnd.tmobile-livetv',
627
- tpt: 'application/vnd.trid.tpt',
628
- mxs: 'application/vnd.triscape.mxs',
629
- tra: 'application/vnd.trueapp',
630
- ufd: 'application/vnd.ufdl',
631
- ufdl: 'application/vnd.ufdl',
632
- utz: 'application/vnd.uiq.theme',
633
- umj: 'application/vnd.umajin',
634
- unityweb: 'application/vnd.unity',
635
- uoml: 'application/vnd.uoml+xml',
636
- vcx: 'application/vnd.vcx',
637
- vsd: 'application/vnd.visio',
638
- vst: 'application/vnd.visio',
639
- vss: 'application/vnd.visio',
640
- vsw: 'application/vnd.visio',
641
- vis: 'application/vnd.visionary',
642
- vsf: 'application/vnd.vsf',
643
- wbxml: 'application/vnd.wap.wbxml',
644
- wmlc: 'application/vnd.wap.wmlc',
645
- wmlsc: 'application/vnd.wap.wmlscriptc',
646
- wtb: 'application/vnd.webturbo',
647
- nbp: 'application/vnd.wolfram.player',
648
- wpd: 'application/vnd.wordperfect',
649
- wqd: 'application/vnd.wqd',
650
- stf: 'application/vnd.wt.stf',
651
- xar: 'application/vnd.xara',
652
- xfdl: 'application/vnd.xfdl',
653
- hvd: 'application/vnd.yamaha.hv-dic',
654
- hvs: 'application/vnd.yamaha.hv-script',
655
- hvp: 'application/vnd.yamaha.hv-voice',
656
- osf: 'application/vnd.yamaha.openscoreformat',
657
- osfpvg: 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
658
- saf: 'application/vnd.yamaha.smaf-audio',
659
- spf: 'application/vnd.yamaha.smaf-phrase',
660
- cmp: 'application/vnd.yellowriver-custom-menu',
661
- zir: 'application/vnd.zul',
662
- zirz: 'application/vnd.zul',
663
- zaz: 'application/vnd.zzazz.deck+xml',
664
- vxml: 'application/voicexml+xml',
665
- wasm: 'application/wasm',
666
- wif: 'application/watcherinfo+xml',
667
- wgt: 'application/widget',
668
- hlp: 'application/winhlp',
669
- wsdl: 'application/wsdl+xml',
670
- wspolicy: 'application/wspolicy+xml',
671
- '7z': 'application/x-7z-compressed',
672
- abw: 'application/x-abiword',
673
- ace: 'application/x-ace-compressed',
674
- arj: 'application/x-arj',
675
- aab: 'application/x-authorware-bin',
676
- x32: 'application/x-authorware-bin',
677
- u32: 'application/x-authorware-bin',
678
- vox: 'application/x-authorware-bin',
679
- aam: 'application/x-authorware-map',
680
- aas: 'application/x-authorware-seg',
681
- bcpio: 'application/x-bcpio',
682
- torrent: 'application/x-bittorrent',
683
- blb: 'application/x-blorb',
684
- blorb: 'application/x-blorb',
685
- bz: 'application/x-bzip',
686
- bz2: 'application/x-bzip2',
687
- boz: 'application/x-bzip2',
688
- cbr: 'application/x-cbr',
689
- cba: 'application/x-cbr',
690
- cbt: 'application/x-cbr',
691
- cbz: 'application/x-cbr',
692
- cb7: 'application/x-cbr',
693
- vcd: 'application/x-cdlink',
694
- cfs: 'application/x-cfs-compressed',
695
- chat: 'application/x-chat',
696
- pgn: 'application/x-chess-pgn',
697
- crx: 'application/x-chrome-extension',
698
- cco: 'application/x-cocoa',
699
- nsc: 'application/x-conference',
700
- cpio: 'application/x-cpio',
701
- csh: 'application/x-csh',
702
- udeb: 'application/x-debian-package',
703
- dgc: 'application/x-dgc-compressed',
704
- dir: 'application/x-director',
705
- dcr: 'application/x-director',
706
- dxr: 'application/x-director',
707
- cst: 'application/x-director',
708
- cct: 'application/x-director',
709
- cxt: 'application/x-director',
710
- w3d: 'application/x-director',
711
- fgd: 'application/x-director',
712
- swa: 'application/x-director',
713
- wad: 'application/x-doom',
714
- ncx: 'application/x-dtbncx+xml',
715
- dtb: 'application/x-dtbook+xml',
716
- res: 'application/x-dtbresource+xml',
717
- dvi: 'application/x-dvi',
718
- evy: 'application/x-envoy',
719
- eva: 'application/x-eva',
720
- bdf: 'application/x-font-bdf',
721
- gsf: 'application/x-font-ghostscript',
722
- psf: 'application/x-font-linux-psf',
723
- pcf: 'application/x-font-pcf',
724
- snf: 'application/x-font-snf',
725
- pfa: 'application/x-font-type1',
726
- pfb: 'application/x-font-type1',
727
- pfm: 'application/x-font-type1',
728
- afm: 'application/x-font-type1',
729
- arc: 'application/x-freearc',
730
- spl: 'application/x-futuresplash',
731
- gca: 'application/x-gca-compressed',
732
- ulx: 'application/x-glulx',
733
- gnumeric: 'application/x-gnumeric',
734
- gramps: 'application/x-gramps-xml',
735
- gtar: 'application/x-gtar',
736
- hdf: 'application/x-hdf',
737
- php: 'application/x-httpd-php',
738
- install: 'application/x-install-instructions',
739
- jardiff: 'application/x-java-archive-diff',
740
- jnlp: 'application/x-java-jnlp-file',
741
- kdbx: 'application/x-keepass2',
742
- latex: 'application/x-latex',
743
- luac: 'application/x-lua-bytecode',
744
- lzh: 'application/x-lzh-compressed',
745
- lha: 'application/x-lzh-compressed',
746
- run: 'application/x-makeself',
747
- mie: 'application/x-mie',
748
- prc: 'model/prc',
749
- mobi: 'application/x-mobipocket-ebook',
750
- application: 'application/x-ms-application',
751
- lnk: 'application/x-ms-shortcut',
752
- wmd: 'application/x-ms-wmd',
753
- wmz: 'application/x-msmetafile',
754
- xbap: 'application/x-ms-xbap',
755
- mdb: 'application/x-msaccess',
756
- obd: 'application/x-msbinder',
757
- crd: 'application/x-mscardfile',
758
- clp: 'application/x-msclip',
759
- com: 'application/x-msdownload',
760
- bat: 'application/x-msdownload',
761
- mvb: 'application/x-msmediaview',
762
- m13: 'application/x-msmediaview',
763
- m14: 'application/x-msmediaview',
764
- wmf: 'image/wmf',
765
- emf: 'image/emf',
766
- emz: 'application/x-msmetafile',
767
- mny: 'application/x-msmoney',
768
- pub: 'application/x-mspublisher',
769
- scd: 'application/x-msschedule',
770
- trm: 'application/x-msterminal',
771
- wri: 'application/x-mswrite',
772
- nc: 'application/x-netcdf',
773
- cdf: 'application/x-netcdf',
774
- pac: 'application/x-ns-proxy-autoconfig',
775
- nzb: 'application/x-nzb',
776
- pl: 'application/x-perl',
777
- pm: 'application/x-perl',
778
- p12: 'application/x-pkcs12',
779
- pfx: 'application/x-pkcs12',
780
- p7b: 'application/x-pkcs7-certificates',
781
- spc: 'application/x-pkcs7-certificates',
782
- p7r: 'application/x-pkcs7-certreqresp',
783
- rpm: 'application/x-redhat-package-manager',
784
- ris: 'application/x-research-info-systems',
785
- sea: 'application/x-sea',
786
- sh: 'application/x-sh',
787
- shar: 'application/x-shar',
788
- swf: 'application/x-shockwave-flash',
789
- xap: 'application/x-silverlight-app',
790
- sql: 'application/x-sql',
791
- sit: 'application/x-stuffit',
792
- sitx: 'application/x-stuffitx',
793
- srt: 'application/x-subrip',
794
- sv4cpio: 'application/x-sv4cpio',
795
- sv4crc: 'application/x-sv4crc',
796
- t3: 'application/x-t3vm-image',
797
- gam: 'application/x-tads',
798
- tar: 'application/x-tar',
799
- tcl: 'application/x-tcl',
800
- tk: 'application/x-tcl',
801
- tex: 'application/x-tex',
802
- tfm: 'application/x-tex-tfm',
803
- texinfo: 'application/x-texinfo',
804
- texi: 'application/x-texinfo',
805
- obj: 'model/obj',
806
- ustar: 'application/x-ustar',
807
- hdd: 'application/x-virtualbox-hdd',
808
- ova: 'application/x-virtualbox-ova',
809
- ovf: 'application/x-virtualbox-ovf',
810
- vbox: 'application/x-virtualbox-vbox',
811
- 'vbox-extpack': 'application/x-virtualbox-vbox-extpack',
812
- vdi: 'application/x-virtualbox-vdi',
813
- vhd: 'application/x-virtualbox-vhd',
814
- vmdk: 'application/x-virtualbox-vmdk',
815
- src: 'application/x-wais-source',
816
- webapp: 'application/x-web-app-manifest+json',
817
- der: 'application/x-x509-ca-cert',
818
- crt: 'application/x-x509-ca-cert',
819
- pem: 'application/x-x509-ca-cert',
820
- fig: 'application/x-xfig',
821
- xlf: 'application/xliff+xml',
822
- xpi: 'application/x-xpinstall',
823
- xz: 'application/x-xz',
824
- z1: 'application/x-zmachine',
825
- z2: 'application/x-zmachine',
826
- z3: 'application/x-zmachine',
827
- z4: 'application/x-zmachine',
828
- z5: 'application/x-zmachine',
829
- z6: 'application/x-zmachine',
830
- z7: 'application/x-zmachine',
831
- z8: 'application/x-zmachine',
832
- xaml: 'application/xaml+xml',
833
- xav: 'application/xcap-att+xml',
834
- xca: 'application/xcap-caps+xml',
835
- xdf: 'application/xcap-diff+xml',
836
- xel: 'application/xcap-el+xml',
837
- xns: 'application/xcap-ns+xml',
838
- xenc: 'application/xenc+xml',
839
- xhtml: 'application/xhtml+xml',
840
- xht: 'application/xhtml+xml',
841
- xml: 'text/xml',
842
- xsl: 'application/xslt+xml',
843
- xsd: 'application/xml',
844
- rng: 'application/xml',
845
- dtd: 'application/xml-dtd',
846
- xop: 'application/xop+xml',
847
- xpl: 'application/xproc+xml',
848
- xslt: 'application/xslt+xml',
849
- xspf: 'application/xspf+xml',
850
- mxml: 'application/xv+xml',
851
- xhvml: 'application/xv+xml',
852
- xvml: 'application/xv+xml',
853
- xvm: 'application/xv+xml',
854
- yang: 'application/yang',
855
- yin: 'application/yin+xml',
856
- zip: 'application/zip',
857
- '3gpp': 'video/3gpp',
858
- adp: 'audio/adpcm',
859
- amr: 'audio/amr',
860
- au: 'audio/basic',
861
- snd: 'audio/basic',
862
- mid: 'audio/midi',
863
- midi: 'audio/midi',
864
- kar: 'audio/midi',
865
- rmi: 'audio/midi',
866
- mxmf: 'audio/mobile-xmf',
867
- mp3: 'audio/mpeg',
868
- m4a: 'audio/x-m4a',
869
- mp4a: 'audio/mp4',
870
- mpga: 'audio/mpeg',
871
- mp2: 'audio/mpeg',
872
- mp2a: 'audio/mpeg',
873
- m2a: 'audio/mpeg',
874
- m3a: 'audio/mpeg',
875
- oga: 'audio/ogg',
876
- ogg: 'audio/ogg',
877
- spx: 'audio/ogg',
878
- opus: 'audio/ogg',
879
- s3m: 'audio/s3m',
880
- sil: 'audio/silk',
881
- uva: 'audio/vnd.dece.audio',
882
- uvva: 'audio/vnd.dece.audio',
883
- eol: 'audio/vnd.digital-winds',
884
- dra: 'audio/vnd.dra',
885
- dts: 'audio/vnd.dts',
886
- dtshd: 'audio/vnd.dts.hd',
887
- lvp: 'audio/vnd.lucent.voice',
888
- pya: 'audio/vnd.ms-playready.media.pya',
889
- ecelp4800: 'audio/vnd.nuera.ecelp4800',
890
- ecelp7470: 'audio/vnd.nuera.ecelp7470',
891
- ecelp9600: 'audio/vnd.nuera.ecelp9600',
892
- rip: 'audio/vnd.rip',
893
- wav: 'audio/x-wav',
894
- weba: 'audio/webm',
895
- aac: 'audio/x-aac',
896
- aif: 'audio/x-aiff',
897
- aiff: 'audio/x-aiff',
898
- aifc: 'audio/x-aiff',
899
- caf: 'audio/x-caf',
900
- flac: 'audio/x-flac',
901
- mka: 'audio/x-matroska',
902
- m3u: 'audio/x-mpegurl',
903
- wax: 'audio/x-ms-wax',
904
- wma: 'audio/x-ms-wma',
905
- ram: 'audio/x-pn-realaudio',
906
- ra: 'audio/x-realaudio',
907
- rmp: 'audio/x-pn-realaudio-plugin',
908
- xm: 'audio/xm',
909
- cdx: 'chemical/x-cdx',
910
- cif: 'chemical/x-cif',
911
- cmdf: 'chemical/x-cmdf',
912
- cml: 'chemical/x-cml',
913
- csml: 'chemical/x-csml',
914
- xyz: 'chemical/x-xyz',
915
- ttc: 'font/collection',
916
- otf: 'font/otf',
917
- ttf: 'font/ttf',
918
- woff: 'font/woff',
919
- woff2: 'font/woff2',
920
- exr: 'image/aces',
921
- apng: 'image/apng',
922
- avci: 'image/avci',
923
- avcs: 'image/avcs',
924
- avif: 'image/avif',
925
- bmp: 'image/x-ms-bmp',
926
- cgm: 'image/cgm',
927
- drle: 'image/dicom-rle',
928
- fits: 'image/fits',
929
- g3: 'image/g3fax',
930
- gif: 'image/gif',
931
- heic: 'image/heic',
932
- heics: 'image/heic-sequence',
933
- heif: 'image/heif',
934
- heifs: 'image/heif-sequence',
935
- hej2: 'image/hej2k',
936
- hsj2: 'image/hsj2',
937
- ief: 'image/ief',
938
- jls: 'image/jls',
939
- jp2: 'image/jp2',
940
- jpg2: 'image/jp2',
941
- jpeg: 'image/jpeg',
942
- jpg: 'image/jpeg',
943
- jpe: 'image/jpeg',
944
- jph: 'image/jph',
945
- jhc: 'image/jphc',
946
- jpm: 'video/jpm',
947
- jpx: 'image/jpx',
948
- jpf: 'image/jpx',
949
- jxr: 'image/jxr',
950
- jxra: 'image/jxra',
951
- jxrs: 'image/jxrs',
952
- jxs: 'image/jxs',
953
- jxsc: 'image/jxsc',
954
- jxsi: 'image/jxsi',
955
- jxss: 'image/jxss',
956
- ktx: 'image/ktx',
957
- ktx2: 'image/ktx2',
958
- png: 'image/png',
959
- btif: 'image/prs.btif',
960
- pti: 'image/prs.pti',
961
- sgi: 'image/sgi',
962
- svg: 'image/svg+xml',
963
- svgz: 'image/svg+xml',
964
- t38: 'image/t38',
965
- tif: 'image/tiff',
966
- tiff: 'image/tiff',
967
- tfx: 'image/tiff-fx',
968
- psd: 'image/vnd.adobe.photoshop',
969
- azv: 'image/vnd.airzip.accelerator.azv',
970
- uvi: 'image/vnd.dece.graphic',
971
- uvvi: 'image/vnd.dece.graphic',
972
- uvg: 'image/vnd.dece.graphic',
973
- uvvg: 'image/vnd.dece.graphic',
974
- djvu: 'image/vnd.djvu',
975
- djv: 'image/vnd.djvu',
976
- sub: 'text/vnd.dvb.subtitle',
977
- dwg: 'image/vnd.dwg',
978
- dxf: 'image/vnd.dxf',
979
- fbs: 'image/vnd.fastbidsheet',
980
- fpx: 'image/vnd.fpx',
981
- fst: 'image/vnd.fst',
982
- mmr: 'image/vnd.fujixerox.edmics-mmr',
983
- rlc: 'image/vnd.fujixerox.edmics-rlc',
984
- ico: 'image/x-icon',
985
- dds: 'image/vnd.ms-dds',
986
- mdi: 'image/vnd.ms-modi',
987
- wdp: 'image/vnd.ms-photo',
988
- npx: 'image/vnd.net-fpx',
989
- b16: 'image/vnd.pco.b16',
990
- tap: 'image/vnd.tencent.tap',
991
- vtf: 'image/vnd.valve.source.texture',
992
- wbmp: 'image/vnd.wap.wbmp',
993
- xif: 'image/vnd.xiff',
994
- pcx: 'image/x-pcx',
995
- webp: 'image/webp',
996
- '3ds': 'image/x-3ds',
997
- ras: 'image/x-cmu-raster',
998
- cmx: 'image/x-cmx',
999
- fh: 'image/x-freehand',
1000
- fhc: 'image/x-freehand',
1001
- fh4: 'image/x-freehand',
1002
- fh5: 'image/x-freehand',
1003
- fh7: 'image/x-freehand',
1004
- jng: 'image/x-jng',
1005
- sid: 'image/x-mrsid-image',
1006
- pic: 'image/x-pict',
1007
- pct: 'image/x-pict',
1008
- pnm: 'image/x-portable-anymap',
1009
- pbm: 'image/x-portable-bitmap',
1010
- pgm: 'image/x-portable-graymap',
1011
- ppm: 'image/x-portable-pixmap',
1012
- rgb: 'image/x-rgb',
1013
- tga: 'image/x-tga',
1014
- xbm: 'image/x-xbitmap',
1015
- xpm: 'image/x-xpixmap',
1016
- xwd: 'image/x-xwindowdump',
1017
- 'disposition-notification': 'message/disposition-notification',
1018
- u8msg: 'message/global',
1019
- u8dsn: 'message/global-delivery-status',
1020
- u8mdn: 'message/global-disposition-notification',
1021
- u8hdr: 'message/global-headers',
1022
- eml: 'message/rfc822',
1023
- mime: 'message/rfc822',
1024
- wsc: 'message/vnd.wfa.wsc',
1025
- '3mf': 'model/3mf',
1026
- gltf: 'model/gltf+json',
1027
- glb: 'model/gltf-binary',
1028
- igs: 'model/iges',
1029
- iges: 'model/iges',
1030
- msh: 'model/mesh',
1031
- mesh: 'model/mesh',
1032
- silo: 'model/mesh',
1033
- mtl: 'model/mtl',
1034
- stpx: 'model/step+xml',
1035
- stpz: 'model/step+zip',
1036
- stpxz: 'model/step-xml+zip',
1037
- u3d: 'model/u3d',
1038
- dae: 'model/vnd.collada+xml',
1039
- dwf: 'model/vnd.dwf',
1040
- gdl: 'model/vnd.gdl',
1041
- gtw: 'model/vnd.gtw',
1042
- mts: 'model/vnd.mts',
1043
- ogex: 'model/vnd.opengex',
1044
- x_b: 'model/vnd.parasolid.transmit.binary',
1045
- x_t: 'model/vnd.parasolid.transmit.text',
1046
- vds: 'model/vnd.sap.vds',
1047
- usdz: 'model/vnd.usdz+zip',
1048
- bsp: 'model/vnd.valve.source.compiled-map',
1049
- vtu: 'model/vnd.vtu',
1050
- wrl: 'model/vrml',
1051
- vrml: 'model/vrml',
1052
- x3db: 'model/x3d+fastinfoset',
1053
- x3dbz: 'model/x3d+binary',
1054
- x3dv: 'model/x3d-vrml',
1055
- x3dvz: 'model/x3d+vrml',
1056
- x3d: 'model/x3d+xml',
1057
- x3dz: 'model/x3d+xml',
1058
- appcache: 'text/cache-manifest',
1059
- manifest: 'text/cache-manifest',
1060
- ics: 'text/calendar',
1061
- ifb: 'text/calendar',
1062
- coffee: 'text/coffeescript',
1063
- litcoffee: 'text/coffeescript',
1064
- css: 'text/css',
1065
- csv: 'text/csv',
1066
- html: 'text/html',
1067
- htm: 'text/html',
1068
- shtml: 'text/html',
1069
- jade: 'text/jade',
1070
- jsx: 'text/jsx',
1071
- less: 'text/less',
1072
- markdown: 'text/markdown',
1073
- md: 'text/markdown',
1074
- mml: 'text/mathml',
1075
- mdx: 'text/mdx',
1076
- n3: 'text/n3',
1077
- txt: 'text/plain',
1078
- text: 'text/plain',
1079
- conf: 'text/plain',
1080
- def: 'text/plain',
1081
- list: 'text/plain',
1082
- log: 'text/plain',
1083
- in: 'text/plain',
1084
- ini: 'text/plain',
1085
- dsc: 'text/prs.lines.tag',
1086
- rtx: 'text/richtext',
1087
- sgml: 'text/sgml',
1088
- sgm: 'text/sgml',
1089
- shex: 'text/shex',
1090
- slim: 'text/slim',
1091
- slm: 'text/slim',
1092
- spdx: 'text/spdx',
1093
- stylus: 'text/stylus',
1094
- styl: 'text/stylus',
1095
- tsv: 'text/tab-separated-values',
1096
- t: 'text/troff',
1097
- tr: 'text/troff',
1098
- roff: 'text/troff',
1099
- man: 'text/troff',
1100
- me: 'text/troff',
1101
- ms: 'text/troff',
1102
- ttl: 'text/turtle',
1103
- uri: 'text/uri-list',
1104
- uris: 'text/uri-list',
1105
- urls: 'text/uri-list',
1106
- vcard: 'text/vcard',
1107
- curl: 'text/vnd.curl',
1108
- dcurl: 'text/vnd.curl.dcurl',
1109
- mcurl: 'text/vnd.curl.mcurl',
1110
- scurl: 'text/vnd.curl.scurl',
1111
- ged: 'text/vnd.familysearch.gedcom',
1112
- fly: 'text/vnd.fly',
1113
- flx: 'text/vnd.fmi.flexstor',
1114
- gv: 'text/vnd.graphviz',
1115
- '3dml': 'text/vnd.in3d.3dml',
1116
- spot: 'text/vnd.in3d.spot',
1117
- jad: 'text/vnd.sun.j2me.app-descriptor',
1118
- wml: 'text/vnd.wap.wml',
1119
- wmls: 'text/vnd.wap.wmlscript',
1120
- vtt: 'text/vtt',
1121
- s: 'text/x-asm',
1122
- asm: 'text/x-asm',
1123
- c: 'text/x-c',
1124
- cc: 'text/x-c',
1125
- cxx: 'text/x-c',
1126
- cpp: 'text/x-c',
1127
- h: 'text/x-c',
1128
- hh: 'text/x-c',
1129
- dic: 'text/x-c',
1130
- htc: 'text/x-component',
1131
- f: 'text/x-fortran',
1132
- for: 'text/x-fortran',
1133
- f77: 'text/x-fortran',
1134
- f90: 'text/x-fortran',
1135
- hbs: 'text/x-handlebars-template',
1136
- java: 'text/x-java-source',
1137
- lua: 'text/x-lua',
1138
- mkd: 'text/x-markdown',
1139
- nfo: 'text/x-nfo',
1140
- opml: 'text/x-opml',
1141
- p: 'text/x-pascal',
1142
- pas: 'text/x-pascal',
1143
- pde: 'text/x-processing',
1144
- sass: 'text/x-sass',
1145
- scss: 'text/x-scss',
1146
- etx: 'text/x-setext',
1147
- sfv: 'text/x-sfv',
1148
- ymp: 'text/x-suse-ymp',
1149
- uu: 'text/x-uuencode',
1150
- vcs: 'text/x-vcalendar',
1151
- vcf: 'text/x-vcard',
1152
- yaml: 'text/yaml',
1153
- yml: 'text/yaml',
1154
- '3gp': 'video/3gpp',
1155
- '3g2': 'video/3gpp2',
1156
- h261: 'video/h261',
1157
- h263: 'video/h263',
1158
- h264: 'video/h264',
1159
- m4s: 'video/iso.segment',
1160
- jpgv: 'video/jpeg',
1161
- jpgm: 'video/jpm',
1162
- mj2: 'video/mj2',
1163
- mjp2: 'video/mj2',
1164
- ts: 'video/mp2t',
1165
- mp4: 'video/mp4',
1166
- mp4v: 'video/mp4',
1167
- mpg4: 'video/mp4',
1168
- mpeg: 'video/mpeg',
1169
- mpg: 'video/mpeg',
1170
- mpe: 'video/mpeg',
1171
- m1v: 'video/mpeg',
1172
- m2v: 'video/mpeg',
1173
- ogv: 'video/ogg',
1174
- qt: 'video/quicktime',
1175
- mov: 'video/quicktime',
1176
- uvh: 'video/vnd.dece.hd',
1177
- uvvh: 'video/vnd.dece.hd',
1178
- uvm: 'video/vnd.dece.mobile',
1179
- uvvm: 'video/vnd.dece.mobile',
1180
- uvp: 'video/vnd.dece.pd',
1181
- uvvp: 'video/vnd.dece.pd',
1182
- uvs: 'video/vnd.dece.sd',
1183
- uvvs: 'video/vnd.dece.sd',
1184
- uvv: 'video/vnd.dece.video',
1185
- uvvv: 'video/vnd.dece.video',
1186
- dvb: 'video/vnd.dvb.file',
1187
- fvt: 'video/vnd.fvt',
1188
- mxu: 'video/vnd.mpegurl',
1189
- m4u: 'video/vnd.mpegurl',
1190
- pyv: 'video/vnd.ms-playready.media.pyv',
1191
- uvu: 'video/vnd.uvvu.mp4',
1192
- uvvu: 'video/vnd.uvvu.mp4',
1193
- viv: 'video/vnd.vivo',
1194
- webm: 'video/webm',
1195
- f4v: 'video/x-f4v',
1196
- fli: 'video/x-fli',
1197
- flv: 'video/x-flv',
1198
- m4v: 'video/x-m4v',
1199
- mkv: 'video/x-matroska',
1200
- mk3d: 'video/x-matroska',
1201
- mks: 'video/x-matroska',
1202
- mng: 'video/x-mng',
1203
- asf: 'video/x-ms-asf',
1204
- asx: 'video/x-ms-asf',
1205
- vob: 'video/x-ms-vob',
1206
- wm: 'video/x-ms-wm',
1207
- wmv: 'video/x-ms-wmv',
1208
- wmx: 'video/x-ms-wmx',
1209
- wvx: 'video/x-ms-wvx',
1210
- avi: 'video/x-msvideo',
1211
- movie: 'video/x-sgi-movie',
1212
- smv: 'video/x-smv',
1213
- ice: 'x-conference/x-cooltalk',
37
+ const extensions = {
38
+ '123': 'application/vnd.lotus-1-2-3',
39
+ ez: 'application/andrew-inset',
40
+ aw: 'application/applixware',
41
+ atom: 'application/atom+xml',
42
+ atomcat: 'application/atomcat+xml',
43
+ atomdeleted: 'application/atomdeleted+xml',
44
+ atomsvc: 'application/atomsvc+xml',
45
+ dwd: 'application/atsc-dwd+xml',
46
+ held: 'application/atsc-held+xml',
47
+ rsat: 'application/atsc-rsat+xml',
48
+ bdoc: 'application/x-bdoc',
49
+ xcs: 'application/calendar+xml',
50
+ ccxml: 'application/ccxml+xml',
51
+ cdfx: 'application/cdfx+xml',
52
+ cdmia: 'application/cdmi-capability',
53
+ cdmic: 'application/cdmi-container',
54
+ cdmid: 'application/cdmi-domain',
55
+ cdmio: 'application/cdmi-object',
56
+ cdmiq: 'application/cdmi-queue',
57
+ cpl: 'application/cpl+xml',
58
+ cu: 'application/cu-seeme',
59
+ cwl: 'application/cwl',
60
+ mpd: 'application/dash+xml',
61
+ mpp: 'application/vnd.ms-project',
62
+ davmount: 'application/davmount+xml',
63
+ dbk: 'application/docbook+xml',
64
+ dssc: 'application/dssc+der',
65
+ xdssc: 'application/dssc+xml',
66
+ ecma: 'application/ecmascript',
67
+ emma: 'application/emma+xml',
68
+ emotionml: 'application/emotionml+xml',
69
+ epub: 'application/epub+zip',
70
+ exi: 'application/exi',
71
+ exp: 'application/express',
72
+ fdf: 'application/vnd.fdf',
73
+ fdt: 'application/fdt+xml',
74
+ pfr: 'application/font-tdpfr',
75
+ geojson: 'application/geo+json',
76
+ gml: 'application/gml+xml',
77
+ gpx: 'application/gpx+xml',
78
+ gxf: 'application/gxf',
79
+ gz: 'application/gzip',
80
+ hjson: 'application/hjson',
81
+ stk: 'application/hyperstudio',
82
+ ink: 'application/inkml+xml',
83
+ inkml: 'application/inkml+xml',
84
+ ipfix: 'application/ipfix',
85
+ its: 'application/its+xml',
86
+ jar: 'application/java-archive',
87
+ war: 'application/java-archive',
88
+ ear: 'application/java-archive',
89
+ ser: 'application/java-serialized-object',
90
+ class: 'application/java-vm',
91
+ js: 'application/javascript',
92
+ mjs: 'application/javascript',
93
+ json: 'application/json',
94
+ map: 'application/json',
95
+ json5: 'application/json5',
96
+ jsonml: 'application/jsonml+json',
97
+ jsonld: 'application/ld+json',
98
+ lgr: 'application/lgr+xml',
99
+ lostxml: 'application/lost+xml',
100
+ hqx: 'application/mac-binhex40',
101
+ cpt: 'application/mac-compactpro',
102
+ mads: 'application/mads+xml',
103
+ webmanifest: 'application/manifest+json',
104
+ mrc: 'application/marc',
105
+ mrcx: 'application/marcxml+xml',
106
+ ma: 'application/mathematica',
107
+ nb: 'application/mathematica',
108
+ mb: 'application/mathematica',
109
+ mathml: 'application/mathml+xml',
110
+ mbox: 'application/mbox',
111
+ mpf: 'application/media-policy-dataset+xml',
112
+ mscml: 'application/mediaservercontrol+xml',
113
+ metalink: 'application/metalink+xml',
114
+ meta4: 'application/metalink4+xml',
115
+ mets: 'application/mets+xml',
116
+ maei: 'application/mmt-aei+xml',
117
+ musd: 'application/mmt-usd+xml',
118
+ mods: 'application/mods+xml',
119
+ m21: 'application/mp21',
120
+ mp21: 'application/mp21',
121
+ mp4s: 'application/mp4',
122
+ m4p: 'application/mp4',
123
+ doc: 'application/msword',
124
+ dot: 'application/msword',
125
+ mxf: 'application/mxf',
126
+ nq: 'application/n-quads',
127
+ nt: 'application/n-triples',
128
+ cjs: 'application/node',
129
+ bin: 'application/octet-stream',
130
+ dms: 'application/octet-stream',
131
+ lrf: 'application/octet-stream',
132
+ mar: 'application/octet-stream',
133
+ so: 'application/octet-stream',
134
+ dist: 'application/octet-stream',
135
+ distz: 'application/octet-stream',
136
+ pkg: 'application/octet-stream',
137
+ bpk: 'application/octet-stream',
138
+ dump: 'application/octet-stream',
139
+ elc: 'application/octet-stream',
140
+ deploy: 'application/octet-stream',
141
+ exe: 'application/x-msdownload',
142
+ dll: 'application/x-msdownload',
143
+ deb: 'application/x-debian-package',
144
+ dmg: 'application/x-apple-diskimage',
145
+ iso: 'application/x-iso9660-image',
146
+ img: 'application/octet-stream',
147
+ msi: 'application/x-msdownload',
148
+ msp: 'application/octet-stream',
149
+ msm: 'application/octet-stream',
150
+ buffer: 'application/octet-stream',
151
+ oda: 'application/oda',
152
+ opf: 'application/oebps-package+xml',
153
+ ogx: 'application/ogg',
154
+ omdoc: 'application/omdoc+xml',
155
+ onetoc: 'application/onenote',
156
+ onetoc2: 'application/onenote',
157
+ onetmp: 'application/onenote',
158
+ onepkg: 'application/onenote',
159
+ oxps: 'application/oxps',
160
+ relo: 'application/p2p-overlay+xml',
161
+ xer: 'application/patch-ops-error+xml',
162
+ pdf: 'application/pdf',
163
+ pgp: 'application/pgp-encrypted',
164
+ asc: 'application/pgp-signature',
165
+ sig: 'application/pgp-signature',
166
+ prf: 'application/pics-rules',
167
+ p10: 'application/pkcs10',
168
+ p7m: 'application/pkcs7-mime',
169
+ p7c: 'application/pkcs7-mime',
170
+ p7s: 'application/pkcs7-signature',
171
+ p8: 'application/pkcs8',
172
+ ac: 'application/vnd.nokia.n-gage.ac+xml',
173
+ cer: 'application/pkix-cert',
174
+ crl: 'application/pkix-crl',
175
+ pkipath: 'application/pkix-pkipath',
176
+ pki: 'application/pkixcmp',
177
+ pls: 'application/pls+xml',
178
+ ai: 'application/postscript',
179
+ eps: 'application/postscript',
180
+ ps: 'application/postscript',
181
+ provx: 'application/provenance+xml',
182
+ cww: 'application/prs.cww',
183
+ pskcxml: 'application/pskc+xml',
184
+ raml: 'application/raml+yaml',
185
+ rdf: 'application/rdf+xml',
186
+ owl: 'application/rdf+xml',
187
+ rif: 'application/reginfo+xml',
188
+ rnc: 'application/relax-ng-compact-syntax',
189
+ rl: 'application/resource-lists+xml',
190
+ rld: 'application/resource-lists-diff+xml',
191
+ rs: 'application/rls-services+xml',
192
+ rapd: 'application/route-apd+xml',
193
+ sls: 'application/route-s-tsid+xml',
194
+ rusd: 'application/route-usd+xml',
195
+ gbr: 'application/rpki-ghostbusters',
196
+ mft: 'application/rpki-manifest',
197
+ roa: 'application/rpki-roa',
198
+ rsd: 'application/rsd+xml',
199
+ rss: 'application/rss+xml',
200
+ rtf: 'text/rtf',
201
+ sbml: 'application/sbml+xml',
202
+ scq: 'application/scvp-cv-request',
203
+ scs: 'application/scvp-cv-response',
204
+ spq: 'application/scvp-vp-request',
205
+ spp: 'application/scvp-vp-response',
206
+ sdp: 'application/sdp',
207
+ senmlx: 'application/senml+xml',
208
+ sensmlx: 'application/sensml+xml',
209
+ setpay: 'application/set-payment-initiation',
210
+ setreg: 'application/set-registration-initiation',
211
+ shf: 'application/shf+xml',
212
+ siv: 'application/sieve',
213
+ sieve: 'application/sieve',
214
+ smi: 'application/smil+xml',
215
+ smil: 'application/smil+xml',
216
+ rq: 'application/sparql-query',
217
+ srx: 'application/sparql-results+xml',
218
+ gram: 'application/srgs',
219
+ grxml: 'application/srgs+xml',
220
+ sru: 'application/sru+xml',
221
+ ssdl: 'application/ssdl+xml',
222
+ ssml: 'application/ssml+xml',
223
+ swidtag: 'application/swid+xml',
224
+ tei: 'application/tei+xml',
225
+ teicorpus: 'application/tei+xml',
226
+ tfi: 'application/thraud+xml',
227
+ tsd: 'application/timestamped-data',
228
+ toml: 'application/toml',
229
+ trig: 'application/trig',
230
+ ttml: 'application/ttml+xml',
231
+ ubj: 'application/ubjson',
232
+ rsheet: 'application/urc-ressheet+xml',
233
+ td: 'application/urc-targetdesc+xml',
234
+ '1km': 'application/vnd.1000minds.decision-model+xml',
235
+ plb: 'application/vnd.3gpp.pic-bw-large',
236
+ psb: 'application/vnd.3gpp.pic-bw-small',
237
+ pvb: 'application/vnd.3gpp.pic-bw-var',
238
+ tcap: 'application/vnd.3gpp2.tcap',
239
+ pwn: 'application/vnd.3m.post-it-notes',
240
+ aso: 'application/vnd.accpac.simply.aso',
241
+ imp: 'application/vnd.accpac.simply.imp',
242
+ acu: 'application/vnd.acucobol',
243
+ atc: 'application/vnd.acucorp',
244
+ acutc: 'application/vnd.acucorp',
245
+ air: 'application/vnd.adobe.air-application-installer-package+zip',
246
+ fcdt: 'application/vnd.adobe.formscentral.fcdt',
247
+ fxp: 'application/vnd.adobe.fxp',
248
+ fxpl: 'application/vnd.adobe.fxp',
249
+ xdp: 'application/vnd.adobe.xdp+xml',
250
+ xfdf: 'application/xfdf',
251
+ age: 'application/vnd.age',
252
+ ahead: 'application/vnd.ahead.space',
253
+ azf: 'application/vnd.airzip.filesecure.azf',
254
+ azs: 'application/vnd.airzip.filesecure.azs',
255
+ azw: 'application/vnd.amazon.ebook',
256
+ acc: 'application/vnd.americandynamics.acc',
257
+ ami: 'application/vnd.amiga.ami',
258
+ apk: 'application/vnd.android.package-archive',
259
+ cii: 'application/vnd.anser-web-certificate-issue-initiation',
260
+ fti: 'application/vnd.anser-web-funds-transfer-initiation',
261
+ atx: 'application/vnd.antix.game-component',
262
+ mpkg: 'application/vnd.apple.installer+xml',
263
+ key: 'application/x-iwork-keynote-sffkey',
264
+ m3u8: 'application/vnd.apple.mpegurl',
265
+ numbers: 'application/x-iwork-numbers-sffnumbers',
266
+ pages: 'application/x-iwork-pages-sffpages',
267
+ pkpass: 'application/vnd.apple.pkpass',
268
+ swi: 'application/vnd.aristanetworks.swi',
269
+ iota: 'application/vnd.astraea-software.iota',
270
+ aep: 'application/vnd.audiograph',
271
+ bmml: 'application/vnd.balsamiq.bmml+xml',
272
+ mpm: 'application/vnd.blueice.multipass',
273
+ bmi: 'application/vnd.bmi',
274
+ rep: 'application/vnd.businessobjects',
275
+ cdxml: 'application/vnd.chemdraw+xml',
276
+ mmd: 'application/vnd.chipnuts.karaoke-mmd',
277
+ cdy: 'application/vnd.cinderella',
278
+ csl: 'application/vnd.citationstyles.style+xml',
279
+ cla: 'application/vnd.claymore',
280
+ rp9: 'application/vnd.cloanto.rp9',
281
+ c4g: 'application/vnd.clonk.c4group',
282
+ c4d: 'application/vnd.clonk.c4group',
283
+ c4f: 'application/vnd.clonk.c4group',
284
+ c4p: 'application/vnd.clonk.c4group',
285
+ c4u: 'application/vnd.clonk.c4group',
286
+ c11amc: 'application/vnd.cluetrust.cartomobile-config',
287
+ c11amz: 'application/vnd.cluetrust.cartomobile-config-pkg',
288
+ csp: 'application/vnd.commonspace',
289
+ cdbcmsg: 'application/vnd.contact.cmsg',
290
+ cmc: 'application/vnd.cosmocaller',
291
+ clkx: 'application/vnd.crick.clicker',
292
+ clkk: 'application/vnd.crick.clicker.keyboard',
293
+ clkp: 'application/vnd.crick.clicker.palette',
294
+ clkt: 'application/vnd.crick.clicker.template',
295
+ clkw: 'application/vnd.crick.clicker.wordbank',
296
+ wbs: 'application/vnd.criticaltools.wbs+xml',
297
+ pml: 'application/vnd.ctc-posml',
298
+ ppd: 'application/vnd.cups-ppd',
299
+ car: 'application/vnd.curl.car',
300
+ pcurl: 'application/vnd.curl.pcurl',
301
+ dart: 'application/vnd.dart',
302
+ rdz: 'application/vnd.data-vision.rdz',
303
+ dbf: 'application/vnd.dbf',
304
+ uvf: 'application/vnd.dece.data',
305
+ uvvf: 'application/vnd.dece.data',
306
+ uvd: 'application/vnd.dece.data',
307
+ uvvd: 'application/vnd.dece.data',
308
+ uvt: 'application/vnd.dece.ttml+xml',
309
+ uvvt: 'application/vnd.dece.ttml+xml',
310
+ uvx: 'application/vnd.dece.unspecified',
311
+ uvvx: 'application/vnd.dece.unspecified',
312
+ uvz: 'application/vnd.dece.zip',
313
+ uvvz: 'application/vnd.dece.zip',
314
+ fe_launch: 'application/vnd.denovo.fcselayout-link',
315
+ dna: 'application/vnd.dna',
316
+ mlp: 'application/vnd.dolby.mlp',
317
+ dpg: 'application/vnd.dpgraph',
318
+ dfac: 'application/vnd.dreamfactory',
319
+ kpxx: 'application/vnd.ds-keypoint',
320
+ ait: 'application/vnd.dvb.ait',
321
+ svc: 'application/vnd.dvb.service',
322
+ geo: 'application/vnd.dynageo',
323
+ mag: 'application/vnd.ecowin.chart',
324
+ nml: 'application/vnd.enliven',
325
+ esf: 'application/vnd.epson.esf',
326
+ msf: 'application/vnd.epson.msf',
327
+ qam: 'application/vnd.epson.quickanime',
328
+ slt: 'application/vnd.epson.salt',
329
+ ssf: 'application/vnd.epson.ssf',
330
+ es3: 'application/vnd.eszigno3+xml',
331
+ et3: 'application/vnd.eszigno3+xml',
332
+ ez2: 'application/vnd.ezpix-album',
333
+ ez3: 'application/vnd.ezpix-package',
334
+ mseed: 'application/vnd.fdsn.mseed',
335
+ seed: 'application/vnd.fdsn.seed',
336
+ dataless: 'application/vnd.fdsn.seed',
337
+ gph: 'application/vnd.flographit',
338
+ ftc: 'application/vnd.fluxtime.clip',
339
+ fm: 'application/vnd.framemaker',
340
+ frame: 'application/vnd.framemaker',
341
+ maker: 'application/vnd.framemaker',
342
+ book: 'application/vnd.framemaker',
343
+ fnc: 'application/vnd.frogans.fnc',
344
+ ltf: 'application/vnd.frogans.ltf',
345
+ fsc: 'application/vnd.fsc.weblaunch',
346
+ oas: 'application/vnd.fujitsu.oasys',
347
+ oa2: 'application/vnd.fujitsu.oasys2',
348
+ oa3: 'application/vnd.fujitsu.oasys3',
349
+ fg5: 'application/vnd.fujitsu.oasysgp',
350
+ bh2: 'application/vnd.fujitsu.oasysprs',
351
+ ddd: 'application/vnd.fujixerox.ddd',
352
+ xdw: 'application/vnd.fujixerox.docuworks',
353
+ xbd: 'application/vnd.fujixerox.docuworks.binder',
354
+ fzs: 'application/vnd.fuzzysheet',
355
+ txd: 'application/vnd.genomatix.tuxedo',
356
+ ggb: 'application/vnd.geogebra.file',
357
+ ggt: 'application/vnd.geogebra.tool',
358
+ gex: 'application/vnd.geometry-explorer',
359
+ gre: 'application/vnd.geometry-explorer',
360
+ gxt: 'application/vnd.geonext',
361
+ g2w: 'application/vnd.geoplan',
362
+ g3w: 'application/vnd.geospace',
363
+ gmx: 'application/vnd.gmx',
364
+ gdoc: 'application/vnd.google-apps.document',
365
+ gslides: 'application/vnd.google-apps.presentation',
366
+ gsheet: 'application/vnd.google-apps.spreadsheet',
367
+ kml: 'application/vnd.google-earth.kml+xml',
368
+ kmz: 'application/vnd.google-earth.kmz',
369
+ gqf: 'application/vnd.grafeq',
370
+ gqs: 'application/vnd.grafeq',
371
+ gac: 'application/vnd.groove-account',
372
+ ghf: 'application/vnd.groove-help',
373
+ gim: 'application/vnd.groove-identity-message',
374
+ grv: 'application/vnd.groove-injector',
375
+ gtm: 'application/vnd.groove-tool-message',
376
+ tpl: 'application/vnd.groove-tool-template',
377
+ vcg: 'application/vnd.groove-vcard',
378
+ hal: 'application/vnd.hal+xml',
379
+ zmm: 'application/vnd.handheld-entertainment+xml',
380
+ hbci: 'application/vnd.hbci',
381
+ les: 'application/vnd.hhe.lesson-player',
382
+ hpgl: 'application/vnd.hp-hpgl',
383
+ hpid: 'application/vnd.hp-hpid',
384
+ hps: 'application/vnd.hp-hps',
385
+ jlt: 'application/vnd.hp-jlyt',
386
+ pcl: 'application/vnd.hp-pcl',
387
+ pclxl: 'application/vnd.hp-pclxl',
388
+ 'sfd-hdstx': 'application/vnd.hydrostatix.sof-data',
389
+ mpy: 'application/vnd.ibm.minipay',
390
+ afp: 'application/vnd.ibm.modcap',
391
+ listafp: 'application/vnd.ibm.modcap',
392
+ list3820: 'application/vnd.ibm.modcap',
393
+ irm: 'application/vnd.ibm.rights-management',
394
+ sc: 'application/vnd.ibm.secure-container',
395
+ icc: 'application/vnd.iccprofile',
396
+ icm: 'application/vnd.iccprofile',
397
+ igl: 'application/vnd.igloader',
398
+ ivp: 'application/vnd.immervision-ivp',
399
+ ivu: 'application/vnd.immervision-ivu',
400
+ igm: 'application/vnd.insors.igm',
401
+ xpw: 'application/vnd.intercon.formnet',
402
+ xpx: 'application/vnd.intercon.formnet',
403
+ i2g: 'application/vnd.intergeo',
404
+ qbo: 'application/vnd.intu.qbo',
405
+ qfx: 'application/vnd.intu.qfx',
406
+ rcprofile: 'application/vnd.ipunplugged.rcprofile',
407
+ irp: 'application/vnd.irepository.package+xml',
408
+ xpr: 'application/vnd.is-xpr',
409
+ fcs: 'application/vnd.isac.fcs',
410
+ jam: 'application/vnd.jam',
411
+ rms: 'application/vnd.jcp.javame.midlet-rms',
412
+ jisp: 'application/vnd.jisp',
413
+ joda: 'application/vnd.joost.joda-archive',
414
+ ktz: 'application/vnd.kahootz',
415
+ ktr: 'application/vnd.kahootz',
416
+ karbon: 'application/vnd.kde.karbon',
417
+ chrt: 'application/vnd.kde.kchart',
418
+ kfo: 'application/vnd.kde.kformula',
419
+ flw: 'application/vnd.kde.kivio',
420
+ kon: 'application/vnd.kde.kontour',
421
+ kpr: 'application/vnd.kde.kpresenter',
422
+ kpt: 'application/vnd.kde.kpresenter',
423
+ ksp: 'application/vnd.kde.kspread',
424
+ kwd: 'application/vnd.kde.kword',
425
+ kwt: 'application/vnd.kde.kword',
426
+ htke: 'application/vnd.kenameaapp',
427
+ kia: 'application/vnd.kidspiration',
428
+ kne: 'application/vnd.kinar',
429
+ knp: 'application/vnd.kinar',
430
+ skp: 'application/vnd.koan',
431
+ skd: 'application/vnd.koan',
432
+ skt: 'application/vnd.koan',
433
+ skm: 'application/vnd.koan',
434
+ sse: 'application/vnd.kodak-descriptor',
435
+ lasxml: 'application/vnd.las.las+xml',
436
+ lbd: 'application/vnd.llamagraphics.life-balance.desktop',
437
+ lbe: 'application/vnd.llamagraphics.life-balance.exchange+xml',
438
+ apr: 'application/vnd.lotus-approach',
439
+ pre: 'application/vnd.lotus-freelance',
440
+ nsf: 'application/vnd.lotus-notes',
441
+ org: 'text/x-org',
442
+ scm: 'application/vnd.lotus-screencam',
443
+ lwp: 'application/vnd.lotus-wordpro',
444
+ portpkg: 'application/vnd.macports.portpkg',
445
+ mvt: 'application/vnd.mapbox-vector-tile',
446
+ mcd: 'application/vnd.mcd',
447
+ mc1: 'application/vnd.medcalcdata',
448
+ cdkey: 'application/vnd.mediastation.cdkey',
449
+ mwf: 'application/vnd.mfer',
450
+ mfm: 'application/vnd.mfmp',
451
+ flo: 'application/vnd.micrografx.flo',
452
+ igx: 'application/vnd.micrografx.igx',
453
+ mif: 'application/vnd.mif',
454
+ daf: 'application/vnd.mobius.daf',
455
+ dis: 'application/vnd.mobius.dis',
456
+ mbk: 'application/vnd.mobius.mbk',
457
+ mqy: 'application/vnd.mobius.mqy',
458
+ msl: 'application/vnd.mobius.msl',
459
+ plc: 'application/vnd.mobius.plc',
460
+ txf: 'application/vnd.mobius.txf',
461
+ mpn: 'application/vnd.mophun.application',
462
+ mpc: 'application/vnd.mophun.certificate',
463
+ xul: 'application/vnd.mozilla.xul+xml',
464
+ cil: 'application/vnd.ms-artgalry',
465
+ cab: 'application/vnd.ms-cab-compressed',
466
+ xls: 'application/vnd.ms-excel',
467
+ xlm: 'application/vnd.ms-excel',
468
+ xla: 'application/vnd.ms-excel',
469
+ xlc: 'application/vnd.ms-excel',
470
+ xlt: 'application/vnd.ms-excel',
471
+ xlw: 'application/vnd.ms-excel',
472
+ xlam: 'application/vnd.ms-excel.addin.macroenabled.12',
473
+ xlsb: 'application/vnd.ms-excel.sheet.binary.macroenabled.12',
474
+ xlsm: 'application/vnd.ms-excel.sheet.macroenabled.12',
475
+ xltm: 'application/vnd.ms-excel.template.macroenabled.12',
476
+ eot: 'application/vnd.ms-fontobject',
477
+ chm: 'application/vnd.ms-htmlhelp',
478
+ ims: 'application/vnd.ms-ims',
479
+ lrm: 'application/vnd.ms-lrm',
480
+ thmx: 'application/vnd.ms-officetheme',
481
+ msg: 'application/vnd.ms-outlook',
482
+ cat: 'application/vnd.ms-pki.seccat',
483
+ stl: 'model/stl',
484
+ ppt: 'application/vnd.ms-powerpoint',
485
+ pps: 'application/vnd.ms-powerpoint',
486
+ pot: 'application/vnd.ms-powerpoint',
487
+ ppam: 'application/vnd.ms-powerpoint.addin.macroenabled.12',
488
+ pptm: 'application/vnd.ms-powerpoint.presentation.macroenabled.12',
489
+ sldm: 'application/vnd.ms-powerpoint.slide.macroenabled.12',
490
+ ppsm: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12',
491
+ potm: 'application/vnd.ms-powerpoint.template.macroenabled.12',
492
+ mpt: 'application/vnd.ms-project',
493
+ docm: 'application/vnd.ms-word.document.macroenabled.12',
494
+ dotm: 'application/vnd.ms-word.template.macroenabled.12',
495
+ wps: 'application/vnd.ms-works',
496
+ wks: 'application/vnd.ms-works',
497
+ wcm: 'application/vnd.ms-works',
498
+ wdb: 'application/vnd.ms-works',
499
+ wpl: 'application/vnd.ms-wpl',
500
+ xps: 'application/vnd.ms-xpsdocument',
501
+ mseq: 'application/vnd.mseq',
502
+ mus: 'application/vnd.musician',
503
+ msty: 'application/vnd.muvee.style',
504
+ taglet: 'application/vnd.mynfc',
505
+ nlu: 'application/vnd.neurolanguage.nlu',
506
+ ntf: 'application/vnd.nitf',
507
+ nitf: 'application/vnd.nitf',
508
+ nnd: 'application/vnd.noblenet-directory',
509
+ nns: 'application/vnd.noblenet-sealer',
510
+ nnw: 'application/vnd.noblenet-web',
511
+ ngdat: 'application/vnd.nokia.n-gage.data',
512
+ 'n-gage': 'application/vnd.nokia.n-gage.symbian.install',
513
+ rpst: 'application/vnd.nokia.radio-preset',
514
+ rpss: 'application/vnd.nokia.radio-presets',
515
+ edm: 'application/vnd.novadigm.edm',
516
+ edx: 'application/vnd.novadigm.edx',
517
+ ext: 'application/vnd.novadigm.ext',
518
+ odc: 'application/vnd.oasis.opendocument.chart',
519
+ otc: 'application/vnd.oasis.opendocument.chart-template',
520
+ odb: 'application/vnd.oasis.opendocument.database',
521
+ odf: 'application/vnd.oasis.opendocument.formula',
522
+ odft: 'application/vnd.oasis.opendocument.formula-template',
523
+ odg: 'application/vnd.oasis.opendocument.graphics',
524
+ otg: 'application/vnd.oasis.opendocument.graphics-template',
525
+ odi: 'application/vnd.oasis.opendocument.image',
526
+ oti: 'application/vnd.oasis.opendocument.image-template',
527
+ odp: 'application/vnd.oasis.opendocument.presentation',
528
+ otp: 'application/vnd.oasis.opendocument.presentation-template',
529
+ ods: 'application/vnd.oasis.opendocument.spreadsheet',
530
+ ots: 'application/vnd.oasis.opendocument.spreadsheet-template',
531
+ odt: 'application/vnd.oasis.opendocument.text',
532
+ odm: 'application/vnd.oasis.opendocument.text-master',
533
+ ott: 'application/vnd.oasis.opendocument.text-template',
534
+ oth: 'application/vnd.oasis.opendocument.text-web',
535
+ xo: 'application/vnd.olpc-sugar',
536
+ dd2: 'application/vnd.oma.dd2+xml',
537
+ obgx: 'application/vnd.openblox.game+xml',
538
+ oxt: 'application/vnd.openofficeorg.extension',
539
+ osm: 'application/vnd.openstreetmap.data+xml',
540
+ pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
541
+ sldx: 'application/vnd.openxmlformats-officedocument.presentationml.slide',
542
+ ppsx: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
543
+ potx: 'application/vnd.openxmlformats-officedocument.presentationml.template',
544
+ xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
545
+ xltx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
546
+ docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
547
+ dotx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
548
+ mgp: 'application/vnd.osgeo.mapguide.package',
549
+ dp: 'application/vnd.osgi.dp',
550
+ esa: 'application/vnd.osgi.subsystem',
551
+ pdb: 'application/x-pilot',
552
+ pqa: 'application/vnd.palm',
553
+ oprc: 'application/vnd.palm',
554
+ paw: 'application/vnd.pawaafile',
555
+ str: 'application/vnd.pg.format',
556
+ ei6: 'application/vnd.pg.osasli',
557
+ efif: 'application/vnd.picsel',
558
+ wg: 'application/vnd.pmi.widget',
559
+ plf: 'application/vnd.pocketlearn',
560
+ pbd: 'application/vnd.powerbuilder6',
561
+ box: 'application/vnd.previewsystems.box',
562
+ mgz: 'application/vnd.proteus.magazine',
563
+ qps: 'application/vnd.publishare-delta-tree',
564
+ ptid: 'application/vnd.pvi.ptid1',
565
+ qxd: 'application/vnd.quark.quarkxpress',
566
+ qxt: 'application/vnd.quark.quarkxpress',
567
+ qwd: 'application/vnd.quark.quarkxpress',
568
+ qwt: 'application/vnd.quark.quarkxpress',
569
+ qxl: 'application/vnd.quark.quarkxpress',
570
+ qxb: 'application/vnd.quark.quarkxpress',
571
+ rar: 'application/x-rar-compressed',
572
+ bed: 'application/vnd.realvnc.bed',
573
+ mxl: 'application/vnd.recordare.musicxml',
574
+ musicxml: 'application/vnd.recordare.musicxml+xml',
575
+ cryptonote: 'application/vnd.rig.cryptonote',
576
+ cod: 'application/vnd.rim.cod',
577
+ rm: 'application/vnd.rn-realmedia',
578
+ rmvb: 'application/vnd.rn-realmedia-vbr',
579
+ link66: 'application/vnd.route66.link66+xml',
580
+ st: 'application/vnd.sailingtracker.track',
581
+ see: 'application/vnd.seemail',
582
+ sema: 'application/vnd.sema',
583
+ semd: 'application/vnd.semd',
584
+ semf: 'application/vnd.semf',
585
+ ifm: 'application/vnd.shana.informed.formdata',
586
+ itp: 'application/vnd.shana.informed.formtemplate',
587
+ iif: 'application/vnd.shana.informed.interchange',
588
+ ipk: 'application/vnd.shana.informed.package',
589
+ twd: 'application/vnd.simtech-mindmapper',
590
+ twds: 'application/vnd.simtech-mindmapper',
591
+ mmf: 'application/vnd.smaf',
592
+ teacher: 'application/vnd.smart.teacher',
593
+ fo: 'application/vnd.software602.filler.form+xml',
594
+ sdkm: 'application/vnd.solent.sdkm+xml',
595
+ sdkd: 'application/vnd.solent.sdkm+xml',
596
+ dxp: 'application/vnd.spotfire.dxp',
597
+ sfs: 'application/vnd.spotfire.sfs',
598
+ sdc: 'application/vnd.stardivision.calc',
599
+ sda: 'application/vnd.stardivision.draw',
600
+ sdd: 'application/vnd.stardivision.impress',
601
+ smf: 'application/vnd.stardivision.math',
602
+ sdw: 'application/vnd.stardivision.writer',
603
+ vor: 'application/vnd.stardivision.writer',
604
+ sgl: 'application/vnd.stardivision.writer-global',
605
+ smzip: 'application/vnd.stepmania.package',
606
+ sm: 'application/vnd.stepmania.stepchart',
607
+ wadl: 'application/vnd.sun.wadl+xml',
608
+ sxc: 'application/vnd.sun.xml.calc',
609
+ stc: 'application/vnd.sun.xml.calc.template',
610
+ sxd: 'application/vnd.sun.xml.draw',
611
+ std: 'application/vnd.sun.xml.draw.template',
612
+ sxi: 'application/vnd.sun.xml.impress',
613
+ sti: 'application/vnd.sun.xml.impress.template',
614
+ sxm: 'application/vnd.sun.xml.math',
615
+ sxw: 'application/vnd.sun.xml.writer',
616
+ sxg: 'application/vnd.sun.xml.writer.global',
617
+ stw: 'application/vnd.sun.xml.writer.template',
618
+ sus: 'application/vnd.sus-calendar',
619
+ susp: 'application/vnd.sus-calendar',
620
+ svd: 'application/vnd.svd',
621
+ sis: 'application/vnd.symbian.install',
622
+ sisx: 'application/vnd.symbian.install',
623
+ xsm: 'application/vnd.syncml+xml',
624
+ bdm: 'application/vnd.syncml.dm+wbxml',
625
+ xdm: 'application/vnd.syncml.dm+xml',
626
+ ddf: 'application/vnd.syncml.dmddf+xml',
627
+ tao: 'application/vnd.tao.intent-module-archive',
628
+ pcap: 'application/vnd.tcpdump.pcap',
629
+ cap: 'application/vnd.tcpdump.pcap',
630
+ dmp: 'application/vnd.tcpdump.pcap',
631
+ tmo: 'application/vnd.tmobile-livetv',
632
+ tpt: 'application/vnd.trid.tpt',
633
+ mxs: 'application/vnd.triscape.mxs',
634
+ tra: 'application/vnd.trueapp',
635
+ ufd: 'application/vnd.ufdl',
636
+ ufdl: 'application/vnd.ufdl',
637
+ utz: 'application/vnd.uiq.theme',
638
+ umj: 'application/vnd.umajin',
639
+ unityweb: 'application/vnd.unity',
640
+ uoml: 'application/vnd.uoml+xml',
641
+ vcx: 'application/vnd.vcx',
642
+ vsd: 'application/vnd.visio',
643
+ vst: 'application/vnd.visio',
644
+ vss: 'application/vnd.visio',
645
+ vsw: 'application/vnd.visio',
646
+ vis: 'application/vnd.visionary',
647
+ vsf: 'application/vnd.vsf',
648
+ wbxml: 'application/vnd.wap.wbxml',
649
+ wmlc: 'application/vnd.wap.wmlc',
650
+ wmlsc: 'application/vnd.wap.wmlscriptc',
651
+ wtb: 'application/vnd.webturbo',
652
+ nbp: 'application/vnd.wolfram.player',
653
+ wpd: 'application/vnd.wordperfect',
654
+ wqd: 'application/vnd.wqd',
655
+ stf: 'application/vnd.wt.stf',
656
+ xar: 'application/vnd.xara',
657
+ xfdl: 'application/vnd.xfdl',
658
+ hvd: 'application/vnd.yamaha.hv-dic',
659
+ hvs: 'application/vnd.yamaha.hv-script',
660
+ hvp: 'application/vnd.yamaha.hv-voice',
661
+ osf: 'application/vnd.yamaha.openscoreformat',
662
+ osfpvg: 'application/vnd.yamaha.openscoreformat.osfpvg+xml',
663
+ saf: 'application/vnd.yamaha.smaf-audio',
664
+ spf: 'application/vnd.yamaha.smaf-phrase',
665
+ cmp: 'application/vnd.yellowriver-custom-menu',
666
+ zir: 'application/vnd.zul',
667
+ zirz: 'application/vnd.zul',
668
+ zaz: 'application/vnd.zzazz.deck+xml',
669
+ vxml: 'application/voicexml+xml',
670
+ wasm: 'application/wasm',
671
+ wif: 'application/watcherinfo+xml',
672
+ wgt: 'application/widget',
673
+ hlp: 'application/winhlp',
674
+ wsdl: 'application/wsdl+xml',
675
+ wspolicy: 'application/wspolicy+xml',
676
+ '7z': 'application/x-7z-compressed',
677
+ abw: 'application/x-abiword',
678
+ ace: 'application/x-ace-compressed',
679
+ arj: 'application/x-arj',
680
+ aab: 'application/x-authorware-bin',
681
+ x32: 'application/x-authorware-bin',
682
+ u32: 'application/x-authorware-bin',
683
+ vox: 'application/x-authorware-bin',
684
+ aam: 'application/x-authorware-map',
685
+ aas: 'application/x-authorware-seg',
686
+ bcpio: 'application/x-bcpio',
687
+ torrent: 'application/x-bittorrent',
688
+ blb: 'application/x-blorb',
689
+ blorb: 'application/x-blorb',
690
+ bz: 'application/x-bzip',
691
+ bz2: 'application/x-bzip2',
692
+ boz: 'application/x-bzip2',
693
+ cbr: 'application/x-cbr',
694
+ cba: 'application/x-cbr',
695
+ cbt: 'application/x-cbr',
696
+ cbz: 'application/x-cbr',
697
+ cb7: 'application/x-cbr',
698
+ vcd: 'application/x-cdlink',
699
+ cfs: 'application/x-cfs-compressed',
700
+ chat: 'application/x-chat',
701
+ pgn: 'application/x-chess-pgn',
702
+ crx: 'application/x-chrome-extension',
703
+ cco: 'application/x-cocoa',
704
+ nsc: 'application/x-conference',
705
+ cpio: 'application/x-cpio',
706
+ csh: 'application/x-csh',
707
+ udeb: 'application/x-debian-package',
708
+ dgc: 'application/x-dgc-compressed',
709
+ dir: 'application/x-director',
710
+ dcr: 'application/x-director',
711
+ dxr: 'application/x-director',
712
+ cst: 'application/x-director',
713
+ cct: 'application/x-director',
714
+ cxt: 'application/x-director',
715
+ w3d: 'application/x-director',
716
+ fgd: 'application/x-director',
717
+ swa: 'application/x-director',
718
+ wad: 'application/x-doom',
719
+ ncx: 'application/x-dtbncx+xml',
720
+ dtb: 'application/x-dtbook+xml',
721
+ res: 'application/x-dtbresource+xml',
722
+ dvi: 'application/x-dvi',
723
+ evy: 'application/x-envoy',
724
+ eva: 'application/x-eva',
725
+ bdf: 'application/x-font-bdf',
726
+ gsf: 'application/x-font-ghostscript',
727
+ psf: 'application/x-font-linux-psf',
728
+ pcf: 'application/x-font-pcf',
729
+ snf: 'application/x-font-snf',
730
+ pfa: 'application/x-font-type1',
731
+ pfb: 'application/x-font-type1',
732
+ pfm: 'application/x-font-type1',
733
+ afm: 'application/x-font-type1',
734
+ arc: 'application/x-freearc',
735
+ spl: 'application/x-futuresplash',
736
+ gca: 'application/x-gca-compressed',
737
+ ulx: 'application/x-glulx',
738
+ gnumeric: 'application/x-gnumeric',
739
+ gramps: 'application/x-gramps-xml',
740
+ gtar: 'application/x-gtar',
741
+ hdf: 'application/x-hdf',
742
+ php: 'application/x-httpd-php',
743
+ install: 'application/x-install-instructions',
744
+ jardiff: 'application/x-java-archive-diff',
745
+ jnlp: 'application/x-java-jnlp-file',
746
+ kdbx: 'application/x-keepass2',
747
+ latex: 'application/x-latex',
748
+ luac: 'application/x-lua-bytecode',
749
+ lzh: 'application/x-lzh-compressed',
750
+ lha: 'application/x-lzh-compressed',
751
+ run: 'application/x-makeself',
752
+ mie: 'application/x-mie',
753
+ prc: 'model/prc',
754
+ mobi: 'application/x-mobipocket-ebook',
755
+ application: 'application/x-ms-application',
756
+ lnk: 'application/x-ms-shortcut',
757
+ wmd: 'application/x-ms-wmd',
758
+ wmz: 'application/x-msmetafile',
759
+ xbap: 'application/x-ms-xbap',
760
+ mdb: 'application/x-msaccess',
761
+ obd: 'application/x-msbinder',
762
+ crd: 'application/x-mscardfile',
763
+ clp: 'application/x-msclip',
764
+ com: 'application/x-msdownload',
765
+ bat: 'application/x-msdownload',
766
+ mvb: 'application/x-msmediaview',
767
+ m13: 'application/x-msmediaview',
768
+ m14: 'application/x-msmediaview',
769
+ wmf: 'image/wmf',
770
+ emf: 'image/emf',
771
+ emz: 'application/x-msmetafile',
772
+ mny: 'application/x-msmoney',
773
+ pub: 'application/x-mspublisher',
774
+ scd: 'application/x-msschedule',
775
+ trm: 'application/x-msterminal',
776
+ wri: 'application/x-mswrite',
777
+ nc: 'application/x-netcdf',
778
+ cdf: 'application/x-netcdf',
779
+ pac: 'application/x-ns-proxy-autoconfig',
780
+ nzb: 'application/x-nzb',
781
+ pl: 'application/x-perl',
782
+ pm: 'application/x-perl',
783
+ p12: 'application/x-pkcs12',
784
+ pfx: 'application/x-pkcs12',
785
+ p7b: 'application/x-pkcs7-certificates',
786
+ spc: 'application/x-pkcs7-certificates',
787
+ p7r: 'application/x-pkcs7-certreqresp',
788
+ rpm: 'application/x-redhat-package-manager',
789
+ ris: 'application/x-research-info-systems',
790
+ sea: 'application/x-sea',
791
+ sh: 'application/x-sh',
792
+ shar: 'application/x-shar',
793
+ swf: 'application/x-shockwave-flash',
794
+ xap: 'application/x-silverlight-app',
795
+ sql: 'application/x-sql',
796
+ sit: 'application/x-stuffit',
797
+ sitx: 'application/x-stuffitx',
798
+ srt: 'application/x-subrip',
799
+ sv4cpio: 'application/x-sv4cpio',
800
+ sv4crc: 'application/x-sv4crc',
801
+ t3: 'application/x-t3vm-image',
802
+ gam: 'application/x-tads',
803
+ tar: 'application/x-tar',
804
+ tcl: 'application/x-tcl',
805
+ tk: 'application/x-tcl',
806
+ tex: 'application/x-tex',
807
+ tfm: 'application/x-tex-tfm',
808
+ texinfo: 'application/x-texinfo',
809
+ texi: 'application/x-texinfo',
810
+ obj: 'model/obj',
811
+ ustar: 'application/x-ustar',
812
+ hdd: 'application/x-virtualbox-hdd',
813
+ ova: 'application/x-virtualbox-ova',
814
+ ovf: 'application/x-virtualbox-ovf',
815
+ vbox: 'application/x-virtualbox-vbox',
816
+ 'vbox-extpack': 'application/x-virtualbox-vbox-extpack',
817
+ vdi: 'application/x-virtualbox-vdi',
818
+ vhd: 'application/x-virtualbox-vhd',
819
+ vmdk: 'application/x-virtualbox-vmdk',
820
+ src: 'application/x-wais-source',
821
+ webapp: 'application/x-web-app-manifest+json',
822
+ der: 'application/x-x509-ca-cert',
823
+ crt: 'application/x-x509-ca-cert',
824
+ pem: 'application/x-x509-ca-cert',
825
+ fig: 'application/x-xfig',
826
+ xlf: 'application/xliff+xml',
827
+ xpi: 'application/x-xpinstall',
828
+ xz: 'application/x-xz',
829
+ z1: 'application/x-zmachine',
830
+ z2: 'application/x-zmachine',
831
+ z3: 'application/x-zmachine',
832
+ z4: 'application/x-zmachine',
833
+ z5: 'application/x-zmachine',
834
+ z6: 'application/x-zmachine',
835
+ z7: 'application/x-zmachine',
836
+ z8: 'application/x-zmachine',
837
+ xaml: 'application/xaml+xml',
838
+ xav: 'application/xcap-att+xml',
839
+ xca: 'application/xcap-caps+xml',
840
+ xdf: 'application/xcap-diff+xml',
841
+ xel: 'application/xcap-el+xml',
842
+ xns: 'application/xcap-ns+xml',
843
+ xenc: 'application/xenc+xml',
844
+ xhtml: 'application/xhtml+xml',
845
+ xht: 'application/xhtml+xml',
846
+ xml: 'text/xml',
847
+ xsl: 'application/xslt+xml',
848
+ xsd: 'application/xml',
849
+ rng: 'application/xml',
850
+ dtd: 'application/xml-dtd',
851
+ xop: 'application/xop+xml',
852
+ xpl: 'application/xproc+xml',
853
+ xslt: 'application/xslt+xml',
854
+ xspf: 'application/xspf+xml',
855
+ mxml: 'application/xv+xml',
856
+ xhvml: 'application/xv+xml',
857
+ xvml: 'application/xv+xml',
858
+ xvm: 'application/xv+xml',
859
+ yang: 'application/yang',
860
+ yin: 'application/yin+xml',
861
+ zip: 'application/zip',
862
+ '3gpp': 'video/3gpp',
863
+ adp: 'audio/adpcm',
864
+ amr: 'audio/amr',
865
+ au: 'audio/basic',
866
+ snd: 'audio/basic',
867
+ mid: 'audio/midi',
868
+ midi: 'audio/midi',
869
+ kar: 'audio/midi',
870
+ rmi: 'audio/midi',
871
+ mxmf: 'audio/mobile-xmf',
872
+ mp3: 'audio/mpeg',
873
+ m4a: 'audio/x-m4a',
874
+ mp4a: 'audio/mp4',
875
+ mpga: 'audio/mpeg',
876
+ mp2: 'audio/mpeg',
877
+ mp2a: 'audio/mpeg',
878
+ m2a: 'audio/mpeg',
879
+ m3a: 'audio/mpeg',
880
+ oga: 'audio/ogg',
881
+ ogg: 'audio/ogg',
882
+ spx: 'audio/ogg',
883
+ opus: 'audio/ogg',
884
+ s3m: 'audio/s3m',
885
+ sil: 'audio/silk',
886
+ uva: 'audio/vnd.dece.audio',
887
+ uvva: 'audio/vnd.dece.audio',
888
+ eol: 'audio/vnd.digital-winds',
889
+ dra: 'audio/vnd.dra',
890
+ dts: 'audio/vnd.dts',
891
+ dtshd: 'audio/vnd.dts.hd',
892
+ lvp: 'audio/vnd.lucent.voice',
893
+ pya: 'audio/vnd.ms-playready.media.pya',
894
+ ecelp4800: 'audio/vnd.nuera.ecelp4800',
895
+ ecelp7470: 'audio/vnd.nuera.ecelp7470',
896
+ ecelp9600: 'audio/vnd.nuera.ecelp9600',
897
+ rip: 'audio/vnd.rip',
898
+ wav: 'audio/x-wav',
899
+ weba: 'audio/webm',
900
+ aac: 'audio/x-aac',
901
+ aif: 'audio/x-aiff',
902
+ aiff: 'audio/x-aiff',
903
+ aifc: 'audio/x-aiff',
904
+ caf: 'audio/x-caf',
905
+ flac: 'audio/x-flac',
906
+ mka: 'audio/x-matroska',
907
+ m3u: 'audio/x-mpegurl',
908
+ wax: 'audio/x-ms-wax',
909
+ wma: 'audio/x-ms-wma',
910
+ ram: 'audio/x-pn-realaudio',
911
+ ra: 'audio/x-realaudio',
912
+ rmp: 'audio/x-pn-realaudio-plugin',
913
+ xm: 'audio/xm',
914
+ cdx: 'chemical/x-cdx',
915
+ cif: 'chemical/x-cif',
916
+ cmdf: 'chemical/x-cmdf',
917
+ cml: 'chemical/x-cml',
918
+ csml: 'chemical/x-csml',
919
+ xyz: 'chemical/x-xyz',
920
+ ttc: 'font/collection',
921
+ otf: 'font/otf',
922
+ ttf: 'font/ttf',
923
+ woff: 'font/woff',
924
+ woff2: 'font/woff2',
925
+ exr: 'image/aces',
926
+ apng: 'image/apng',
927
+ avci: 'image/avci',
928
+ avcs: 'image/avcs',
929
+ avif: 'image/avif',
930
+ bmp: 'image/x-ms-bmp',
931
+ cgm: 'image/cgm',
932
+ drle: 'image/dicom-rle',
933
+ fits: 'image/fits',
934
+ g3: 'image/g3fax',
935
+ gif: 'image/gif',
936
+ heic: 'image/heic',
937
+ heics: 'image/heic-sequence',
938
+ heif: 'image/heif',
939
+ heifs: 'image/heif-sequence',
940
+ hej2: 'image/hej2k',
941
+ hsj2: 'image/hsj2',
942
+ ief: 'image/ief',
943
+ jls: 'image/jls',
944
+ jp2: 'image/jp2',
945
+ jpg2: 'image/jp2',
946
+ jpeg: 'image/jpeg',
947
+ jpg: 'image/jpeg',
948
+ jpe: 'image/jpeg',
949
+ jph: 'image/jph',
950
+ jhc: 'image/jphc',
951
+ jpm: 'video/jpm',
952
+ jpx: 'image/jpx',
953
+ jpf: 'image/jpx',
954
+ jxr: 'image/jxr',
955
+ jxra: 'image/jxra',
956
+ jxrs: 'image/jxrs',
957
+ jxs: 'image/jxs',
958
+ jxsc: 'image/jxsc',
959
+ jxsi: 'image/jxsi',
960
+ jxss: 'image/jxss',
961
+ ktx: 'image/ktx',
962
+ ktx2: 'image/ktx2',
963
+ png: 'image/png',
964
+ btif: 'image/prs.btif',
965
+ pti: 'image/prs.pti',
966
+ sgi: 'image/sgi',
967
+ svg: 'image/svg+xml',
968
+ svgz: 'image/svg+xml',
969
+ t38: 'image/t38',
970
+ tif: 'image/tiff',
971
+ tiff: 'image/tiff',
972
+ tfx: 'image/tiff-fx',
973
+ psd: 'image/vnd.adobe.photoshop',
974
+ azv: 'image/vnd.airzip.accelerator.azv',
975
+ uvi: 'image/vnd.dece.graphic',
976
+ uvvi: 'image/vnd.dece.graphic',
977
+ uvg: 'image/vnd.dece.graphic',
978
+ uvvg: 'image/vnd.dece.graphic',
979
+ djvu: 'image/vnd.djvu',
980
+ djv: 'image/vnd.djvu',
981
+ sub: 'text/vnd.dvb.subtitle',
982
+ dwg: 'image/vnd.dwg',
983
+ dxf: 'image/vnd.dxf',
984
+ fbs: 'image/vnd.fastbidsheet',
985
+ fpx: 'image/vnd.fpx',
986
+ fst: 'image/vnd.fst',
987
+ mmr: 'image/vnd.fujixerox.edmics-mmr',
988
+ rlc: 'image/vnd.fujixerox.edmics-rlc',
989
+ ico: 'image/x-icon',
990
+ dds: 'image/vnd.ms-dds',
991
+ mdi: 'image/vnd.ms-modi',
992
+ wdp: 'image/vnd.ms-photo',
993
+ npx: 'image/vnd.net-fpx',
994
+ b16: 'image/vnd.pco.b16',
995
+ tap: 'image/vnd.tencent.tap',
996
+ vtf: 'image/vnd.valve.source.texture',
997
+ wbmp: 'image/vnd.wap.wbmp',
998
+ xif: 'image/vnd.xiff',
999
+ pcx: 'image/x-pcx',
1000
+ webp: 'image/webp',
1001
+ '3ds': 'image/x-3ds',
1002
+ ras: 'image/x-cmu-raster',
1003
+ cmx: 'image/x-cmx',
1004
+ fh: 'image/x-freehand',
1005
+ fhc: 'image/x-freehand',
1006
+ fh4: 'image/x-freehand',
1007
+ fh5: 'image/x-freehand',
1008
+ fh7: 'image/x-freehand',
1009
+ jng: 'image/x-jng',
1010
+ sid: 'image/x-mrsid-image',
1011
+ pic: 'image/x-pict',
1012
+ pct: 'image/x-pict',
1013
+ pnm: 'image/x-portable-anymap',
1014
+ pbm: 'image/x-portable-bitmap',
1015
+ pgm: 'image/x-portable-graymap',
1016
+ ppm: 'image/x-portable-pixmap',
1017
+ rgb: 'image/x-rgb',
1018
+ tga: 'image/x-tga',
1019
+ xbm: 'image/x-xbitmap',
1020
+ xpm: 'image/x-xpixmap',
1021
+ xwd: 'image/x-xwindowdump',
1022
+ 'disposition-notification': 'message/disposition-notification',
1023
+ u8msg: 'message/global',
1024
+ u8dsn: 'message/global-delivery-status',
1025
+ u8mdn: 'message/global-disposition-notification',
1026
+ u8hdr: 'message/global-headers',
1027
+ eml: 'message/rfc822',
1028
+ mime: 'message/rfc822',
1029
+ wsc: 'message/vnd.wfa.wsc',
1030
+ '3mf': 'model/3mf',
1031
+ gltf: 'model/gltf+json',
1032
+ glb: 'model/gltf-binary',
1033
+ igs: 'model/iges',
1034
+ iges: 'model/iges',
1035
+ msh: 'model/mesh',
1036
+ mesh: 'model/mesh',
1037
+ silo: 'model/mesh',
1038
+ mtl: 'model/mtl',
1039
+ stpx: 'model/step+xml',
1040
+ stpz: 'model/step+zip',
1041
+ stpxz: 'model/step-xml+zip',
1042
+ u3d: 'model/u3d',
1043
+ dae: 'model/vnd.collada+xml',
1044
+ dwf: 'model/vnd.dwf',
1045
+ gdl: 'model/vnd.gdl',
1046
+ gtw: 'model/vnd.gtw',
1047
+ mts: 'model/vnd.mts',
1048
+ ogex: 'model/vnd.opengex',
1049
+ x_b: 'model/vnd.parasolid.transmit.binary',
1050
+ x_t: 'model/vnd.parasolid.transmit.text',
1051
+ vds: 'model/vnd.sap.vds',
1052
+ usdz: 'model/vnd.usdz+zip',
1053
+ bsp: 'model/vnd.valve.source.compiled-map',
1054
+ vtu: 'model/vnd.vtu',
1055
+ wrl: 'model/vrml',
1056
+ vrml: 'model/vrml',
1057
+ x3db: 'model/x3d+fastinfoset',
1058
+ x3dbz: 'model/x3d+binary',
1059
+ x3dv: 'model/x3d-vrml',
1060
+ x3dvz: 'model/x3d+vrml',
1061
+ x3d: 'model/x3d+xml',
1062
+ x3dz: 'model/x3d+xml',
1063
+ appcache: 'text/cache-manifest',
1064
+ manifest: 'text/cache-manifest',
1065
+ ics: 'text/calendar',
1066
+ ifb: 'text/calendar',
1067
+ coffee: 'text/coffeescript',
1068
+ litcoffee: 'text/coffeescript',
1069
+ css: 'text/css',
1070
+ csv: 'text/csv',
1071
+ html: 'text/html',
1072
+ htm: 'text/html',
1073
+ shtml: 'text/html',
1074
+ jade: 'text/jade',
1075
+ jsx: 'text/jsx',
1076
+ less: 'text/less',
1077
+ markdown: 'text/markdown',
1078
+ md: 'text/markdown',
1079
+ mml: 'text/mathml',
1080
+ mdx: 'text/mdx',
1081
+ n3: 'text/n3',
1082
+ txt: 'text/plain',
1083
+ text: 'text/plain',
1084
+ conf: 'text/plain',
1085
+ def: 'text/plain',
1086
+ list: 'text/plain',
1087
+ log: 'text/plain',
1088
+ in: 'text/plain',
1089
+ ini: 'text/plain',
1090
+ dsc: 'text/prs.lines.tag',
1091
+ rtx: 'text/richtext',
1092
+ sgml: 'text/sgml',
1093
+ sgm: 'text/sgml',
1094
+ shex: 'text/shex',
1095
+ slim: 'text/slim',
1096
+ slm: 'text/slim',
1097
+ spdx: 'text/spdx',
1098
+ stylus: 'text/stylus',
1099
+ styl: 'text/stylus',
1100
+ tsv: 'text/tab-separated-values',
1101
+ t: 'text/troff',
1102
+ tr: 'text/troff',
1103
+ roff: 'text/troff',
1104
+ man: 'text/troff',
1105
+ me: 'text/troff',
1106
+ ms: 'text/troff',
1107
+ ttl: 'text/turtle',
1108
+ uri: 'text/uri-list',
1109
+ uris: 'text/uri-list',
1110
+ urls: 'text/uri-list',
1111
+ vcard: 'text/vcard',
1112
+ curl: 'text/vnd.curl',
1113
+ dcurl: 'text/vnd.curl.dcurl',
1114
+ mcurl: 'text/vnd.curl.mcurl',
1115
+ scurl: 'text/vnd.curl.scurl',
1116
+ ged: 'text/vnd.familysearch.gedcom',
1117
+ fly: 'text/vnd.fly',
1118
+ flx: 'text/vnd.fmi.flexstor',
1119
+ gv: 'text/vnd.graphviz',
1120
+ '3dml': 'text/vnd.in3d.3dml',
1121
+ spot: 'text/vnd.in3d.spot',
1122
+ jad: 'text/vnd.sun.j2me.app-descriptor',
1123
+ wml: 'text/vnd.wap.wml',
1124
+ wmls: 'text/vnd.wap.wmlscript',
1125
+ vtt: 'text/vtt',
1126
+ s: 'text/x-asm',
1127
+ asm: 'text/x-asm',
1128
+ c: 'text/x-c',
1129
+ cc: 'text/x-c',
1130
+ cxx: 'text/x-c',
1131
+ cpp: 'text/x-c',
1132
+ h: 'text/x-c',
1133
+ hh: 'text/x-c',
1134
+ dic: 'text/x-c',
1135
+ htc: 'text/x-component',
1136
+ f: 'text/x-fortran',
1137
+ for: 'text/x-fortran',
1138
+ f77: 'text/x-fortran',
1139
+ f90: 'text/x-fortran',
1140
+ hbs: 'text/x-handlebars-template',
1141
+ java: 'text/x-java-source',
1142
+ lua: 'text/x-lua',
1143
+ mkd: 'text/x-markdown',
1144
+ nfo: 'text/x-nfo',
1145
+ opml: 'text/x-opml',
1146
+ p: 'text/x-pascal',
1147
+ pas: 'text/x-pascal',
1148
+ pde: 'text/x-processing',
1149
+ sass: 'text/x-sass',
1150
+ scss: 'text/x-scss',
1151
+ etx: 'text/x-setext',
1152
+ sfv: 'text/x-sfv',
1153
+ ymp: 'text/x-suse-ymp',
1154
+ uu: 'text/x-uuencode',
1155
+ vcs: 'text/x-vcalendar',
1156
+ vcf: 'text/x-vcard',
1157
+ yaml: 'text/yaml',
1158
+ yml: 'text/yaml',
1159
+ '3gp': 'video/3gpp',
1160
+ '3g2': 'video/3gpp2',
1161
+ h261: 'video/h261',
1162
+ h263: 'video/h263',
1163
+ h264: 'video/h264',
1164
+ m4s: 'video/iso.segment',
1165
+ jpgv: 'video/jpeg',
1166
+ jpgm: 'video/jpm',
1167
+ mj2: 'video/mj2',
1168
+ mjp2: 'video/mj2',
1169
+ ts: 'video/mp2t',
1170
+ mp4: 'video/mp4',
1171
+ mp4v: 'video/mp4',
1172
+ mpg4: 'video/mp4',
1173
+ mpeg: 'video/mpeg',
1174
+ mpg: 'video/mpeg',
1175
+ mpe: 'video/mpeg',
1176
+ m1v: 'video/mpeg',
1177
+ m2v: 'video/mpeg',
1178
+ ogv: 'video/ogg',
1179
+ qt: 'video/quicktime',
1180
+ mov: 'video/quicktime',
1181
+ uvh: 'video/vnd.dece.hd',
1182
+ uvvh: 'video/vnd.dece.hd',
1183
+ uvm: 'video/vnd.dece.mobile',
1184
+ uvvm: 'video/vnd.dece.mobile',
1185
+ uvp: 'video/vnd.dece.pd',
1186
+ uvvp: 'video/vnd.dece.pd',
1187
+ uvs: 'video/vnd.dece.sd',
1188
+ uvvs: 'video/vnd.dece.sd',
1189
+ uvv: 'video/vnd.dece.video',
1190
+ uvvv: 'video/vnd.dece.video',
1191
+ dvb: 'video/vnd.dvb.file',
1192
+ fvt: 'video/vnd.fvt',
1193
+ mxu: 'video/vnd.mpegurl',
1194
+ m4u: 'video/vnd.mpegurl',
1195
+ pyv: 'video/vnd.ms-playready.media.pyv',
1196
+ uvu: 'video/vnd.uvvu.mp4',
1197
+ uvvu: 'video/vnd.uvvu.mp4',
1198
+ viv: 'video/vnd.vivo',
1199
+ webm: 'video/webm',
1200
+ f4v: 'video/x-f4v',
1201
+ fli: 'video/x-fli',
1202
+ flv: 'video/x-flv',
1203
+ m4v: 'video/x-m4v',
1204
+ mkv: 'video/x-matroska',
1205
+ mk3d: 'video/x-matroska',
1206
+ mks: 'video/x-matroska',
1207
+ mng: 'video/x-mng',
1208
+ asf: 'video/x-ms-asf',
1209
+ asx: 'video/x-ms-asf',
1210
+ vob: 'video/x-ms-vob',
1211
+ wm: 'video/x-ms-wm',
1212
+ wmv: 'video/x-ms-wmv',
1213
+ wmx: 'video/x-ms-wmx',
1214
+ wvx: 'video/x-ms-wvx',
1215
+ avi: 'video/x-msvideo',
1216
+ movie: 'video/x-sgi-movie',
1217
+ smv: 'video/x-smv',
1218
+ ice: 'x-conference/x-cooltalk',
1214
1219
  };
1215
1220
 
1216
- function getMimeType(path, fallback = null) {
1217
- const ext = (/\.([^.]+)$/.exec(path) || [])[1] || path;
1218
- return extensions[ext] || fallback;
1221
+ function getMimeType(path, fallback = null) {
1222
+ const ext = (/\.([^.]+)$/.exec(path) || [])[1] || path;
1223
+ return extensions[ext] || fallback;
1219
1224
  }
1220
1225
 
1221
- function normalizePath(filePath, baseDir) {
1222
- return path.normalize(path.join(filePath.startsWith('/') || (baseDir && baseDir.startsWith('/')) ? '' : process.cwd(), baseDir || '', filePath));
1226
+ function normalizePath(filePath, baseDir) {
1227
+ return path.normalize(path.join(filePath.startsWith('/') || (baseDir && baseDir.startsWith('/')) ? '' : process.cwd(), baseDir || '', filePath));
1223
1228
  }
1224
1229
 
1225
- const { stat, readdir } = promises;
1226
- // export function statFile(path: string) {
1227
- // return stat(path)
1228
- // }
1229
- function serveFile(filePath, options = {}) {
1230
- return __awaiter(this, void 0, void 0, function* () {
1231
- const { restoreCtx } = useHttpContext();
1232
- const { status } = useResponse();
1233
- const { setHeader, removeHeader } = useSetHeaders();
1234
- const headers = useHeaders();
1235
- const { method, url } = useRequest();
1236
- const { setCacheControl, setExpires, setPragmaNoCache } = useSetCacheControl();
1237
- const normalizedPath = normalizePath(filePath, options.baseDir);
1238
- let fileStats;
1239
- try {
1240
- fileStats = yield stat(normalizedPath);
1241
- }
1242
- catch (e) {
1243
- if (options.defaultExt) {
1244
- const ext = path.extname(filePath);
1245
- if (!ext) {
1246
- restoreCtx();
1247
- return serveFile(filePath + '.' + options.defaultExt);
1248
- }
1249
- }
1250
- throw new HttpError(404);
1251
- }
1252
- status(200);
1253
- // if-none-match & if-modified-since processing start
1254
- // rfc7232
1255
- const etag = `"${[
1256
- fileStats.ino,
1257
- fileStats.size,
1258
- fileStats.mtime.toISOString(),
1259
- ].join('-')}"`;
1260
- const lastModified = new Date(fileStats.mtime);
1261
- if (isNotModified(etag, lastModified, headers['if-none-match'] || '', headers['if-modified-since'] || '')) {
1262
- status(304);
1263
- return '';
1264
- }
1265
- // if-none-match & if-modified-since processing end
1266
- setHeader('etag', etag);
1267
- setHeader('last-modified', lastModified.toUTCString());
1268
- if (options.cacheControl !== undefined) {
1269
- setCacheControl(options.cacheControl);
1270
- }
1271
- if (options.expires) {
1272
- setExpires(options.expires);
1273
- }
1274
- if (options.pragmaNoCache) {
1275
- setPragmaNoCache(options.pragmaNoCache);
1276
- }
1277
- if (fileStats.isDirectory()) {
1278
- if (options.listDirectory) {
1279
- restoreCtx();
1280
- return listDirectory(normalizedPath);
1281
- }
1282
- else if (options.index) {
1283
- if (filePath[filePath.length - 1] !== '/' &&
1284
- url &&
1285
- url[url.length - 1] !== '/') {
1286
- return new BaseHttpResponse()
1287
- .setStatus(302)
1288
- .setHeader('location', url + '/');
1289
- }
1290
- restoreCtx();
1291
- return serveFile(path.join(filePath, options.index), Object.assign(Object.assign({}, options), { index: '' }));
1292
- }
1293
- removeHeader('etag');
1294
- removeHeader('last-modified');
1295
- throw new HttpError(404);
1296
- }
1297
- // range header processing start
1298
- let range = headers.range;
1299
- let start, end;
1300
- let size = fileStats.size;
1301
- if (range) {
1302
- const rangeParts = range
1303
- .trim()
1304
- .replace(/bytes=/, '')
1305
- .split('-');
1306
- const [s, e] = rangeParts;
1307
- start = parseInt(s);
1308
- end = e ? parseInt(e) : size - 1;
1309
- end = Math.min(size - 1, end);
1310
- if (start > end || isNaN(start) || isNaN(end)) {
1311
- throw new HttpError(416);
1312
- }
1313
- size = end - start + 1;
1314
- // if-range processing start
1315
- // rfc7233#section-3.2\
1316
- const ifRange = headers['if-range'] || '';
1317
- const ifRangeTag = ifRange[0] === '"' ? ifRange : '';
1318
- const ifRangeDate = ifRangeTag ? '' : ifRange;
1319
- if (ifRange &&
1320
- !isNotModified(etag, lastModified, ifRangeTag, ifRangeDate)) {
1321
- // If the validator does not match, the server MUST ignore
1322
- // the Range header field.
1323
- status(200);
1324
- size = fileStats.size;
1325
- range = '';
1326
- }
1327
- else {
1328
- // If the validator given in the If-Range header field matches the
1329
- // current validator for the selected representation of the target
1330
- // resource, then the server SHOULD process the Range header field as
1331
- // requested.
1332
- setHeader('content-range', `bytes ${start}-${end}/${fileStats.size}`);
1333
- status(206);
1334
- }
1335
- // if-range processing end
1336
- }
1337
- // range header processing end
1338
- setHeader('accept-ranges', 'bytes');
1339
- setHeader('content-type', getMimeType(normalizedPath) || 'application/octet-stream');
1340
- setHeader('content-length', size);
1341
- if (options.headers) {
1342
- for (const header of Object.keys(options.headers)) {
1343
- setHeader(header, options.headers[header]);
1344
- }
1345
- }
1346
- return method === 'HEAD'
1347
- ? ''
1348
- : createReadStream(normalizedPath, !!range ? { start, end } : undefined);
1349
- });
1350
- }
1351
- // function toWeak(etag: string): string {
1352
- // return `W/${etag}`
1353
- // }
1354
- function isNotModified(etag, lastModified, clientEtag, clientLM) {
1355
- if (clientEtag) {
1356
- const parts = clientEtag.split(',').map((v) => v.trim());
1357
- for (const p of parts) {
1358
- if (etag === p) {
1359
- return true;
1360
- }
1361
- }
1362
- // A recipient MUST ignore If-Modified-Since if the request contains an
1363
- // If-None-Match header field; the condition in If-None-Match is
1364
- // considered to be a more accurate replacement for the condition in
1365
- // If-Modified-Since, and the two are only combined for the sake of
1366
- // interoperating with older intermediaries that might not implement
1367
- // If-None-Match.
1368
- return false;
1369
- }
1370
- const date = new Date(clientLM);
1371
- // A recipient MUST ignore the If-Modified-Since header field if the
1372
- // received field-value is not a valid HTTP-date, or if the request
1373
- // method is neither GET nor HEAD.
1374
- if (date.toString() !== 'Invalid Date' &&
1375
- date.getTime() > lastModified.getTime()) {
1376
- return true;
1377
- }
1378
- return false;
1379
- }
1380
- function listDirectory(dirPath) {
1381
- return __awaiter(this, void 0, void 0, function* () {
1382
- const { setContentType } = useSetHeaders();
1383
- const { url } = useRequest();
1384
- const list = yield readdir(dirPath);
1385
- const promises = [];
1386
- let detailedList = [];
1387
- for (const item of list) {
1388
- promises.push({ name: item, promise: stat(path.join(dirPath, item)) });
1389
- }
1390
- for (const item of promises) {
1391
- const data = yield item.promise;
1392
- detailedList.push({
1393
- name: item.name,
1394
- size: data.size,
1395
- mtime: data.mtime,
1396
- dir: data.isDirectory(),
1397
- });
1398
- }
1399
- detailedList = detailedList.sort((a, b) => a.dir === b.dir ? (a.name > b.name ? 1 : -1) : a.dir > b.dir ? -1 : 1);
1400
- detailedList.unshift({ name: '..', dir: true });
1401
- setContentType('text/html');
1402
- const styles = '<style type="text/css">\nhtml { font-family: monospace }\n' +
1403
- 'span { padding: 0px 2px }\n' +
1404
- '.text { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }\n' +
1405
- '.icon { width: 20px; display: inline-block; text-align: center; }\n' +
1406
- '.name { width: 250px; display: inline-block; }\n' +
1407
- '.size { width: 80px; display: inline-block; color: grey; text-align: right; }\n' +
1408
- '.date { width: 200px; display: inline-block; color: grey; text-align: right; }\n' +
1409
- '\n</style>';
1410
- return ('<html><head><title>Dir</title> ' +
1411
- styles +
1412
- ' </head><body><ul>' +
1413
- detailedList
1414
- .map((d) => `<li> <span class="icon">${d.dir ? '&#128193;' : '&#128462;'}</span>` +
1415
- `<a href="${path.join(url || '', d.name)}"><span class="name text">${d.name}</span></a>` +
1416
- `<span class="size text">${(d.size &&
1417
- (d.size > 10000
1418
- ? Math.round(d.size / 1024 / 1024).toString() +
1419
- 'Mb'
1420
- : Math.round(d.size / 1024).toString() +
1421
- 'Kb')) ||
1422
- ''}</span>` +
1423
- `<span class="date text">${(d.mtime && d.mtime.toISOString()) || ''}</li>`)
1424
- .join('\n') +
1425
- '</ul></body></html>');
1426
- });
1230
+ const { stat, readdir } = promises;
1231
+ function serveFile(filePath, options = {}) {
1232
+ return __awaiter(this, void 0, void 0, function* () {
1233
+ if (!options.allowDotDot && (/\/\.\.\//.test(filePath) || /^\.\.\//.test(filePath))) {
1234
+ throw new Error('Parent Traversal ("/../") is not allowed.');
1235
+ }
1236
+ const { restoreCtx } = useHttpContext();
1237
+ const { status } = useResponse();
1238
+ const { setHeader, removeHeader } = useSetHeaders();
1239
+ const headers = useHeaders();
1240
+ const { method, url } = useRequest();
1241
+ const { setCacheControl, setExpires, setPragmaNoCache } = useSetCacheControl();
1242
+ const normalizedPath = normalizePath(filePath, options.baseDir);
1243
+ let fileStats;
1244
+ try {
1245
+ fileStats = yield stat(normalizedPath);
1246
+ }
1247
+ catch (e) {
1248
+ if (options.defaultExt) {
1249
+ const ext = path.extname(filePath);
1250
+ if (!ext) {
1251
+ restoreCtx();
1252
+ return serveFile(filePath + '.' + options.defaultExt);
1253
+ }
1254
+ }
1255
+ throw new HttpError(404);
1256
+ }
1257
+ status(200);
1258
+ // if-none-match & if-modified-since processing start
1259
+ // rfc7232
1260
+ const etag = `"${[
1261
+ fileStats.ino,
1262
+ fileStats.size,
1263
+ fileStats.mtime.toISOString(),
1264
+ ].join('-')}"`;
1265
+ const lastModified = new Date(fileStats.mtime);
1266
+ if (isNotModified(etag, lastModified, headers['if-none-match'] || '', headers['if-modified-since'] || '')) {
1267
+ status(304);
1268
+ return '';
1269
+ }
1270
+ // if-none-match & if-modified-since processing end
1271
+ setHeader('etag', etag);
1272
+ setHeader('last-modified', lastModified.toUTCString());
1273
+ if (options.cacheControl !== undefined) {
1274
+ setCacheControl(options.cacheControl);
1275
+ }
1276
+ if (options.expires) {
1277
+ setExpires(options.expires);
1278
+ }
1279
+ if (options.pragmaNoCache) {
1280
+ setPragmaNoCache(options.pragmaNoCache);
1281
+ }
1282
+ if (fileStats.isDirectory()) {
1283
+ if (options.listDirectory) {
1284
+ restoreCtx();
1285
+ return listDirectory(normalizedPath);
1286
+ }
1287
+ else if (options.index) {
1288
+ if (filePath[filePath.length - 1] !== '/' &&
1289
+ url &&
1290
+ url[url.length - 1] !== '/') {
1291
+ return new BaseHttpResponse()
1292
+ .setStatus(302)
1293
+ .setHeader('location', url + '/');
1294
+ }
1295
+ restoreCtx();
1296
+ return serveFile(path.join(filePath, options.index), Object.assign(Object.assign({}, options), { index: '' }));
1297
+ }
1298
+ removeHeader('etag');
1299
+ removeHeader('last-modified');
1300
+ throw new HttpError(404);
1301
+ }
1302
+ // range header processing start
1303
+ let range = headers.range;
1304
+ let start, end;
1305
+ let size = fileStats.size;
1306
+ if (range) {
1307
+ const rangeParts = range
1308
+ .trim()
1309
+ .replace(/bytes=/, '')
1310
+ .split('-');
1311
+ const [s, e] = rangeParts;
1312
+ start = parseInt(s);
1313
+ end = e ? parseInt(e) : size - 1;
1314
+ end = Math.min(size - 1, end);
1315
+ if (start > end || isNaN(start) || isNaN(end)) {
1316
+ throw new HttpError(416);
1317
+ }
1318
+ size = end - start + 1;
1319
+ // if-range processing start
1320
+ // rfc7233#section-3.2\
1321
+ const ifRange = headers['if-range'] || '';
1322
+ const ifRangeTag = ifRange[0] === '"' ? ifRange : '';
1323
+ const ifRangeDate = ifRangeTag ? '' : ifRange;
1324
+ if (ifRange &&
1325
+ !isNotModified(etag, lastModified, ifRangeTag, ifRangeDate)) {
1326
+ // If the validator does not match, the server MUST ignore
1327
+ // the Range header field.
1328
+ status(200);
1329
+ size = fileStats.size;
1330
+ range = '';
1331
+ }
1332
+ else {
1333
+ // If the validator given in the If-Range header field matches the
1334
+ // current validator for the selected representation of the target
1335
+ // resource, then the server SHOULD process the Range header field as
1336
+ // requested.
1337
+ setHeader('content-range', `bytes ${start}-${end}/${fileStats.size}`);
1338
+ status(206);
1339
+ }
1340
+ // if-range processing end
1341
+ }
1342
+ // range header processing end
1343
+ setHeader('accept-ranges', 'bytes');
1344
+ setHeader('content-type', getMimeType(normalizedPath) || 'application/octet-stream');
1345
+ setHeader('content-length', size);
1346
+ if (options.headers) {
1347
+ for (const header of Object.keys(options.headers)) {
1348
+ setHeader(header, options.headers[header]);
1349
+ }
1350
+ }
1351
+ return method === 'HEAD'
1352
+ ? ''
1353
+ : createReadStream(normalizedPath, !!range ? { start, end } : undefined);
1354
+ });
1355
+ }
1356
+ // function toWeak(etag: string): string {
1357
+ // return `W/${etag}`
1358
+ // }
1359
+ function isNotModified(etag, lastModified, clientEtag, clientLM) {
1360
+ if (clientEtag) {
1361
+ const parts = clientEtag.split(',').map((v) => v.trim());
1362
+ for (const p of parts) {
1363
+ if (etag === p) {
1364
+ return true;
1365
+ }
1366
+ }
1367
+ // A recipient MUST ignore If-Modified-Since if the request contains an
1368
+ // If-None-Match header field; the condition in If-None-Match is
1369
+ // considered to be a more accurate replacement for the condition in
1370
+ // If-Modified-Since, and the two are only combined for the sake of
1371
+ // interoperating with older intermediaries that might not implement
1372
+ // If-None-Match.
1373
+ return false;
1374
+ }
1375
+ const date = new Date(clientLM);
1376
+ // A recipient MUST ignore the If-Modified-Since header field if the
1377
+ // received field-value is not a valid HTTP-date, or if the request
1378
+ // method is neither GET nor HEAD.
1379
+ if (date.toString() !== 'Invalid Date' &&
1380
+ date.getTime() > lastModified.getTime()) {
1381
+ return true;
1382
+ }
1383
+ return false;
1384
+ }
1385
+ function listDirectory(dirPath) {
1386
+ return __awaiter(this, void 0, void 0, function* () {
1387
+ const { setContentType } = useSetHeaders();
1388
+ const { url } = useRequest();
1389
+ const list = yield readdir(dirPath);
1390
+ const promises = [];
1391
+ let detailedList = [];
1392
+ for (const item of list) {
1393
+ promises.push({ name: item, promise: stat(path.join(dirPath, item)) });
1394
+ }
1395
+ for (const item of promises) {
1396
+ const data = yield item.promise;
1397
+ detailedList.push({
1398
+ name: item.name,
1399
+ size: data.size,
1400
+ mtime: data.mtime,
1401
+ dir: data.isDirectory(),
1402
+ });
1403
+ }
1404
+ detailedList = detailedList.sort((a, b) => a.dir === b.dir ? (a.name > b.name ? 1 : -1) : a.dir > b.dir ? -1 : 1);
1405
+ detailedList.unshift({ name: '..', dir: true });
1406
+ setContentType('text/html');
1407
+ const styles = '<style type="text/css">\nhtml { font-family: monospace }\n' +
1408
+ 'span { padding: 0px 2px }\n' +
1409
+ '.text { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }\n' +
1410
+ '.icon { width: 20px; display: inline-block; text-align: center; }\n' +
1411
+ '.name { width: 250px; display: inline-block; }\n' +
1412
+ '.size { width: 80px; display: inline-block; color: grey; text-align: right; }\n' +
1413
+ '.date { width: 200px; display: inline-block; color: grey; text-align: right; }\n' +
1414
+ '\n</style>';
1415
+ return ('<html><head><title>Dir</title> ' +
1416
+ styles +
1417
+ ' </head><body><ul>' +
1418
+ detailedList
1419
+ .map((d) => `<li> <span class="icon">${d.dir ? '&#128193;' : '&#128462;'}</span>` +
1420
+ `<a href="${path.join(url || '', d.name)}"><span class="name text">${d.name}</span></a>` +
1421
+ `<span class="size text">${(d.size &&
1422
+ (d.size > 10000
1423
+ ? Math.round(d.size / 1024 / 1024).toString() +
1424
+ 'Mb'
1425
+ : Math.round(d.size / 1024).toString() +
1426
+ 'Kb')) ||
1427
+ ''}</span>` +
1428
+ `<span class="date text">${(d.mtime && d.mtime.toISOString()) || ''}</li>`)
1429
+ .join('\n') +
1430
+ '</ul></body></html>');
1431
+ });
1427
1432
  }
1428
1433
 
1429
1434
  export { serveFile };