summaryrefslogtreecommitdiff
path: root/node_modules/mime/src/build.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-11-28 17:14:38 +0100
committerMinteck <contact@minteck.org>2022-11-28 17:14:38 +0100
commit18efd30a263ec0d79a26a82cbd8c90c9f81056b7 (patch)
treeaea01bf3506dda706719fc68eb37b77ed9ef3fe8 /node_modules/mime/src/build.js
downloadautoreport-18efd30a263ec0d79a26a82cbd8c90c9f81056b7.tar.gz
autoreport-18efd30a263ec0d79a26a82cbd8c90c9f81056b7.tar.bz2
autoreport-18efd30a263ec0d79a26a82cbd8c90c9f81056b7.zip
Open sourceHEADmane
Diffstat (limited to 'node_modules/mime/src/build.js')
-rwxr-xr-xnode_modules/mime/src/build.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/node_modules/mime/src/build.js b/node_modules/mime/src/build.js
new file mode 100755
index 0000000..4928e48
--- /dev/null
+++ b/node_modules/mime/src/build.js
@@ -0,0 +1,53 @@
+#!/usr/bin/env node
+
+'use strict';
+
+const fs = require('fs');
+const path = require('path');
+const mimeScore = require('mime-score');
+
+let db = require('mime-db');
+let chalk = require('chalk');
+
+const STANDARD_FACET_SCORE = 900;
+
+const byExtension = {};
+
+// Clear out any conflict extensions in mime-db
+for (let type in db) {
+ let entry = db[type];
+ entry.type = type;
+
+ if (!entry.extensions) continue;
+
+ entry.extensions.forEach(ext => {
+ if (ext in byExtension) {
+ const e0 = entry;
+ const e1 = byExtension[ext];
+ e0.pri = mimeScore(e0.type, e0.source);
+ e1.pri = mimeScore(e1.type, e1.source);
+
+ let drop = e0.pri < e1.pri ? e0 : e1;
+ let keep = e0.pri >= e1.pri ? e0 : e1;
+ drop.extensions = drop.extensions.filter(e => e !== ext);
+
+ console.log(`${ext}: Keeping ${chalk.green(keep.type)} (${keep.pri}), dropping ${chalk.red(drop.type)} (${drop.pri})`);
+ }
+ byExtension[ext] = entry;
+ });
+}
+
+function writeTypesFile(types, path) {
+ fs.writeFileSync(path, JSON.stringify(types));
+}
+
+// Segregate into standard and non-standard types based on facet per
+// https://tools.ietf.org/html/rfc6838#section-3.1
+const types = {};
+
+Object.keys(db).sort().forEach(k => {
+ const entry = db[k];
+ types[entry.type] = entry.extensions;
+});
+
+writeTypesFile(types, path.join(__dirname, '..', 'types.json'));