@dioxide-js/silas
Version:
RPC utility for Silas
1 lines • 26.5 kB
Source Map (JSON)
{"version":3,"file":"form_data.mjs","sources":["../../../../../node_modules/form-data/lib/form_data.js"],"sourcesContent":["var CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar Stream = require('stream').Stream;\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar populate = require('./populate.js');\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData(options);\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {};\n for (var option in options) {\n this[option] = options[option];\n }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n options = options || {};\n\n // allow filename as single option\n if (typeof options == 'string') {\n options = {filename: options};\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value == 'number') {\n value = '' + value;\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (Array.isArray(value)) {\n // Please convert your array into string\n // the way web server expects it\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n var valueLength = 0;\n\n // used w/ getLengthSync(), when length is known.\n // e.g. for streaming directly from a remote server,\n // w/ a known file a size, and not wanting to wait for\n // incoming file to finish to get its size.\n if (options.knownLength != null) {\n valueLength += +options.knownLength;\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength +=\n Buffer.byteLength(header) +\n FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response or not a stream\n if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n if (value.hasOwnProperty('fd')) {\n\n // take read range into a account\n // `end` = Infinity –> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function(err, stat) {\n\n var fileSize;\n\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (value.hasOwnProperty('httpVersion')) {\n callback(null, +value.headers['content-length']);\n\n // or request stream http://github.com/mikeal/request\n } else if (value.hasOwnProperty('httpModule')) {\n // wait till response come back\n value.on('response', function(response) {\n value.pause();\n callback(null, +response.headers['content-length']);\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream');\n }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n // custom header specified (as string)?\n // it becomes responsible for boundary\n // (e.g. to handle extra CRLFs on .NET servers)\n if (typeof options.header == 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header == 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) {\n if (!headers.hasOwnProperty(prop)) continue;\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue;\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n var filename\n , contentDisposition\n ;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || value.name || value.path) {\n // custom filename take precedence\n // formidable and the browser add a name property\n // fs- and request- streams have path property\n filename = path.basename(options.filename || value.name || value.path);\n } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n contentDisposition = 'filename=\"' + filename + '\"';\n }\n\n return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && typeof value == 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n return function(next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = (this._streams.length === 0);\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) {\n if (userHeaders.hasOwnProperty(header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function(boundary) {\n this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function() {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype.getBuffer = function() {\n var dataBuffer = new Buffer.alloc( 0 );\n var boundary = this.getBoundary();\n\n // Create the form content. Add Line breaks to the end of data.\n for (var i = 0, len = this._streams.length; i < len; i++) {\n if (typeof this._streams[i] !== 'function') {\n\n // Add content to the buffer.\n if(Buffer.isBuffer(this._streams[i])) {\n dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);\n }else {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);\n }\n\n // Add break after content.\n if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );\n }\n }\n }\n\n // Add the footer and return the Buffer object.\n return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );\n};\n\nFormData.prototype._generateBoundary = function() {\n // This generates a 50 character boundary similar to those used by Firefox.\n // They are optimized for boyer-moore parsing.\n var boundary = '--------------------------';\n for (var i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n\n this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n // so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n // Some async length retrievers are present\n // therefore synchronous length calculation is false.\n // Please use getLength(callback) to get proper length\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function(length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function(params, cb) {\n var request\n , options\n , defaults = {method: 'post'}\n ;\n\n // parse provided url if it's string\n // or treat it as options object\n if (typeof params == 'string') {\n\n params = parseUrl(params);\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n\n // use custom params\n } else {\n\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol == 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol == 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function(err, length) {\n if (err && err !== 'Unknown stream') {\n this._error(err);\n return;\n }\n\n // add content length\n if (length) {\n request.setHeader('Content-Length', length);\n }\n\n this.pipe(request);\n if (cb) {\n var onResponse;\n\n var callback = function (error, responce) {\n request.removeListener('error', callback);\n request.removeListener('response', onResponse);\n\n return cb.call(this, error, responce);\n };\n\n onResponse = callback.bind(this, null);\n\n request.on('error', callback);\n request.on('response', onResponse);\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function(err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\n"],"names":["require$$0","require$$2","require$$5","require$$7","require$$8","require$$9","require$$10"],"mappings":"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","x_google_ignoreList":[0]}