refactor: Upgrade to mime 4.0.4 (#9363)

This commit is contained in:
Antoine Cormouls
2024-10-23 20:03:48 +02:00
committed by GitHub
parent 412e72463e
commit 3a9442a42f
5 changed files with 36 additions and 58 deletions

81
package-lock.json generated
View File

@@ -36,7 +36,7 @@
"ldapjs": "3.0.7", "ldapjs": "3.0.7",
"lodash": "4.17.21", "lodash": "4.17.21",
"lru-cache": "10.4.0", "lru-cache": "10.4.0",
"mime": "3.0.0", "mime": "4.0.4",
"mongodb": "5.9.0", "mongodb": "5.9.0",
"mustache": "4.2.0", "mustache": "4.2.0",
"otpauth": "9.3.4", "otpauth": "9.3.4",
@@ -2747,6 +2747,18 @@
"node": ">=14" "node": ">=14"
} }
}, },
"node_modules/@google-cloud/storage/node_modules/mime": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"optional": true,
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/@google-cloud/storage/node_modules/uuid": { "node_modules/@google-cloud/storage/node_modules/uuid": {
"version": "8.3.2", "version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -4849,21 +4861,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@saithodev/semantic-release-backmerge/node_modules/mime": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
"integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"dev": true,
"funding": [
"https://github.com/sponsors/broofa"
],
"bin": {
"mime": "bin/cli.js"
},
"engines": {
"node": ">=16"
}
},
"node_modules/@saithodev/semantic-release-backmerge/node_modules/mimic-fn": { "node_modules/@saithodev/semantic-release-backmerge/node_modules/mimic-fn": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
@@ -5364,21 +5361,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/@semantic-release/github/node_modules/mime": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
"integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"dev": true,
"funding": [
"https://github.com/sponsors/broofa"
],
"bin": {
"mime": "bin/cli.js"
},
"engines": {
"node": ">=16"
}
},
"node_modules/@semantic-release/github/node_modules/path-type": { "node_modules/@semantic-release/github/node_modules/path-type": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
@@ -13303,14 +13285,17 @@
} }
}, },
"node_modules/mime": { "node_modules/mime": {
"version": "3.0.0", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"funding": [
"https://github.com/sponsors/broofa"
],
"bin": { "bin": {
"mime": "cli.js" "mime": "bin/cli.js"
}, },
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=16"
} }
}, },
"node_modules/mime-db": { "node_modules/mime-db": {
@@ -23400,6 +23385,12 @@
"uuid": "^8.0.0" "uuid": "^8.0.0"
}, },
"dependencies": { "dependencies": {
"mime": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
"optional": true
},
"uuid": { "uuid": {
"version": "8.3.2", "version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
@@ -24914,12 +24905,6 @@
"integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==",
"dev": true "dev": true
}, },
"mime": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
"integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"dev": true
},
"mimic-fn": { "mimic-fn": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
@@ -25259,12 +25244,6 @@
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==",
"dev": true "dev": true
}, },
"mime": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
"integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==",
"dev": true
},
"path-type": { "path-type": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
@@ -31117,9 +31096,9 @@
} }
}, },
"mime": { "mime": {
"version": "3.0.0", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.4.tgz",
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" "integrity": "sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ=="
}, },
"mime-db": { "mime-db": {
"version": "1.52.0", "version": "1.52.0",

View File

@@ -45,7 +45,7 @@
"ldapjs": "3.0.7", "ldapjs": "3.0.7",
"lodash": "4.17.21", "lodash": "4.17.21",
"lru-cache": "10.4.0", "lru-cache": "10.4.0",
"mime": "3.0.0", "mime": "4.0.4",
"mongodb": "5.9.0", "mongodb": "5.9.0",
"mustache": "4.2.0", "mustache": "4.2.0",
"otpauth": "9.3.4", "otpauth": "9.3.4",

View File

@@ -3,7 +3,6 @@ import { randomHexString } from '../cryptoUtils';
import AdaptableController from './AdaptableController'; import AdaptableController from './AdaptableController';
import { validateFilename, FilesAdapter } from '../Adapters/Files/FilesAdapter'; import { validateFilename, FilesAdapter } from '../Adapters/Files/FilesAdapter';
import path from 'path'; import path from 'path';
import mime from 'mime';
const Parse = require('parse').Parse; const Parse = require('parse').Parse;
const legacyFilesRegex = new RegExp( const legacyFilesRegex = new RegExp(
@@ -19,7 +18,7 @@ export class FilesController extends AdaptableController {
const extname = path.extname(filename); const extname = path.extname(filename);
const hasExtension = extname.length > 0; const hasExtension = extname.length > 0;
const mime = (await import('mime')).default
if (!hasExtension && contentType && mime.getExtension(contentType)) { if (!hasExtension && contentType && mime.getExtension(contentType)) {
filename = filename + '.' + mime.getExtension(contentType); filename = filename + '.' + mime.getExtension(contentType);
} else if (hasExtension && !contentType) { } else if (hasExtension && !contentType) {

View File

@@ -1,6 +1,5 @@
import { GraphQLNonNull } from 'graphql'; import { GraphQLNonNull } from 'graphql';
import { request } from 'http'; import { request } from 'http';
import { getExtension } from 'mime';
import { mutationWithClientMutationId } from 'graphql-relay'; import { mutationWithClientMutationId } from 'graphql-relay';
import Parse from 'parse/node'; import Parse from 'parse/node';
import * as defaultGraphQLTypes from './defaultGraphQLTypes'; import * as defaultGraphQLTypes from './defaultGraphQLTypes';
@@ -17,8 +16,9 @@ const handleUpload = async (upload, config) => {
delete headers['host']; delete headers['host'];
delete headers['content-length']; delete headers['content-length'];
const stream = createReadStream(); const stream = createReadStream();
const mime = (await import('mime')).default;
try { try {
const ext = getExtension(mimetype); const ext = mime.getExtension(mimetype);
const fullFileName = filename.endsWith(`.${ext}`) ? filename : `${filename}.${ext}`; const fullFileName = filename.endsWith(`.${ext}`) ? filename : `${filename}.${ext}`;
const serverUrl = new URL(config.serverURL); const serverUrl = new URL(config.serverURL);
const fileInfo = await new Promise((resolve, reject) => { const fileInfo = await new Promise((resolve, reject) => {

View File

@@ -3,7 +3,6 @@ import BodyParser from 'body-parser';
import * as Middlewares from '../middlewares'; import * as Middlewares from '../middlewares';
import Parse from 'parse/node'; import Parse from 'parse/node';
import Config from '../Config'; import Config from '../Config';
import mime from 'mime';
import logger from '../logger'; import logger from '../logger';
const triggers = require('../triggers'); const triggers = require('../triggers');
const http = require('http'); const http = require('http');
@@ -67,7 +66,7 @@ export class FilesRouter {
return router; return router;
} }
getHandler(req, res) { async getHandler(req, res) {
const config = Config.get(req.params.appId); const config = Config.get(req.params.appId);
if (!config) { if (!config) {
res.status(403); res.status(403);
@@ -77,6 +76,7 @@ export class FilesRouter {
} }
const filesController = config.filesController; const filesController = config.filesController;
const filename = req.params.filename; const filename = req.params.filename;
const mime = (await import('mime')).default;
const contentType = mime.getType(filename); const contentType = mime.getType(filename);
if (isFileStreamable(req, filesController)) { if (isFileStreamable(req, filesController)) {
filesController.handleFileStream(config, filename, req, res, contentType).catch(() => { filesController.handleFileStream(config, filename, req, res, contentType).catch(() => {