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