summaryrefslogtreecommitdiff
path: root/fedora/.config/yazi/plugins/mime-ext.yazi/main.lua
diff options
context:
space:
mode:
Diffstat (limited to 'fedora/.config/yazi/plugins/mime-ext.yazi/main.lua')
-rw-r--r--fedora/.config/yazi/plugins/mime-ext.yazi/main.lua1126
1 files changed, 1126 insertions, 0 deletions
diff --git a/fedora/.config/yazi/plugins/mime-ext.yazi/main.lua b/fedora/.config/yazi/plugins/mime-ext.yazi/main.lua
new file mode 100644
index 0000000..06c0005
--- /dev/null
+++ b/fedora/.config/yazi/plugins/mime-ext.yazi/main.lua
@@ -0,0 +1,1126 @@
+--- @since 25.5.31
+
+local FILES = {
+ [".envrc"] = "text/plain",
+ [".gitconfig"] = "text/plain",
+ [".gitignore"] = "text/plain",
+ [".luacheckrc"] = "text/lua",
+ [".npmrc"] = "text/plain",
+ [".styluaignore"] = "text/plain",
+ [".zshenv"] = "text/plain",
+ [".zshrc"] = "text/plain",
+ ["cargo.lock"] = "application/json",
+ ["flake.lock"] = "application/json",
+ license = "text/plain",
+}
+
+local EXTS = {
+ ["123"] = "application/lotus-1-2-3",
+ ["3dml"] = "text/in3d.3dml",
+ ["3ds"] = "image/3ds",
+ ["3g2"] = "video/3gpp2",
+ ["3gp"] = "video/3gpp",
+ ["7z"] = "application/7z-compressed",
+ ["for"] = "text/fortran",
+ ["in"] = "text/plain",
+ ["n-gage"] = "application/nokia.n-gage.symbian.install",
+ ["sfd-hdstx"] = "application/hydrostatix.sof-data",
+ aab = "application/authorware-bin",
+ aac = "audio/aac",
+ aam = "application/authorware-map",
+ aas = "application/authorware-seg",
+ abw = "application/abiword",
+ ac = "application/pkix-attr-cert",
+ acc = "application/americandynamics.acc",
+ ace = "application/ace-compressed",
+ acu = "application/acucobol",
+ acutc = "application/acucorp",
+ adp = "audio/adpcm",
+ aep = "application/audiograph",
+ afm = "application/font-type1",
+ afp = "application/ibm.modcap",
+ ahead = "application/ahead.space",
+ ai = "application/postscript",
+ aif = "audio/aiff",
+ aifc = "audio/aiff",
+ aiff = "audio/aiff",
+ air = "application/adobe.air-application-installer-package+zip",
+ ait = "application/dvb.ait",
+ ami = "application/amiga.ami",
+ apk = "application/android.package-archive",
+ appcache = "text/cache-manifest",
+ application = "application/ms-application",
+ apr = "application/lotus-approach",
+ arc = "application/freearc",
+ asc = "application/pgp-signature",
+ asf = "video/ms-asf",
+ asm = "text/asm",
+ aso = "application/accpac.simply.aso",
+ ass = "text/ass",
+ asx = "video/ms-asf",
+ atc = "application/acucorp",
+ atom = "application/atom+xml",
+ atomcat = "application/atomcat+xml",
+ atomsvc = "application/atomsvc+xml",
+ atx = "application/antix.game-component",
+ au = "audio/basic",
+ avi = "video/msvideo",
+ avif = "image/avif",
+ aw = "application/applixware",
+ azf = "application/airzip.filesecure.azf",
+ azs = "application/airzip.filesecure.azs",
+ azw = "application/amazon.ebook",
+ bash = "text/shellscript",
+ bat = "application/msdownload",
+ bcpio = "application/bcpio",
+ bdf = "application/font-bdf",
+ bdm = "application/syncml.dm+wbxml",
+ bean = "text/plain",
+ beancount = "text/plain",
+ bed = "application/realvnc.bed",
+ bh2 = "application/fujitsu.oasysprs",
+ bin = "application/octet-stream",
+ blb = "application/blorb",
+ blorb = "application/blorb",
+ bmi = "application/bmi",
+ bmp = "image/bmp",
+ book = "application/framemaker",
+ box = "application/previewsystems.box",
+ boz = "application/bzip2",
+ bpk = "application/octet-stream",
+ btif = "image/prs.btif",
+ bz = "application/bzip",
+ bz2 = "application/bzip2",
+ c = "text/c",
+ c11amc = "application/cluetrust.cartomobile-config",
+ c11amz = "application/cluetrust.cartomobile-config-pkg",
+ c4d = "application/clonk.c4group",
+ c4f = "application/clonk.c4group",
+ c4g = "application/clonk.c4group",
+ c4p = "application/clonk.c4group",
+ c4u = "application/clonk.c4group",
+ cab = "application/ms-cab-compressed",
+ caf = "audio/caf",
+ cap = "application/tcpdump.pcap",
+ car = "application/curl.car",
+ cat = "application/ms-pki.seccat",
+ cb7 = "application/cbr",
+ cba = "application/cbr",
+ cbr = "application/cbr",
+ cbt = "application/cbr",
+ cbz = "application/cbr",
+ cc = "text/c",
+ cct = "application/director",
+ ccxml = "application/ccxml+xml",
+ cdbcmsg = "application/contact.cmsg",
+ cdf = "application/netcdf",
+ cdkey = "application/mediastation.cdkey",
+ cdmia = "application/cdmi-capability",
+ cdmic = "application/cdmi-container",
+ cdmid = "application/cdmi-domain",
+ cdmio = "application/cdmi-object",
+ cdmiq = "application/cdmi-queue",
+ cdx = "chemical/cdx",
+ cdxml = "application/chemdraw+xml",
+ cdy = "application/cinderella",
+ cer = "application/pkix-cert",
+ cfg = "text/plain",
+ cfs = "application/cfs-compressed",
+ cgm = "image/cgm",
+ chat = "application/chat",
+ chm = "application/ms-htmlhelp",
+ chrt = "application/kde.kchart",
+ cif = "chemical/cif",
+ cii = "application/anser-web-certificate-issue-initiation",
+ cil = "application/ms-artgalry",
+ cla = "application/claymore",
+ class = "application/java-vm",
+ clkk = "application/crick.clicker.keyboard",
+ clkp = "application/crick.clicker.palette",
+ clkt = "application/crick.clicker.template",
+ clkw = "application/crick.clicker.wordbank",
+ clkx = "application/crick.clicker",
+ clp = "application/msclip",
+ cmc = "application/cosmocaller",
+ cmdf = "chemical/cmdf",
+ cml = "chemical/cml",
+ cmp = "application/yellowriver-custom-menu",
+ cmx = "image/cmx",
+ cod = "application/rim.cod",
+ com = "application/msdownload",
+ conf = "text/plain",
+ cpio = "application/cpio",
+ cpp = "text/c",
+ cpt = "application/mac-compactpro",
+ crd = "application/mscardfile",
+ crl = "application/pkix-crl",
+ crt = "application/x509-ca-cert",
+ cryptonote = "application/rig.cryptonote",
+ csh = "application/csh",
+ csml = "chemical/csml",
+ csp = "application/commonspace",
+ css = "text/css",
+ cst = "application/director",
+ csv = "text/csv",
+ cu = "application/cu-seeme",
+ curl = "text/curl",
+ cww = "application/prs.cww",
+ cxt = "application/director",
+ cxx = "text/c",
+ dae = "model/collada+xml",
+ daf = "application/mobius.daf",
+ dart = "application/dart",
+ dataless = "application/fdsn.seed",
+ davmount = "application/davmount+xml",
+ dbk = "application/docbook+xml",
+ dcr = "application/director",
+ dcurl = "text/curl.dcurl",
+ dd2 = "application/oma.dd2+xml",
+ ddd = "application/fujixerox.ddd",
+ deb = "application/debian-package",
+ def = "text/plain",
+ deploy = "application/octet-stream",
+ der = "application/x509-ca-cert",
+ dfac = "application/dreamfactory",
+ dgc = "application/dgc-compressed",
+ dic = "text/c",
+ dir = "application/director",
+ dis = "application/mobius.dis",
+ dist = "application/octet-stream",
+ distz = "application/octet-stream",
+ djv = "image/djvu",
+ djvu = "image/djvu",
+ dll = "application/msdownload",
+ dmg = "application/apple-diskimage",
+ dmp = "application/tcpdump.pcap",
+ dms = "application/octet-stream",
+ dna = "application/dna",
+ doc = "application/msword",
+ docm = "application/ms-word.document.macroenabled.12",
+ docx = "application/openxmlformats-officedocument.wordprocessingml.document",
+ dot = "application/msword",
+ dotm = "application/ms-word.template.macroenabled.12",
+ dotx = "application/openxmlformats-officedocument.wordprocessingml.template",
+ dp = "application/osgi.dp",
+ dpg = "application/dpgraph",
+ dra = "audio/dra",
+ dsc = "text/prs.lines.tag",
+ dssc = "application/dssc+der",
+ dtb = "application/dtbook+xml",
+ dtd = "application/xml-dtd",
+ dts = "audio/dts",
+ dtshd = "audio/dts.hd",
+ dump = "application/octet-stream",
+ dvb = "video/dvb.file",
+ dvi = "application/dvi",
+ dwf = "model/dwf",
+ dwg = "image/dwg",
+ dxf = "image/dxf",
+ dxp = "application/spotfire.dxp",
+ dxr = "application/director",
+ ebuild = "application/gentoo.ebuild",
+ ecelp4800 = "audio/nuera.ecelp4800",
+ ecelp7470 = "audio/nuera.ecelp7470",
+ ecelp9600 = "audio/nuera.ecelp9600",
+ eclass = "application/gentoo.eclass",
+ ecma = "application/ecmascript",
+ edm = "application/novadigm.edm",
+ edx = "application/novadigm.edx",
+ efif = "application/picsel",
+ ei6 = "application/pg.osasli",
+ elc = "application/octet-stream",
+ emf = "application/msmetafile",
+ eml = "message/rfc822",
+ emma = "application/emma+xml",
+ emz = "application/msmetafile",
+ env = "text/plain",
+ eol = "audio/digital-winds",
+ eot = "application/ms-fontobject",
+ eps = "application/postscript",
+ epub = "application/epub+zip",
+ es3 = "application/eszigno3+xml",
+ esa = "application/osgi.subsystem",
+ esf = "application/epson.esf",
+ et3 = "application/eszigno3+xml",
+ etx = "text/setext",
+ eva = "application/eva",
+ evy = "application/envoy",
+ exe = "application/msdownload",
+ exi = "application/exi",
+ ext = "application/novadigm.ext",
+ ez = "application/andrew-inset",
+ ez2 = "application/ezpix-album",
+ ez3 = "application/ezpix-package",
+ f = "text/fortran",
+ f4v = "video/f4v",
+ f77 = "text/fortran",
+ f90 = "text/fortran",
+ fbs = "image/fastbidsheet",
+ fcdt = "application/adobe.formscentral.fcdt",
+ fcs = "application/isac.fcs",
+ fdf = "application/fdf",
+ fe_launch = "application/denovo.fcselayout-link",
+ fg5 = "application/fujitsu.oasysgp",
+ fgd = "application/director",
+ fh = "image/freehand",
+ fh4 = "image/freehand",
+ fh5 = "image/freehand",
+ fh7 = "image/freehand",
+ fhc = "image/freehand",
+ fig = "application/xfig",
+ fish = "text/shellscript",
+ flac = "audio/flac",
+ fli = "video/fli",
+ flo = "application/micrografx.flo",
+ flv = "video/flv",
+ flw = "application/kde.kivio",
+ flx = "text/fmi.flexstor",
+ fly = "text/fly",
+ fm = "application/framemaker",
+ fnc = "application/frogans.fnc",
+ fpx = "image/fpx",
+ frame = "application/framemaker",
+ fsc = "application/fsc.weblaunch",
+ fst = "image/fst",
+ ftc = "application/fluxtime.clip",
+ fti = "application/anser-web-funds-transfer-initiation",
+ fvt = "video/fvt",
+ fxp = "application/adobe.fxp",
+ fxpl = "application/adobe.fxp",
+ fzs = "application/fuzzysheet",
+ g2w = "application/geoplan",
+ g3 = "image/g3fax",
+ g3w = "application/geospace",
+ gac = "application/groove-account",
+ gam = "application/tads",
+ gbr = "application/rpki-ghostbusters",
+ gca = "application/gca-compressed",
+ gdl = "model/gdl",
+ geo = "application/dynageo",
+ gex = "application/geometry-explorer",
+ ggb = "application/geogebra.file",
+ ggs = "application/geogebra.slides",
+ ggt = "application/geogebra.tool",
+ ghf = "application/groove-help",
+ gif = "image/gif",
+ gim = "application/groove-identity-message",
+ gml = "application/gml+xml",
+ gmx = "application/gmx",
+ gnumeric = "application/gnumeric",
+ go = "text/go",
+ gph = "application/flographit",
+ gpx = "application/gpx+xml",
+ gqf = "application/grafeq",
+ gqs = "application/grafeq",
+ gram = "application/srgs",
+ gramps = "application/gramps-xml",
+ gre = "application/geometry-explorer",
+ grv = "application/groove-injector",
+ grxml = "application/srgs+xml",
+ gsf = "application/font-ghostscript",
+ gtar = "application/gtar",
+ gtm = "application/groove-tool-message",
+ gtw = "model/gtw",
+ gv = "text/graphviz",
+ gxf = "application/gxf",
+ gxt = "application/geonext",
+ h = "text/c",
+ h261 = "video/h261",
+ h263 = "video/h263",
+ h264 = "video/h264",
+ hal = "application/hal+xml",
+ hbci = "application/hbci",
+ hcl = "text/hcl",
+ hdf = "application/hdf",
+ hh = "text/c",
+ hlp = "application/winhlp",
+ hpgl = "application/hp-hpgl",
+ hpid = "application/hp-hpid",
+ hpp = "text/c",
+ hps = "application/hp-hps",
+ hqx = "application/mac-binhex40",
+ htke = "application/kenameaapp",
+ htm = "text/html",
+ html = "text/html",
+ hvd = "application/yamaha.hv-dic",
+ hvp = "application/yamaha.hv-voice",
+ hvs = "application/yamaha.hv-script",
+ i2g = "application/intergeo",
+ icc = "application/iccprofile",
+ ice = "conference/cooltalk",
+ icm = "application/iccprofile",
+ ico = "image/icon",
+ ics = "text/calendar",
+ ief = "image/ief",
+ ifb = "text/calendar",
+ ifm = "application/shana.informed.formdata",
+ iges = "model/iges",
+ igl = "application/igloader",
+ igm = "application/insors.igm",
+ igs = "model/iges",
+ igx = "application/micrografx.igx",
+ iif = "application/shana.informed.interchange",
+ imp = "application/accpac.simply.imp",
+ ims = "application/ms-ims",
+ ini = "text/plain",
+ ink = "application/inkml+xml",
+ inkml = "application/inkml+xml",
+ install = "application/install-instructions",
+ iota = "application/astraea-software.iota",
+ ipfix = "application/ipfix",
+ ipk = "application/shana.informed.package",
+ irm = "application/ibm.rights-management",
+ irp = "application/irepository.package+xml",
+ iso = "application/iso9660-image",
+ itp = "application/shana.informed.formtemplate",
+ ivp = "application/immervision-ivp",
+ ivu = "application/immervision-ivu",
+ jad = "text/sun.j2me.app-descriptor",
+ jam = "application/jam",
+ jar = "application/java-archive",
+ java = "text/java-source",
+ jisp = "application/jisp",
+ jlt = "application/hp-jlyt",
+ jnlp = "application/java-jnlp-file",
+ joda = "application/joost.joda-archive",
+ jpe = "image/jpeg",
+ jpeg = "image/jpeg",
+ jpg = "image/jpeg",
+ jpgm = "video/jpm",
+ jpgv = "video/jpeg",
+ jpm = "video/jpm",
+ js = "text/javascript",
+ json = "application/json",
+ jsonc = "application/json",
+ jsonml = "application/jsonml+json",
+ jsx = "text/jsx",
+ jxl = "image/jxl",
+ kar = "audio/midi",
+ karbon = "application/kde.karbon",
+ kfo = "application/kde.kformula",
+ kia = "application/kidspiration",
+ kml = "application/google-earth.kml+xml",
+ kmz = "application/google-earth.kmz",
+ kne = "application/kinar",
+ knp = "application/kinar",
+ kon = "application/kde.kontour",
+ kpr = "application/kde.kpresenter",
+ kpt = "application/kde.kpresenter",
+ kpxx = "application/ds-keypoint",
+ ksp = "application/kde.kspread",
+ ktr = "application/kahootz",
+ ktx = "image/ktx",
+ ktz = "application/kahootz",
+ kwd = "application/kde.kword",
+ kwt = "application/kde.kword",
+ lasxml = "application/las.las+xml",
+ latex = "application/latex",
+ lbd = "application/llamagraphics.life-balance.desktop",
+ lbe = "application/llamagraphics.life-balance.exchange+xml",
+ les = "application/hhe.lesson-player",
+ lha = "application/lzh-compressed",
+ link66 = "application/route66.link66+xml",
+ list = "text/plain",
+ list3820 = "application/ibm.modcap",
+ listafp = "application/ibm.modcap",
+ lnk = "application/ms-shortcut",
+ log = "text/plain",
+ lostxml = "application/lost+xml",
+ lrf = "application/octet-stream",
+ lrm = "application/ms-lrm",
+ ltf = "application/frogans.ltf",
+ lua = "text/lua",
+ lvp = "audio/lucent.voice",
+ lwp = "application/lotus-wordpro",
+ lzh = "application/lzh-compressed",
+ m13 = "application/msmediaview",
+ m14 = "application/msmediaview",
+ m1v = "video/mpeg",
+ m21 = "application/mp21",
+ m2a = "audio/mpeg",
+ m2t = "video/mp2t",
+ m2ts = "video/mp2t",
+ m2v = "video/mpeg",
+ m3a = "audio/mpeg",
+ m3u = "audio/mpegurl",
+ m3u8 = "application/apple.mpegurl",
+ m4a = "audio/mp4",
+ m4u = "video/mpegurl",
+ m4v = "video/m4v",
+ ma = "application/mathematica",
+ mads = "application/mads+xml",
+ mag = "application/ecowin.chart",
+ maker = "application/framemaker",
+ man = "text/troff",
+ mar = "application/octet-stream",
+ mathml = "application/mathml+xml",
+ mb = "application/mathematica",
+ mbk = "application/mobius.mbk",
+ mbox = "application/mbox",
+ mc1 = "application/medcalcdata",
+ mcd = "application/mcd",
+ mcurl = "text/curl.mcurl",
+ md = "text/markdown",
+ mdb = "application/msaccess",
+ mdi = "image/ms-modi",
+ me = "text/troff",
+ mesh = "model/mesh",
+ meta4 = "application/metalink4+xml",
+ metalink = "application/metalink+xml",
+ mets = "application/mets+xml",
+ mfm = "application/mfmp",
+ mft = "application/rpki-manifest",
+ mgp = "application/osgeo.mapguide.package",
+ mgz = "application/proteus.magazine",
+ mid = "audio/midi",
+ midi = "audio/midi",
+ mie = "application/mie",
+ mif = "application/mif",
+ mime = "message/rfc822",
+ mj2 = "video/mj2",
+ mjp2 = "video/mj2",
+ mjs = "text/javascript",
+ mk3d = "video/matroska",
+ mka = "audio/matroska",
+ mks = "video/matroska",
+ mkv = "video/matroska",
+ mlp = "application/dolby.mlp",
+ mmd = "application/chipnuts.karaoke-mmd",
+ mmf = "application/smaf",
+ mmr = "image/fujixerox.edmics-mmr",
+ mng = "video/mng",
+ mny = "application/msmoney",
+ mobi = "application/mobipocket-ebook",
+ mods = "application/mods+xml",
+ mov = "video/quicktime",
+ movie = "video/sgi-movie",
+ mp2 = "audio/mpeg",
+ mp21 = "application/mp21",
+ mp2a = "audio/mpeg",
+ mp3 = "audio/mpeg",
+ mp4 = "video/mp4",
+ mp4a = "audio/mp4",
+ mp4s = "application/mp4",
+ mp4v = "video/mp4",
+ mpc = "application/mophun.certificate",
+ mpe = "video/mpeg",
+ mpeg = "video/mpeg",
+ mpg = "video/mpeg",
+ mpg4 = "video/mp4",
+ mpga = "audio/mpeg",
+ mpkg = "application/apple.installer+xml",
+ mpm = "application/blueice.multipass",
+ mpn = "application/mophun.application",
+ mpp = "application/ms-project",
+ mpt = "application/ms-project",
+ mpy = "application/ibm.minipay",
+ mqy = "application/mobius.mqy",
+ mrc = "application/marc",
+ mrcx = "application/marcxml+xml",
+ ms = "text/troff",
+ mscml = "application/mediaservercontrol+xml",
+ mseed = "application/fdsn.mseed",
+ mseq = "application/mseq",
+ msf = "application/epson.msf",
+ msh = "model/mesh",
+ msi = "application/msdownload",
+ msl = "application/mobius.msl",
+ msty = "application/muvee.style",
+ mts = "video/mp2t",
+ mus = "application/musician",
+ musicxml = "application/recordare.musicxml+xml",
+ mvb = "application/msmediaview",
+ mwf = "application/mfer",
+ mxf = "application/mxf",
+ mxl = "application/recordare.musicxml",
+ mxml = "application/xv+xml",
+ mxs = "application/triscape.mxs",
+ mxu = "video/mpegurl",
+ n3 = "text/n3",
+ nb = "application/mathematica",
+ nbp = "application/wolfram.player",
+ nc = "application/netcdf",
+ ncx = "application/dtbncx+xml",
+ nfo = "text/nfo",
+ ngdat = "application/nokia.n-gage.data",
+ nitf = "application/nitf",
+ nix = "text/nix",
+ nlu = "application/neurolanguage.nlu",
+ nml = "application/enliven",
+ nnd = "application/noblenet-directory",
+ nns = "application/noblenet-sealer",
+ nnw = "application/noblenet-web",
+ npx = "image/net-fpx",
+ nsc = "application/conference",
+ nsf = "application/lotus-notes",
+ ntf = "application/nitf",
+ nzb = "application/nzb",
+ oa2 = "application/fujitsu.oasys2",
+ oa3 = "application/fujitsu.oasys3",
+ oas = "application/fujitsu.oasys",
+ obd = "application/msbinder",
+ obj = "application/tgif",
+ oda = "application/oda",
+ odb = "application/oasis.opendocument.database",
+ odc = "application/oasis.opendocument.chart",
+ odf = "application/oasis.opendocument.formula",
+ odft = "application/oasis.opendocument.formula-template",
+ odg = "application/oasis.opendocument.graphics",
+ odi = "application/oasis.opendocument.image",
+ odm = "application/oasis.opendocument.text-master",
+ odp = "application/oasis.opendocument.presentation",
+ ods = "application/oasis.opendocument.spreadsheet",
+ odt = "application/oasis.opendocument.text",
+ oga = "audio/ogg",
+ ogg = "audio/ogg",
+ ogv = "video/ogg",
+ ogx = "application/ogg",
+ omdoc = "application/omdoc+xml",
+ onepkg = "application/onenote",
+ onetmp = "application/onenote",
+ onetoc = "application/onenote",
+ onetoc2 = "application/onenote",
+ opf = "application/oebps-package+xml",
+ opml = "text/opml",
+ oprc = "application/palm",
+ opus = "audio/ogg",
+ org = "application/lotus-organizer",
+ osf = "application/yamaha.openscoreformat",
+ osfpvg = "application/yamaha.openscoreformat.osfpvg+xml",
+ otc = "application/oasis.opendocument.chart-template",
+ otf = "font/otf",
+ otg = "application/oasis.opendocument.graphics-template",
+ oth = "application/oasis.opendocument.text-web",
+ oti = "application/oasis.opendocument.image-template",
+ otp = "application/oasis.opendocument.presentation-template",
+ ots = "application/oasis.opendocument.spreadsheet-template",
+ ott = "application/oasis.opendocument.text-template",
+ oxps = "application/oxps",
+ oxt = "application/openofficeorg.extension",
+ p = "text/pascal",
+ p10 = "application/pkcs10",
+ p12 = "application/pkcs12",
+ p7b = "application/pkcs7-certificates",
+ p7c = "application/pkcs7-mime",
+ p7m = "application/pkcs7-mime",
+ p7r = "application/pkcs7-certreqresp",
+ p7s = "application/pkcs7-signature",
+ p8 = "application/pkcs8",
+ pas = "text/pascal",
+ patch = "text/diff",
+ paw = "application/pawaafile",
+ pbd = "application/powerbuilder6",
+ pbm = "image/portable-bitmap",
+ pcap = "application/tcpdump.pcap",
+ pcf = "application/font-pcf",
+ pcl = "application/hp-pcl",
+ pclxl = "application/hp-pclxl",
+ pct = "image/pict",
+ pcurl = "application/curl.pcurl",
+ pcx = "image/pcx",
+ pdb = "application/palm",
+ pdf = "application/pdf",
+ pfa = "application/font-type1",
+ pfb = "application/font-type1",
+ pfm = "application/font-type1",
+ pfr = "application/font-tdpfr",
+ pfx = "application/pkcs12",
+ pgm = "image/portable-graymap",
+ pgn = "application/chess-pgn",
+ pgp = "application/pgp-encrypted",
+ php = "text/php",
+ pic = "image/pict",
+ pkg = "application/octet-stream",
+ pki = "application/pkixcmp",
+ pkipath = "application/pkix-pkipath",
+ plb = "application/3gpp.pic-bw-large",
+ plc = "application/mobius.plc",
+ plf = "application/pocketlearn",
+ pls = "application/pls+xml",
+ pml = "application/ctc-posml",
+ png = "image/png",
+ pnm = "image/portable-anymap",
+ portpkg = "application/macports.portpkg",
+ pot = "application/ms-powerpoint",
+ potm = "application/ms-powerpoint.template.macroenabled.12",
+ potx = "application/openxmlformats-officedocument.presentationml.template",
+ ppam = "application/ms-powerpoint.addin.macroenabled.12",
+ ppd = "application/cups-ppd",
+ ppm = "image/portable-pixmap",
+ pps = "application/ms-powerpoint",
+ ppsm = "application/ms-powerpoint.slideshow.macroenabled.12",
+ ppsx = "application/openxmlformats-officedocument.presentationml.slideshow",
+ ppt = "application/ms-powerpoint",
+ pptm = "application/ms-powerpoint.presentation.macroenabled.12",
+ pptx = "application/openxmlformats-officedocument.presentationml.presentation",
+ pqa = "application/palm",
+ prc = "application/mobipocket-ebook",
+ pre = "application/lotus-freelance",
+ prf = "application/pics-rules",
+ ps = "application/postscript",
+ psb = "application/3gpp.pic-bw-small",
+ psd = "image/adobe.photoshop",
+ psf = "application/font-linux-psf",
+ pskcxml = "application/pskc+xml",
+ ptid = "application/pvi.ptid1",
+ pub = "application/mspublisher",
+ pvb = "application/3gpp.pic-bw-var",
+ pwn = "application/3m.post-it-notes",
+ py = "text/python",
+ pya = "audio/ms-playready.media.pya",
+ pyv = "video/ms-playready.media.pyv",
+ qam = "application/epson.quickanime",
+ qbo = "application/intu.qbo",
+ qfx = "application/intu.qfx",
+ qml = "text/qml",
+ qps = "application/publishare-delta-tree",
+ qt = "video/quicktime",
+ qwd = "application/quark.quarkxpress",
+ qwt = "application/quark.quarkxpress",
+ qxb = "application/quark.quarkxpress",
+ qxd = "application/quark.quarkxpress",
+ qxl = "application/quark.quarkxpress",
+ qxt = "application/quark.quarkxpress",
+ r = "text/r",
+ ra = "audio/pn-realaudio",
+ ram = "audio/pn-realaudio",
+ rar = "application/rar",
+ ras = "image/cmu-raster",
+ rb = "text/ruby",
+ rcprofile = "application/ipunplugged.rcprofile",
+ rdf = "application/rdf+xml",
+ rdz = "application/data-vision.rdz",
+ rep = "application/businessobjects",
+ res = "application/dtbresource+xml",
+ rgb = "image/rgb",
+ rif = "application/reginfo+xml",
+ rip = "audio/rip",
+ ris = "application/research-info-systems",
+ rl = "application/resource-lists+xml",
+ rlc = "image/fujixerox.edmics-rlc",
+ rld = "application/resource-lists-diff+xml",
+ rm = "application/rn-realmedia",
+ rmi = "audio/midi",
+ rmp = "audio/pn-realaudio-plugin",
+ rms = "application/jcp.javame.midlet-rms",
+ rmvb = "application/rn-realmedia-vbr",
+ rnc = "application/relax-ng-compact-syntax",
+ roa = "application/rpki-roa",
+ roff = "text/troff",
+ rp9 = "application/cloanto.rp9",
+ rpm = "application/rpm",
+ rpss = "application/nokia.radio-presets",
+ rpst = "application/nokia.radio-preset",
+ rq = "application/sparql-query",
+ rs = "text/rust",
+ rsd = "application/rsd+xml",
+ rss = "application/rss+xml",
+ rtf = "application/rtf",
+ rtx = "text/richtext",
+ s = "text/asm",
+ s3m = "audio/s3m",
+ saf = "application/yamaha.smaf-audio",
+ sbml = "application/sbml+xml",
+ sc = "application/ibm.secure-container",
+ scd = "application/msschedule",
+ scm = "application/lotus-screencam",
+ scq = "application/scvp-cv-request",
+ scs = "application/scvp-cv-response",
+ scss = "text/scss",
+ scurl = "text/curl.scurl",
+ sda = "application/stardivision.draw",
+ sdc = "application/stardivision.calc",
+ sdd = "application/stardivision.impress",
+ sdkd = "application/solent.sdkm+xml",
+ sdkm = "application/solent.sdkm+xml",
+ sdp = "application/sdp",
+ sdw = "application/stardivision.writer",
+ see = "application/seemail",
+ seed = "application/fdsn.seed",
+ sema = "application/sema",
+ semd = "application/semd",
+ semf = "application/semf",
+ ser = "application/java-serialized-object",
+ setpay = "application/set-payment-initiation",
+ setreg = "application/set-registration-initiation",
+ sfs = "application/spotfire.sfs",
+ sfv = "text/sfv",
+ sgi = "image/sgi",
+ sgl = "application/stardivision.writer-global",
+ sgm = "text/sgml",
+ sgml = "text/sgml",
+ sh = "text/shellscript",
+ shar = "application/shar",
+ shf = "application/shf+xml",
+ sid = "image/mrsid-image",
+ sig = "application/pgp-signature",
+ sil = "audio/silk",
+ silo = "model/mesh",
+ sis = "application/symbian.install",
+ sisx = "application/symbian.install",
+ sit = "application/stuffit",
+ sitx = "application/stuffitx",
+ skd = "application/koan",
+ skm = "application/koan",
+ skp = "application/koan",
+ skt = "application/koan",
+ sldm = "application/ms-powerpoint.slide.macroenabled.12",
+ sldx = "application/openxmlformats-officedocument.presentationml.slide",
+ slt = "application/epson.salt",
+ sm = "application/stepmania.stepchart",
+ smf = "application/stardivision.math",
+ smi = "application/smil+xml",
+ smil = "application/smil+xml",
+ smv = "video/smv",
+ smzip = "application/stepmania.package",
+ snd = "audio/basic",
+ snf = "application/font-snf",
+ so = "application/octet-stream",
+ spc = "application/pkcs7-certificates",
+ spf = "application/yamaha.smaf-phrase",
+ spl = "application/futuresplash",
+ spot = "text/in3d.spot",
+ spp = "application/scvp-vp-response",
+ spq = "application/scvp-vp-request",
+ spx = "audio/ogg",
+ sql = "application/sql",
+ src = "application/wais-source",
+ srt = "application/subrip",
+ sru = "application/sru+xml",
+ srx = "application/sparql-results+xml",
+ ssdl = "application/ssdl+xml",
+ sse = "application/kodak-descriptor",
+ ssf = "application/epson.ssf",
+ ssml = "application/ssml+xml",
+ st = "application/sailingtracker.track",
+ stc = "application/sun.xml.calc.template",
+ std = "application/sun.xml.draw.template",
+ stf = "application/wt.stf",
+ sti = "application/sun.xml.impress.template",
+ stk = "application/hyperstudio",
+ stl = "application/ms-pki.stl",
+ str = "application/pg.format",
+ stw = "application/sun.xml.writer.template",
+ sub = "text/dvb.subtitle",
+ sus = "application/sus-calendar",
+ susp = "application/sus-calendar",
+ sv4cpio = "application/sv4cpio",
+ sv4crc = "application/sv4crc",
+ svc = "application/dvb.service",
+ svd = "application/svd",
+ svg = "image/svg+xml",
+ svgz = "image/svg+xml",
+ swa = "application/director",
+ swf = "application/shockwave-flash",
+ swi = "application/aristanetworks.swi",
+ sxc = "application/sun.xml.calc",
+ sxd = "application/sun.xml.draw",
+ sxg = "application/sun.xml.writer.global",
+ sxi = "application/sun.xml.impress",
+ sxm = "application/sun.xml.math",
+ sxw = "application/sun.xml.writer",
+ t = "text/troff",
+ t3 = "application/t3vm-image",
+ taglet = "application/mynfc",
+ tao = "application/tao.intent-module-archive",
+ tar = "application/tar",
+ tcap = "application/3gpp2.tcap",
+ tcl = "application/tcl",
+ teacher = "application/smart.teacher",
+ tei = "application/tei+xml",
+ teicorpus = "application/tei+xml",
+ tex = "application/tex",
+ texi = "application/texinfo",
+ texinfo = "application/texinfo",
+ text = "text/plain",
+ tf = "text/hcl",
+ tfi = "application/thraud+xml",
+ tfm = "application/tex-tfm",
+ tfrc = "text/hcl",
+ tfstate = "application/json",
+ tfvars = "text/hcl",
+ tga = "image/tga",
+ thmx = "application/ms-officetheme",
+ tif = "image/tiff",
+ tiff = "image/tiff",
+ tmo = "application/tmobile-livetv",
+ toml = "text/toml",
+ torrent = "application/bittorrent",
+ tpl = "application/groove-tool-template",
+ tpt = "application/trid.tpt",
+ tr = "text/troff",
+ tra = "application/trueapp",
+ trm = "application/msterminal",
+ ts = "text/typescript",
+ tsd = "application/timestamped-data",
+ tsv = "text/tab-separated-values",
+ tsx = "text/tsx",
+ ttc = "font/collection",
+ ttf = "font/ttf",
+ ttl = "text/turtle",
+ twd = "application/simtech-mindmapper",
+ twds = "application/simtech-mindmapper",
+ txd = "application/genomatix.tuxedo",
+ txf = "application/mobius.txf",
+ txt = "text/plain",
+ u32 = "application/authorware-bin",
+ udeb = "application/debian-package",
+ ufd = "application/ufdl",
+ ufdl = "application/ufdl",
+ ulx = "application/glulx",
+ umj = "application/umajin",
+ unityweb = "application/unity",
+ uoml = "application/uoml+xml",
+ uri = "text/uri-list",
+ uris = "text/uri-list",
+ urls = "text/uri-list",
+ ustar = "application/ustar",
+ utz = "application/uiq.theme",
+ uu = "text/uuencode",
+ uva = "audio/dece.audio",
+ uvd = "application/dece.data",
+ uvf = "application/dece.data",
+ uvg = "image/dece.graphic",
+ uvh = "video/dece.hd",
+ uvi = "image/dece.graphic",
+ uvm = "video/dece.mobile",
+ uvp = "video/dece.pd",
+ uvs = "video/dece.sd",
+ uvt = "application/dece.ttml+xml",
+ uvu = "video/uvvu.mp4",
+ uvv = "video/dece.video",
+ uvva = "audio/dece.audio",
+ uvvd = "application/dece.data",
+ uvvf = "application/dece.data",
+ uvvg = "image/dece.graphic",
+ uvvh = "video/dece.hd",
+ uvvi = "image/dece.graphic",
+ uvvm = "video/dece.mobile",
+ uvvp = "video/dece.pd",
+ uvvs = "video/dece.sd",
+ uvvt = "application/dece.ttml+xml",
+ uvvu = "video/uvvu.mp4",
+ uvvv = "video/dece.video",
+ uvvx = "application/dece.unspecified",
+ uvvz = "application/dece.zip",
+ uvx = "application/dece.unspecified",
+ uvz = "application/dece.zip",
+ vcard = "text/vcard",
+ vcd = "application/cdlink",
+ vcf = "text/vcard",
+ vcg = "application/groove-vcard",
+ vcs = "text/vcalendar",
+ vcx = "application/vcx",
+ vis = "application/visionary",
+ viv = "video/vivo",
+ vob = "video/ms-vob",
+ vor = "application/stardivision.writer",
+ vox = "application/authorware-bin",
+ vrml = "model/vrml",
+ vsd = "application/visio",
+ vsf = "application/vsf",
+ vss = "application/visio",
+ vst = "application/visio",
+ vsw = "application/visio",
+ vtu = "model/vtu",
+ vxml = "application/voicexml+xml",
+ w3d = "application/director",
+ wad = "application/doom",
+ wasm = "application/wasm",
+ wav = "audio/wav",
+ wax = "audio/ms-wax",
+ wbmp = "image/wap.wbmp",
+ wbs = "application/criticaltools.wbs+xml",
+ wbxml = "application/wap.wbxml",
+ wcm = "application/ms-works",
+ wdb = "application/ms-works",
+ wdp = "image/ms-photo",
+ weba = "audio/webm",
+ webm = "video/webm",
+ webp = "image/webp",
+ wg = "application/pmi.widget",
+ wgt = "application/widget",
+ wks = "application/ms-works",
+ wm = "video/ms-wm",
+ wma = "audio/ms-wma",
+ wmd = "application/ms-wmd",
+ wmf = "application/msmetafile",
+ wml = "text/wap.wml",
+ wmlc = "application/wap.wmlc",
+ wmls = "text/wap.wmlscript",
+ wmlsc = "application/wap.wmlscriptc",
+ wmv = "video/ms-wmv",
+ wmx = "video/ms-wmx",
+ wmz = "application/ms-wmz",
+ woff = "font/woff",
+ woff2 = "font/woff2",
+ wpd = "application/wordperfect",
+ wpl = "application/ms-wpl",
+ wps = "application/ms-works",
+ wqd = "application/wqd",
+ wri = "application/mswrite",
+ wrl = "model/vrml",
+ wsdl = "application/wsdl+xml",
+ wspolicy = "application/wspolicy+xml",
+ wtb = "application/webturbo",
+ wvx = "video/ms-wvx",
+ x32 = "application/authorware-bin",
+ x3d = "model/x3d+xml",
+ x3db = "model/x3d+binary",
+ x3dbz = "model/x3d+binary",
+ x3dv = "model/x3d+vrml",
+ x3dvz = "model/x3d+vrml",
+ x3dz = "model/x3d+xml",
+ xaml = "application/xaml+xml",
+ xap = "application/silverlight-app",
+ xar = "application/xara",
+ xbap = "application/ms-xbap",
+ xbd = "application/fujixerox.docuworks.binder",
+ xbm = "image/xbitmap",
+ xdf = "application/xcap-diff+xml",
+ xdm = "application/syncml.dm+xml",
+ xdp = "application/adobe.xdp+xml",
+ xdssc = "application/dssc+xml",
+ xdw = "application/fujixerox.docuworks",
+ xenc = "application/xenc+xml",
+ xer = "application/patch-ops-error+xml",
+ xfdf = "application/adobe.xfdf",
+ xfdl = "application/xfdl",
+ xht = "application/xhtml+xml",
+ xhtml = "application/xhtml+xml",
+ xhvml = "application/xv+xml",
+ xif = "image/xiff",
+ xla = "application/ms-excel",
+ xlam = "application/ms-excel.addin.macroenabled.12",
+ xlc = "application/ms-excel",
+ xlf = "application/xliff+xml",
+ xlm = "application/ms-excel",
+ xls = "application/ms-excel",
+ xlsb = "application/ms-excel.sheet.binary.macroenabled.12",
+ xlsm = "application/ms-excel.sheet.macroenabled.12",
+ xlsx = "application/openxmlformats-officedocument.spreadsheetml.sheet",
+ xlt = "application/ms-excel",
+ xltm = "application/ms-excel.template.macroenabled.12",
+ xltx = "application/openxmlformats-officedocument.spreadsheetml.template",
+ xlw = "application/ms-excel",
+ xm = "audio/xm",
+ xml = "application/xml",
+ xo = "application/olpc-sugar",
+ xop = "application/xop+xml",
+ xpak = "application/gentoo.xpak",
+ xpi = "application/xpinstall",
+ xpl = "application/xproc+xml",
+ xpm = "image/xpixmap",
+ xpr = "application/is-xpr",
+ xps = "application/ms-xpsdocument",
+ xpw = "application/intercon.formnet",
+ xpx = "application/intercon.formnet",
+ xsl = "application/xml",
+ xslt = "application/xslt+xml",
+ xsm = "application/syncml+xml",
+ xspf = "application/xspf+xml",
+ xul = "application/mozilla.xul+xml",
+ xvm = "application/xv+xml",
+ xvml = "application/xv+xml",
+ xwd = "image/xwindowdump",
+ xyz = "chemical/xyz",
+ xz = "application/xz",
+ yaml = "text/yaml",
+ yang = "application/yang",
+ yin = "application/yin+xml",
+ yml = "text/yaml",
+ z1 = "application/zmachine",
+ z2 = "application/zmachine",
+ z3 = "application/zmachine",
+ z4 = "application/zmachine",
+ z5 = "application/zmachine",
+ z6 = "application/zmachine",
+ z7 = "application/zmachine",
+ z8 = "application/zmachine",
+ zaz = "application/zzazz.deck+xml",
+ zip = "application/zip",
+ zir = "application/zul",
+ zirz = "application/zul",
+ zmm = "application/handheld-entertainment+xml",
+ zsh = "text/shellscript",
+}
+
+local options = ya.sync(
+ function(st)
+ return {
+ with_files = st.with_files,
+ with_exts = st.with_exts,
+ fallback_file1 = st.fallback_file1,
+ }
+ end
+)
+
+local M = {}
+
+function M:setup(opts)
+ opts = opts or {}
+
+ self.with_files = opts.with_files
+ self.with_exts = opts.with_exts
+ self.fallback_file1 = opts.fallback_file1
+end
+
+function M:fetch(job)
+ local opts = options()
+ local merged_files = ya.dict_merge(FILES, opts.with_files or {})
+ local merged_exts = ya.dict_merge(EXTS, opts.with_exts or {})
+
+ local updates, unknown, state = {}, {}, {}
+ for i, file in ipairs(job.files) do
+ if file.cha.is_dummy then
+ state[i] = false
+ goto continue
+ end
+
+ local mime
+ if file.cha.len == 0 then
+ mime = "inode/empty"
+ else
+ mime = merged_files[(file.url.name or ""):lower()]
+ mime = mime or merged_exts[(file.url.ext or ""):lower()]
+ end
+
+ if mime then
+ updates[tostring(file.url)], state[i] = mime, true
+ elseif opts.fallback_file1 then
+ unknown[#unknown + 1] = file
+ else
+ updates[tostring(file.url)], state[i] = "application/octet-stream", true
+ end
+ ::continue::
+ end
+
+ if next(updates) then
+ ya.emit("update_mimes", { updates = updates })
+ end
+
+ if #unknown > 0 then
+ return self.fallback_builtin(job, unknown, state)
+ end
+
+ return state
+end
+
+function M.fallback_builtin(job, unknown, state)
+ local indices = {}
+ for i, f in ipairs(job.files) do
+ indices[f:hash()] = i
+ end
+
+ local result = require("mime"):fetch(ya.dict_merge(job, { files = unknown }))
+ for i, f in ipairs(unknown) do
+ if type(result) == "table" then
+ state[indices[f:hash()]] = result[i]
+ else
+ state[indices[f:hash()]] = result
+ end
+ end
+ return state
+end
+
+return M