aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/body-parser/lib/utils.js
diff options
context:
space:
mode:
authorpack <pack@packgekko.xyz>2026-08-09 10:37:07 +0000
committerpack <pack@packgekko.xyz>2026-08-09 10:37:07 +0000
commit55a4f1fc869e41aca748c63d3018f0448b1606e0 (patch)
treed132d1d01772b6d53faee3e63c534dea5706b78a /node_modules/body-parser/lib/utils.js
downloadcrud-55a4f1fc869e41aca748c63d3018f0448b1606e0.tar.gz
first commit
Diffstat (limited to 'node_modules/body-parser/lib/utils.js')
-rw-r--r--node_modules/body-parser/lib/utils.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/node_modules/body-parser/lib/utils.js b/node_modules/body-parser/lib/utils.js
new file mode 100644
index 0000000..7a0dda4
--- /dev/null
+++ b/node_modules/body-parser/lib/utils.js
@@ -0,0 +1,100 @@
+'use strict'
+
+/**
+ * Module dependencies.
+ */
+
+const bytes = require('bytes')
+const contentType = require('content-type')
+const typeis = require('type-is')
+
+/**
+ * Module exports.
+ */
+module.exports = {
+ getCharset,
+ normalizeOptions,
+ passthrough
+}
+
+/**
+ * Get the charset of a request.
+ *
+ * @param {Object} req
+ * @returns {string | undefined}
+ * @private
+ */
+function getCharset (req) {
+ const header = req.headers['content-type']
+ if (!header) return undefined
+ return contentType.parse(header).parameters.charset?.toLowerCase()
+}
+
+/**
+ * Get the simple type checker.
+ *
+ * @param {string | string[]} type
+ * @returns {Function}
+ * @private
+ */
+function typeChecker (type) {
+ return function checkType (req) {
+ return Boolean(typeis(req, type))
+ }
+}
+
+/**
+ * Normalizes the common options for all parsers.
+ *
+ * @param {Object} options options to normalize
+ * @param {string | string[] | Function} defaultType default content type(s) or a function to determine it
+ * @returns {Object}
+ * @private
+ */
+function normalizeOptions (options, defaultType) {
+ if (!defaultType) {
+ // Parsers must define a default content type
+ throw new TypeError('defaultType must be provided')
+ }
+
+ const inflate = options?.inflate !== false
+ const limit = typeof options?.limit === 'undefined' || options?.limit === null
+ ? 102400 // 100kb default
+ : bytes.parse(options.limit)
+ const type = options?.type || defaultType
+ const verify = options?.verify || false
+ const defaultCharset = options?.defaultCharset || 'utf-8'
+
+ if (limit === null) {
+ throw new TypeError(`option limit "${String(options.limit)}" is invalid`)
+ }
+
+ if (verify !== false && typeof verify !== 'function') {
+ throw new TypeError('option verify must be function')
+ }
+
+ // create the appropriate type checking function
+ const shouldParse = typeof type !== 'function'
+ ? typeChecker(type)
+ : type
+
+ return {
+ inflate,
+ limit,
+ verify,
+ defaultCharset,
+ shouldParse
+ }
+}
+
+/**
+ * Passthrough function that returns input unchanged.
+ * Used by parsers that don't need to transform the data.
+ *
+ * @param {*} value
+ * @returns {*}
+ * @private
+ */
+function passthrough (value) {
+ return value
+}