aboutsummaryrefslogtreecommitdiffstats
path: root/backend/node_modules/mime/src/build.js
diff options
context:
space:
mode:
authorLeonardo Bishop <me@leonardobishop.com>2023-11-04 21:28:11 +0000
committerLeonardo Bishop <me@leonardobishop.com>2023-11-04 21:28:11 +0000
commit7d8cca54e548d2a85287fd2325db88f2697be55a (patch)
tree3daa82c6a709363f2f08d9f875d849e4babe1f8f /backend/node_modules/mime/src/build.js
parente1633f3348ff7fc5e9131eeae2f2feba09f04838 (diff)
Add more shit
Diffstat (limited to 'backend/node_modules/mime/src/build.js')
-rwxr-xr-xbackend/node_modules/mime/src/build.js53
1 files changed, 53 insertions, 0 deletions
diff --git a/backend/node_modules/mime/src/build.js b/backend/node_modules/mime/src/build.js
new file mode 100755
index 0000000..4928e48
--- /dev/null
+++ b/backend/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'));