diff --git a/packages/cli/package.json b/packages/cli/package.json index f62b098244..694f48cffb 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -77,6 +77,7 @@ "@types/jsonwebtoken": "^8.3.4", "basic-auth": "^2.0.1", "body-parser": "^1.18.3", + "body-parser-xml": "^1.1.0", "compression": "^1.7.4", "connect-history-api-fallback": "^1.6.0", "convict": "^5.0.0", diff --git a/packages/cli/src/Server.ts b/packages/cli/src/Server.ts index a888694702..d40374915f 100644 --- a/packages/cli/src/Server.ts +++ b/packages/cli/src/Server.ts @@ -7,6 +7,7 @@ import { getConnectionManager, } from 'typeorm'; import * as bodyParser from 'body-parser'; +require('body-parser-xml')(bodyParser); import * as history from 'connect-history-api-fallback'; import * as requestPromise from 'request-promise-native'; @@ -235,6 +236,14 @@ class App { req.rawBody = buf; }})); + // Support application/xml type post data + // @ts-ignore + this.app.use(bodyParser.xml({ limit: "16mb", xmlParseOptions: { + normalize: true, // Trim whitespace inside text nodes + normalizeTags: true, // Transform tags to lowercase + explicitArray: false // Only put properties in array if length > 1 + } })); + // Make sure that Vue history mode works properly this.app.use(history({ rewrites: [