@eeplatform/core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/delayed-stream/lib/delayed_stream.js","../node_modules/combined-stream/lib/combined_stream.js","../node_modules/mime-db/db.json","../node_modules/mime-db/index.js","../node_modules/mime-types/index.js","../node_modules/asynckit/lib/defer.js","../node_modules/asynckit/lib/async.js","../node_modules/asynckit/lib/abort.js","../node_modules/asynckit/lib/iterate.js","../node_modules/asynckit/lib/state.js","../node_modules/asynckit/lib/terminator.js","../node_modules/asynckit/parallel.js","../node_modules/asynckit/serialOrdered.js","../node_modules/asynckit/serial.js","../node_modules/asynckit/index.js","../node_modules/es-object-atoms/index.js","../node_modules/es-errors/index.js","../node_modules/es-errors/eval.js","../node_modules/es-errors/range.js","../node_modules/es-errors/ref.js","../node_modules/es-errors/syntax.js","../node_modules/es-errors/type.js","../node_modules/es-errors/uri.js","../node_modules/math-intrinsics/abs.js","../node_modules/math-intrinsics/floor.js","../node_modules/math-intrinsics/max.js","../node_modules/math-intrinsics/min.js","../node_modules/math-intrinsics/pow.js","../node_modules/math-intrinsics/round.js","../node_modules/math-intrinsics/isNaN.js","../node_modules/math-intrinsics/sign.js","../node_modules/gopd/gOPD.js","../node_modules/gopd/index.js","../node_modules/es-define-property/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-symbols/index.js","../node_modules/get-proto/Reflect.getPrototypeOf.js","../node_modules/get-proto/Object.getPrototypeOf.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/call-bind-apply-helpers/functionCall.js","../node_modules/call-bind-apply-helpers/functionApply.js","../node_modules/call-bind-apply-helpers/reflectApply.js","../node_modules/call-bind-apply-helpers/actualApply.js","../node_modules/call-bind-apply-helpers/index.js","../node_modules/dunder-proto/get.js","../node_modules/get-proto/index.js","../node_modules/hasown/index.js","../node_modules/get-intrinsic/index.js","../node_modules/has-tostringtag/shams.js","../node_modules/es-set-tostringtag/index.js","../node_modules/form-data/lib/populate.js","../node_modules/form-data/lib/form_data.js","../node_modules/proxy-from-env/index.js","../node_modules/debug/node_modules/ms/index.js","../node_modules/debug/src/debug.js","../node_modules/debug/src/browser.js","../node_modules/debug/src/node.js","../node_modules/debug/src/index.js","../node_modules/follow-redirects/debug.js","../node_modules/follow-redirects/index.js","../src/models/verification.model.ts","../src/repositories/verification.repository.ts","../src/services/verification.service.ts","../src/config.ts","../src/repositories/user.repository.ts","../src/models/user.model.ts","../src/repositories/member.repository.ts","../src/models/member.model.ts","../src/controllers/verification.controller.ts","../src/models/token.model.ts","../src/repositories/token.repository.ts","../src/services/user.service.ts","../src/repositories/file.repository.ts","../src/models/file.model.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/platform/node/classes/FormData.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/node/index.js","../node_modules/axios/lib/platform/node/classes/URLSearchParams.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/adapters/http.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/fromDataURI.js","../node_modules/axios/lib/helpers/AxiosTransformStream.js","../node_modules/axios/lib/helpers/formDataToStream.js","../node_modules/axios/lib/helpers/readBlob.js","../node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js","../node_modules/axios/lib/helpers/callbackify.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/services/xendit.service.ts","../src/models/customer.mode.ts","../src/models/payment.model.ts","../src/repositories/role.repository.ts","../src/models/role.model.ts","../src/controllers/user.controller.ts","../src/services/auth.service.ts","../src/controllers/auth.controller.ts","../src/services/file.service.ts","../src/controllers/file.controller.ts","../src/controllers/role.controller.ts","../src/models/entity.model.ts","../src/repositories/entity.repository.ts","../src/controllers/entity.controller.ts","../src/models/subscription.model.ts","../src/repositories/subscription.repository.ts","../src/services/subscription.service.ts","../src/repositories/organization.repository.ts","../src/models/organization.model.ts","../src/repositories/address.repository.ts","../src/models/address.model.ts","../src/repositories/promo-code.repository.ts","../src/validations/promo-code.schema.ts","../src/models/promo-code.model.ts","../src/repositories/invoice.repository.ts","../src/models/invoice.model.ts","../src/repositories/counter.repository.ts","../src/models/counter.model.ts","../src/repositories/payment.repository.ts","../src/repositories/price.repository.ts","../src/models/price.model.ts","../src/services/paypal.service.ts","../src/controllers/subscription.controller.ts","../src/validations/subscription.schema.ts","../src/models/payment-method.model.ts","../src/repositories/payment-method.repository.ts","../src/services/payment-method.service.ts","../src/controllers/payment-method.controller.ts","../src/controllers/address.controller.ts","../src/services/organization.service.ts","../src/controllers/organization.controller.ts","../src/controllers/member.controller.ts","../src/controllers/promo-code.controller.ts","../src/models/order.model.ts","../src/validations/order.schema.ts","../src/repositories/order.repository.ts","../src/controllers/order.controller.ts","../src/services/invoice.service.ts","../src/controllers/invoice.controller.ts","../src/controllers/payment.controller.ts","../src/controllers/price.controller.ts"],"sourcesContent":["var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n","{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n","var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n","// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n","var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n","// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n","var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n","var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n","module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar $TypeError = require('es-errors/type');\n\nvar toStringTag = hasToStringTag ? Symbol.toStringTag : null;\n\n/** @type {import('.')} */\nmodule.exports = function setToStringTag(object, value) {\n\tvar overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force;\n\tvar nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable;\n\tif (\n\t\t(typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean')\n\t\t|| (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean')\n\t) {\n\t\tthrow new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans');\n\t}\n\tif (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) {\n\t\tif ($defineProperty) {\n\t\t\t$defineProperty(object, toStringTag, {\n\t\t\t\tconfigurable: !nonConfigurable,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value,\n\t\t\t\twritable: false\n\t\t\t});\n\t\t} else {\n\t\t\tobject[toStringTag] = value; // eslint-disable-line no-param-reassign\n\t\t}\n\t}\n};\n","'use strict';\n\n// populates missing values\nmodule.exports = function (dst, src) {\n Object.keys(src).forEach(function (prop) {\n dst[prop] = dst[prop] || src[prop]; // eslint-disable-line no-param-reassign\n });\n\n return dst;\n};\n","'use strict';\n\nvar 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 crypto = require('crypto');\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar setToStringTag = require('es-set-tostringtag');\nvar hasOwn = require('hasown');\nvar populate = require('./populate.js');\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 || {}; // eslint-disable-line no-param-reassign\n for (var option in options) { // eslint-disable-line no-restricted-syntax\n this[option] = options[option];\n }\n}\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function (field, value, options) {\n options = options || {}; // eslint-disable-line no-param-reassign\n\n // allow filename as single option\n if (typeof options === 'string') {\n options = { filename: options }; // eslint-disable-line no-param-reassign\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' || value == null) {\n value = String(value); // eslint-disable-line no-param-reassign\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (Array.isArray(value)) {\n /*\n * Please convert your array into string\n * the way web server expects it\n */\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 /*\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 */\n if (options.knownLength != null) {\n valueLength += Number(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 += Buffer.byteLength(header) + 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 && hasOwn(value, '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 if (hasOwn(value, 'fd')) {\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 // 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)); // eslint-disable-line callback-return\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 if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n var fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (hasOwn(value, 'httpVersion')) {\n callback(null, Number(value.headers['content-length'])); // eslint-disable-line callback-return\n\n // or request stream http://github.com/mikeal/request\n } else if (hasOwn(value, 'httpModule')) {\n // wait till response come back\n value.on('response', function (response) {\n value.pause();\n callback(null, Number(response.headers['content-length']));\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream'); // eslint-disable-line callback-return\n }\n};\n\nFormData.prototype._multiPartHeader = function (field, value, options) {\n /*\n * custom header specified (as string)?\n * it becomes responsible for boundary\n * (e.g. to handle extra CRLFs on .NET servers)\n */\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) { // eslint-disable-line no-restricted-syntax\n if (hasOwn(headers, prop)) {\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue; // eslint-disable-line no-restricted-syntax, no-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\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function (value, options) { // eslint-disable-line consistent-return\n var filename;\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 && (value.name || value.path))) {\n /*\n * custom filename take precedence\n * formidable and the browser add a name property\n * fs- and request- streams have path property\n */\n filename = path.basename(options.filename || (value && (value.name || value.path)));\n } else if (value && value.readable && hasOwn(value, 'httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n return 'filename=\"' + filename + '\"';\n }\n};\n\nFormData.prototype._getContentType = function (value, options) {\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value && value.readable && hasOwn(value, '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 && value && 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) { // eslint-disable-line no-restricted-syntax\n if (hasOwn(userHeaders, header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function (boundary) {\n if (typeof boundary !== 'string') {\n throw new TypeError('FormData boundary must be a string');\n }\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); // eslint-disable-line new-cap\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 // 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\n // They are optimized for boyer-moore parsing.\n this._boundary = '--------------------------' + crypto.randomBytes(12).toString('hex');\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually 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 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 /*\n * Some async length retrievers are present\n * therefore synchronous length calculation is false.\n * Please use getLength(callback) to get proper length\n */\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 var options;\n var defaults = { method: 'post' };\n\n // parse provided url if it's string or treat it as options object\n if (typeof params === 'string') {\n params = parseUrl(params); // eslint-disable-line no-param-reassign\n /* eslint sort-keys: 0 */\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n } else { // use custom params\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); // eslint-disable-line no-invalid-this\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};\nsetToStringTag(FormData, 'FormData');\n\n// Public API\nmodule.exports = FormData;\n","'use strict';\n\nvar parseUrl = require('url').parse;\n\nvar DEFAULT_PORTS = {\n ftp: 21,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n};\n\nvar stringEndsWith = String.prototype.endsWith || function(s) {\n return s.length <= this.length &&\n this.indexOf(s, this.length - s.length) !== -1;\n};\n\n/**\n * @param {string|object} url - The URL, or the result from url.parse.\n * @return {string} The URL of the proxy that should handle the request to the\n * given URL. If no proxy is set, this will be an empty string.\n */\nfunction getProxyForUrl(url) {\n var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};\n var proto = parsedUrl.protocol;\n var hostname = parsedUrl.host;\n var port = parsedUrl.port;\n if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {\n return ''; // Don't proxy URLs without a valid scheme or host.\n }\n\n proto = proto.split(':', 1)[0];\n // Stripping ports in this way instead of using parsedUrl.hostname to make\n // sure that the brackets around IPv6 addresses are kept.\n hostname = hostname.replace(/:\\d*$/, '');\n port = parseInt(port) || DEFAULT_PORTS[proto] || 0;\n if (!shouldProxy(hostname, port)) {\n return ''; // Don't proxy URLs that match NO_PROXY.\n }\n\n var proxy =\n getEnv('npm_config_' + proto + '_proxy') ||\n getEnv(proto + '_proxy') ||\n getEnv('npm_config_proxy') ||\n getEnv('all_proxy');\n if (proxy && proxy.indexOf('://') === -1) {\n // Missing scheme in proxy, default to the requested URL's scheme.\n proxy = proto + '://' + proxy;\n }\n return proxy;\n}\n\n/**\n * Determines whether a given URL should be proxied.\n *\n * @param {string} hostname - The host name of the URL.\n * @param {number} port - The effective port of the URL.\n * @returns {boolean} Whether the given URL should be proxied.\n * @private\n */\nfunction shouldProxy(hostname, port) {\n var NO_PROXY =\n (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();\n if (!NO_PROXY) {\n return true; // Always proxy if NO_PROXY is not set.\n }\n if (NO_PROXY === '*') {\n return false; // Never proxy if wildcard is set.\n }\n\n return NO_PROXY.split(/[,\\s]/).every(function(proxy) {\n if (!proxy) {\n return true; // Skip zero-length hosts.\n }\n var parsedProxy = proxy.match(/^(.+):(\\d+)$/);\n var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;\n var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;\n if (parsedProxyPort && parsedProxyPort !== port) {\n return true; // Skip if ports don't match.\n }\n\n if (!/^[.*]/.test(parsedProxyHostname)) {\n // No wildcards, so stop proxying if there is an exact match.\n return hostname !== parsedProxyHostname;\n }\n\n if (parsedProxyHostname.charAt(0) === '*') {\n // Remove leading wildcard.\n parsedProxyHostname = parsedProxyHostname.slice(1);\n }\n // Stop proxying if the hostname ends with the no_proxy host.\n return !stringEndsWith.call(hostname, parsedProxyHostname);\n });\n}\n\n/**\n * Get the value for an environment variable.\n *\n * @param {string} key - The name of the environment variable.\n * @return {string} The value of the environment variable.\n * @private\n */\nfunction getEnv(key) {\n return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';\n}\n\nexports.getProxyForUrl = getProxyForUrl;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isNaN(val) === false) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^((?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n if (ms >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (ms >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (ms >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (ms >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n return plural(ms, d, 'day') ||\n plural(ms, h, 'hour') ||\n plural(ms, m, 'minute') ||\n plural(ms, s, 'second') ||\n ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, n, name) {\n if (ms < n) {\n return;\n }\n if (ms < n * 1.5) {\n return Math.floor(ms / n) + ' ' + name;\n }\n return Math.ceil(ms / n) + ' ' + name + 's';\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = createDebug.debug = createDebug['default'] = createDebug;\nexports.coerce = coerce;\nexports.disable = disable;\nexports.enable = enable;\nexports.enabled = enabled;\nexports.humanize = require('ms');\n\n/**\n * The currently active debug mode names, and names to skip.\n */\n\nexports.names = [];\nexports.skips = [];\n\n/**\n * Map of special \"%n\" handling functions, for the debug \"format\" argument.\n *\n * Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n */\n\nexports.formatters = {};\n\n/**\n * Previous log timestamp.\n */\n\nvar prevTime;\n\n/**\n * Select a color.\n * @param {String} namespace\n * @return {Number}\n * @api private\n */\n\nfunction selectColor(namespace) {\n var hash = 0, i;\n\n for (i in namespace) {\n hash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n\n return exports.colors[Math.abs(hash) % exports.colors.length];\n}\n\n/**\n * Create a debugger with the given `namespace`.\n *\n * @param {String} namespace\n * @return {Function}\n * @api public\n */\n\nfunction createDebug(namespace) {\n\n function debug() {\n // disabled?\n if (!debug.enabled) return;\n\n var self = debug;\n\n // set `diff` timestamp\n var curr = +new Date();\n var ms = curr - (prevTime || curr);\n self.diff = ms;\n self.prev = prevTime;\n self.curr = curr;\n prevTime = curr;\n\n // turn the `arguments` into a proper Array\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n args[0] = exports.coerce(args[0]);\n\n if ('string' !== typeof args[0]) {\n // anything else let's inspect with %O\n args.unshift('%O');\n }\n\n // apply any `formatters` transformations\n var index = 0;\n args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {\n // if we encounter an escaped % then don't increase the array index\n if (match === '%%') return match;\n index++;\n var formatter = exports.formatters[format];\n if ('function' === typeof formatter) {\n var val = args[index];\n match = formatter.call(self, val);\n\n // now we need to remove `args[index]` since it's inlined in the `format`\n args.splice(index, 1);\n index--;\n }\n return match;\n });\n\n // apply env-specific formatting (colors, etc.)\n exports.formatArgs.call(self, args);\n\n var logFn = debug.log || exports.log || console.log.bind(console);\n logFn.apply(self, args);\n }\n\n debug.namespace = namespace;\n debug.enabled = exports.enabled(namespace);\n debug.useColors = exports.useColors();\n debug.color = selectColor(namespace);\n\n // env-specific initialization logic for debug instances\n if ('function' === typeof exports.init) {\n exports.init(debug);\n }\n\n return debug;\n}\n\n/**\n * Enables a debug mode by namespaces. This can include modes\n * separated by a colon and wildcards.\n *\n * @param {String} namespaces\n * @api public\n */\n\nfunction enable(namespaces) {\n exports.save(namespaces);\n\n exports.names = [];\n exports.skips = [];\n\n var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n var len = split.length;\n\n for (var i = 0; i < len; i++) {\n if (!split[i]) continue; // ignore empty strings\n namespaces = split[i].replace(/\\*/g, '.*?');\n if (namespaces[0] === '-') {\n exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n } else {\n exports.names.push(new RegExp('^' + namespaces + '$'));\n }\n }\n}\n\n/**\n * Disable debug output.\n *\n * @api public\n */\n\nfunction disable() {\n exports.enable('');\n}\n\n/**\n * Returns true if the given mode name is enabled, false otherwise.\n *\n * @param {String} name\n * @return {Boolean}\n * @api public\n */\n\nfunction enabled(name) {\n var i, len;\n for (i = 0, len = exports.skips.length; i < len; i++) {\n if (exports.skips[i].test(name)) {\n return false;\n }\n }\n for (i = 0, len = exports.names.length; i < len; i++) {\n if (exports.names[i].test(name)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Coerce `val`.\n *\n * @param {Mixed} val\n * @return {Mixed}\n * @api private\n */\n\nfunction coerce(val) {\n if (val instanceof Error) return val.stack || val.message;\n return val;\n}\n","/**\n * This is the web browser implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = 'undefined' != typeof chrome\n && 'undefined' != typeof chrome.storage\n ? chrome.storage.local\n : localstorage();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n 'lightseagreen',\n 'forestgreen',\n 'goldenrod',\n 'dodgerblue',\n 'darkorchid',\n 'crimson'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {\n return true;\n }\n\n // is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n // is firebug? http://stackoverflow.com/a/398120/376773\n (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n // is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n // double check webkit in userAgent just in case we are in a worker\n (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nexports.formatters.j = function(v) {\n try {\n return JSON.stringify(v);\n } catch (err) {\n return '[UnexpectedJSONParseError]: ' + err.message;\n }\n};\n\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var useColors = this.useColors;\n\n args[0] = (useColors ? '%c' : '')\n + this.namespace\n + (useColors ? ' %c' : ' ')\n + args[0]\n + (useColors ? '%c ' : ' ')\n + '+' + exports.humanize(this.diff);\n\n if (!useColors) return;\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit')\n\n // the final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function(match) {\n if ('%%' === match) return;\n index++;\n if ('%c' === match) {\n // we only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n\n args.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\nfunction log() {\n // this hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n return 'object' === typeof console\n && console.log\n && Function.prototype.apply.call(console.log, console, arguments);\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n try {\n if (null == namespaces) {\n exports.storage.removeItem('debug');\n } else {\n exports.storage.debug = namespaces;\n }\n } catch(e) {}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n var r;\n try {\n r = exports.storage.debug;\n } catch(e) {}\n\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = process.env.DEBUG;\n }\n\n return r;\n}\n\n/**\n * Enable namespaces listed in `localStorage.debug` initially.\n */\n\nexports.enable(load());\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n try {\n return window.localStorage;\n } catch (e) {}\n}\n","/**\n * Module dependencies.\n */\n\nvar tty = require('tty');\nvar util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n *\n * Expose `debug()` as the module.\n */\n\nexports = module.exports = require('./debug');\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(function (key) {\n return /^debug_/i.test(key);\n}).reduce(function (obj, key) {\n // camel-case\n var prop = key\n .substring(6)\n .toLowerCase()\n .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });\n\n // coerce string value into JS value\n var val = process.env[key];\n if (/^(yes|on|true|enabled)$/i.test(val)) val = true;\n else if (/^(no|off|false|disabled)$/i.test(val)) val = false;\n else if (val === 'null') val = null;\n else val = Number(val);\n\n obj[prop] = val;\n return obj;\n}, {});\n\n/**\n * The file descriptor to write the `debug()` calls to.\n * Set the `DEBUG_FD` env variable to override with another value. i.e.:\n *\n * $ DEBUG_FD=3 node script.js 3>debug.log\n */\n\nvar fd = parseInt(process.env.DEBUG_FD, 10) || 2;\n\nif (1 !== fd && 2 !== fd) {\n util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()\n}\n\nvar stream = 1 === fd ? process.stdout :\n 2 === fd ? process.stderr :\n createWritableStdioStream(fd);\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n return 'colors' in exports.inspectOpts\n ? Boolean(exports.inspectOpts.colors)\n : tty.isatty(fd);\n}\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nexports.formatters.o = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts)\n .split('\\n').map(function(str) {\n return str.trim()\n }).join(' ');\n};\n\n/**\n * Map %o to `util.inspect()`, allowing multiple lines if needed.\n */\n\nexports.formatters.O = function(v) {\n this.inspectOpts.colors = this.useColors;\n return util.inspect(v, this.inspectOpts);\n};\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n var name = this.namespace;\n var useColors = this.useColors;\n\n if (useColors) {\n var c = this.color;\n var prefix = ' \\u001b[3' + c + ';1m' + name + ' ' + '\\u001b[0m';\n\n args[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n args.push('\\u001b[3' + c + 'm+' + exports.humanize(this.diff) + '\\u001b[0m');\n } else {\n args[0] = new Date().toUTCString()\n + ' ' + name + ' ' + args[0];\n }\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to `stream`.\n */\n\nfunction log() {\n return stream.write(util.format.apply(util, arguments) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\nfunction save(namespaces) {\n if (null == namespaces) {\n // If you set a process.env field to null or undefined, it gets cast to the\n // string 'null' or 'undefined'. Just delete instead.\n delete process.env.DEBUG;\n } else {\n process.env.DEBUG = namespaces;\n }\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n return process.env.DEBUG;\n}\n\n/**\n * Copied from `node/src/node.js`.\n *\n * XXX: It's lame that node doesn't expose this API out-of-the-box. It also\n * relies on the undocumented `tty_wrap.guessHandleType()` which is also lame.\n */\n\nfunction createWritableStdioStream (fd) {\n var stream;\n var tty_wrap = process.binding('tty_wrap');\n\n // Note stream._type is used for test-module-load-list.js\n\n switch (tty_wrap.guessHandleType(fd)) {\n case 'TTY':\n stream = new tty.WriteStream(fd);\n stream._type = 'tty';\n\n // Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n case 'FILE':\n var fs = require('fs');\n stream = new fs.SyncWriteStream(fd, { autoClose: false });\n stream._type = 'fs';\n break;\n\n case 'PIPE':\n case 'TCP':\n var net = require('net');\n stream = new net.Socket({\n fd: fd,\n readable: false,\n writable: true\n });\n\n // FIXME Should probably have an option in net.Socket to create a\n // stream from an existing fd which is writable only. But for now\n // we'll just add this hack and set the `readable` member to false.\n // Test: ./node test/fixtures/echo.js < /etc/passwd\n stream.readable = false;\n stream.read = null;\n stream._type = 'pipe';\n\n // FIXME Hack to have stream not keep the event loop alive.\n // See https://github.com/joyent/node/issues/1726\n if (stream._handle && stream._handle.unref) {\n stream._handle.unref();\n }\n break;\n\n default:\n // Probably an error on in uv_guess_handle()\n throw new Error('Implement me. Unknown stream file type!');\n }\n\n // For supporting legacy API we put the FD here.\n stream.fd = fd;\n\n stream._isStdio = true;\n\n return stream;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init (debug) {\n debug.inspectOpts = {};\n\n var keys = Object.keys(exports.inspectOpts);\n for (var i = 0; i < keys.length; i++) {\n debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n }\n}\n\n/**\n * Enable namespaces listed in `process.env.DEBUG` initially.\n */\n\nexports.enable(load());\n","/**\n * Detect Electron renderer process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process !== 'undefined' && process.type === 'renderer') {\n module.exports = require('./browser.js');\n} else {\n module.exports = require('./node.js');\n}\n","var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Preventive platform detection\n// istanbul ignore next\n(function detectUnsupportedEnvironment() {\n var looksLikeNode = typeof process !== \"undefined\";\n var looksLikeBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n var looksLikeV8 = isFunction(Error.captureStackTrace);\n if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {\n console.warn(\"The follow-redirects package should be excluded from browser builds.\");\n }\n}());\n\n// Whether to use the native URL object or the legacy url module\nvar useNativeURL = false;\ntry {\n assert(new URL(\"\"));\n}\ncatch (error) {\n useNativeURL = error.code === \"ERR_INVALID_URL\";\n}\n\n// URL fields to preserve in copy operations\nvar preservedUrlFields = [\n \"auth\",\n \"host\",\n \"hostname\",\n \"href\",\n \"path\",\n \"pathname\",\n \"port\",\n \"protocol\",\n \"query\",\n \"search\",\n \"hash\",\n];\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\n// Error types with codes\nvar InvalidUrlError = createErrorType(\n \"ERR_INVALID_URL\",\n \"Invalid URL\",\n TypeError\n);\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\",\n RedirectionError\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// istanbul ignore next\nvar destroy = Writable.prototype.destroy || noop;\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n try {\n self._processResponse(response);\n }\n catch (cause) {\n self.emit(\"error\", cause instanceof RedirectionError ?\n cause : new RedirectionError({ cause: cause }));\n }\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n destroyRequest(this._currentRequest);\n this._currentRequest.abort();\n this.emit(\"abort\");\n};\n\nRedirectableRequest.prototype.destroy = function (error) {\n destroyRequest(this._currentRequest, error);\n destroy.call(this, error);\n return this;\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!isString(data) && !isBuffer(data)) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (isFunction(data)) {\n callback = data;\n data = encoding = null;\n }\n else if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n self.removeListener(\"close\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n this.on(\"close\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n throw new TypeError(\"Unsupported protocol \" + protocol);\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.slice(0, -1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request and set up its event handlers\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n request._redirectable = this;\n for (var event of events) {\n request.on(event, eventHandlers[event]);\n }\n\n // RFC7230§5.3.1: When making a request directly to an origin server, […]\n // a client MUST send only the absolute path […] as the request-target.\n this._currentUrl = /^\\//.test(this._options.path) ?\n url.format(this._options) :\n // When making a request to a proxy, […]\n // a client MUST send the target URI in absolute-form […].\n this._options.path;\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n // istanbul ignore else\n if (request === self._currentRequest) {\n // Report any write errors\n // istanbul ignore if\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n // istanbul ignore else\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n\n // If the response is not a redirect; return it as-is\n var location = response.headers.location;\n if (!location || this._options.followRedirects === false ||\n statusCode < 300 || statusCode >= 400) {\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n return;\n }\n\n // The response is a redirect, so abort the current request\n destroyRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n throw new TooManyRedirectsError();\n }\n\n // Store the request headers if applicable\n var requestHeaders;\n var beforeRedirect = this._options.beforeRedirect;\n if (beforeRedirect) {\n requestHeaders = Object.assign({\n // The Host header was set by nativeProtocol.request\n Host: response.req.getHeader(\"host\"),\n }, this._options.headers);\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n var method = this._options.method;\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = parseUrl(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Create the redirected request\n var redirectUrl = resolveUrl(location, currentUrl);\n debug(\"redirecting to\", redirectUrl.href);\n this._isRedirect = true;\n spreadUrlObject(redirectUrl, this._options);\n\n // Drop confidential headers when redirecting to a less secure protocol\n // or to a different domain that is not a superdomain\n if (redirectUrl.protocol !== currentUrlParts.protocol &&\n redirectUrl.protocol !== \"https:\" ||\n redirectUrl.host !== currentHost &&\n !isSubdomain(redirectUrl.host, currentHost)) {\n removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (isFunction(beforeRedirect)) {\n var responseDetails = {\n headers: response.headers,\n statusCode: statusCode,\n };\n var requestDetails = {\n url: currentUrl,\n method: method,\n headers: requestHeaders,\n };\n beforeRedirect(this._options, responseDetails, requestDetails);\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n this._performRequest();\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters, ensuring that input is an object\n if (isURL(input)) {\n input = spreadUrlObject(input);\n }\n else if (isString(input)) {\n input = spreadUrlObject(parseUrl(input));\n }\n else {\n callback = options;\n options = validateUrl(input);\n input = { protocol: protocol };\n }\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n if (!isString(options.host) && !isString(options.hostname)) {\n options.hostname = \"::1\";\n }\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\nfunction noop() { /* empty */ }\n\nfunction parseUrl(input) {\n var parsed;\n // istanbul ignore else\n if (useNativeURL) {\n parsed = new URL(input);\n }\n else {\n // Ensure the URL is valid and absolute\n parsed = validateUrl(url.parse(input));\n if (!isString(parsed.protocol)) {\n throw new InvalidUrlError({ input });\n }\n }\n return parsed;\n}\n\nfunction resolveUrl(relative, base) {\n // istanbul ignore next\n return useNativeURL ? new URL(relative, base) : parseUrl(url.resolve(base, relative));\n}\n\nfunction validateUrl(input) {\n if (/^\\[/.test(input.hostname) && !/^\\[[:0-9a-f]+\\]$/i.test(input.hostname)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n if (/^\\[/.test(input.host) && !/^\\[[:0-9a-f]+\\](:\\d+)?$/i.test(input.host)) {\n throw new InvalidUrlError({ input: input.href || input });\n }\n return input;\n}\n\nfunction spreadUrlObject(urlObject, target) {\n var spread = target || {};\n for (var key of preservedUrlFields) {\n spread[key] = urlObject[key];\n }\n\n // Fix IPv6 hostname\n if (spread.hostname.startsWith(\"[\")) {\n spread.hostname = spread.hostname.slice(1, -1);\n }\n // Ensure port is a number\n if (spread.port !== \"\") {\n spread.port = Number(spread.port);\n }\n // Concatenate path\n spread.path = spread.search ? spread.pathname + spread.search : spread.pathname;\n\n return spread;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n // Create constructor\n function CustomError(properties) {\n // istanbul ignore else\n if (isFunction(Error.captureStackTrace)) {\n Error.captureStackTrace(this, this.constructor);\n }\n Object.assign(this, properties || {});\n this.code = code;\n this.message = this.cause ? message + \": \" + this.cause.message : message;\n }\n\n // Attach constructor and set default properties\n CustomError.prototype = new (baseClass || Error)();\n Object.defineProperties(CustomError.prototype, {\n constructor: {\n value: CustomError,\n enumerable: false,\n },\n name: {\n value: \"Error [\" + code + \"]\",\n enumerable: false,\n },\n });\n return CustomError;\n}\n\nfunction destroyRequest(request, error) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.destroy(error);\n}\n\nfunction isSubdomain(subdomain, domain) {\n assert(isString(subdomain) && isString(domain));\n var dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isString(value) {\n return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n return typeof value === \"object\" && (\"length\" in value);\n}\n\nfunction isURL(value) {\n return URL && value instanceof URL;\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { ObjectId } from \"mongodb\";\n\nexport type TVerificationMetadata = {\n name?: string;\n app?: string;\n role?: string;\n roleName?: string;\n referralCode?: string;\n org?: string | ObjectId;\n orgName?: string;\n};\n\nexport type TVerification = {\n _id?: ObjectId;\n type: string;\n email: string;\n metadata?: TVerificationMetadata;\n status?: string;\n createdAt: string;\n updatedAt?: string | null;\n expireAt: string;\n};\n\nexport class MVerification implements TVerification {\n _id?: ObjectId;\n type: string;\n email: string;\n metadata?: TVerificationMetadata;\n status?: string;\n createdAt: string;\n updatedAt?: string | null;\n expireAt: string;\n\n constructor(value: TVerification) {\n this._id = value._id ?? new ObjectId();\n this.type = value.type ?? \"\";\n this.email = value.email ?? \"\";\n\n if (this.metadata?.org) {\n try {\n this.metadata.org = new ObjectId(this.metadata?.org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n }\n\n this.metadata = value.metadata ?? {};\n this.status = value.status ?? \"pending\";\n this.createdAt = value.createdAt ?? new Date();\n this.updatedAt = value.updatedAt ?? null;\n this.expireAt = value.expireAt ?? new Date(Date.now() + 3600 * 1000);\n }\n}\n","import {\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MVerification, TVerification } from \"../models/verification.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function useVerificationRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"verifications\";\n\n const collection = db.collection(namespace_collection);\n\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndex([\n { email: 1 },\n { type: 1 },\n { status: 1 },\n { \"metadata.org\": 1 },\n ]);\n } catch (error) {\n throw new InternalServerError(\"Failed to create index.\");\n }\n }\n\n async function createTextIndex() {\n try {\n await collection.createIndex({\n email: \"text\",\n });\n } catch (error) {\n throw new Error(\"Failed to create text index on email.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex(\n {\n email: 1,\n type: 1,\n \"metadata.app\": 1,\n \"metadata.org\": 1,\n status: 1,\n },\n { unique: true, partialFilterExpression: { status: \"pending\" } }\n );\n } catch (error) {\n throw new Error(\"Failed to create text index on email.\");\n }\n }\n\n async function add(value: TVerification, session?: ClientSession) {\n value = new MVerification(value);\n try {\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId;\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n const isDuplicatedEmail = error.message.includes(\"email\");\n const isDuplicatedUserInvite = error.message.includes(\"user-invite\");\n\n if (isDuplicated && isDuplicatedEmail && isDuplicatedUserInvite) {\n throw new BadRequestError(\"User has a pending invitation.\");\n }\n\n if (isDuplicated) {\n throw new BadRequestError(\"Item name already exists.\");\n }\n\n throw new InternalServerError(\"Server internal error.\");\n }\n }\n\n async function getById(_id: ObjectId | string) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n id: _id.toString(),\n });\n const cached = await getCache<TVerification>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getById verification: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TVerification>({ _id });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for verification by id: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for verification by id: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve verification.\"\n );\n }\n }\n\n async function getVerifications(\n {\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"active\",\n type = \"\",\n email = \"\",\n app = \"\",\n } = {} as {\n search?: string;\n page?: number;\n limit?: number;\n sort?: Record<string, number>;\n status?: string;\n type?: string | Array<string>;\n email?: string;\n app?: string;\n }\n ) {\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { status };\n const cacheKeyOptions: Record<string, any> = { status, limit, page };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n cacheKeyOptions.sort = JSON.stringify(sort);\n\n if (app) {\n query[\"metadata.app\"] = app;\n cacheKeyOptions.app = app;\n }\n\n if (search) {\n query.$text = { $search: search };\n cacheKeyOptions.search = search;\n }\n\n if (Array.isArray(type)) {\n query.type = { $in: type };\n cacheKeyOptions.type = JSON.stringify(type);\n } else if (type) {\n query.type = type;\n cacheKeyOptions.type = type;\n }\n\n if (email) {\n query.email = email;\n cacheKeyOptions.email = email;\n }\n\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, cacheKeyOptions);\n const cached = await getCache<TVerification[]>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getVerifications: ${cacheKey}`,\n });\n return cached;\n }\n\n try {\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n {\n $project: {\n _id: 1,\n createdAt: 1,\n email: 1,\n type: 1,\n metadata: 1,\n status: 1,\n },\n },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getVerifications: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getVerifications: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw error;\n }\n }\n\n async function getByIdByType(type: string) {\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n type: type,\n });\n const cached = await getCache<Array<TVerification>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByIdByType verification: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection\n .find<Array<TVerification>>({ type })\n .toArray();\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for verification by type: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for verification by type: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n async function updateStatusById(\n _id: ObjectId | string,\n status: string,\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n const result = await collection.updateOne(\n { _id },\n { $set: { status, updatedAt: new Date().toISOString() } },\n { session }\n );\n delCachedData();\n return result;\n } catch (error) {\n throw new InternalServerError(\"Error updating verification status.\");\n }\n }\n\n return {\n createIndex,\n createTextIndex,\n createUniqueIndex,\n add,\n getVerifications,\n getById,\n getByIdByType,\n updateStatusById,\n };\n}\n","import {\n useMailer,\n compileHandlebar,\n logger,\n getDirectory,\n BadRequestError,\n NotFoundError,\n InternalServerError,\n useAtlas,\n} from \"@eeplatform/nodejs-utils\";\nimport {\n TVerification,\n TVerificationMetadata,\n} from \"../models/verification.model\";\nimport { useVerificationRepo } from \"../repositories/verification.repository\";\nimport {\n APP_MAIN,\n MAILER_EMAIL,\n MAILER_PASSWORD,\n MAILER_TRANSPORT_HOST,\n MAILER_TRANSPORT_PORT,\n MAILER_TRANSPORT_SECURE,\n VERIFICATION_FORGET_PASSWORD_DURATION,\n VERIFICATION_USER_INVITE_DURATION,\n} from \"../config\";\n\nimport { useUserRepo } from \"../repositories/user.repository\";\nimport { TKeyValuePair } from \"../models/local.model\";\nimport { useMemberRepo } from \"../repositories/member.repository\";\n\nexport function useVerificationService() {\n const MailerConfig = {\n host: MAILER_TRANSPORT_HOST,\n port: MAILER_TRANSPORT_PORT,\n secure: MAILER_TRANSPORT_SECURE,\n email: MAILER_EMAIL,\n password: MAILER_PASSWORD,\n };\n\n const mailer = new useMailer(MailerConfig);\n\n const {\n add,\n getById: _getById,\n updateStatusById: _updateStatusById,\n getVerifications: _getVerifications,\n } = useVerificationRepo();\n const { getUserByEmail, getUserByReferralCode } = useUserRepo();\n const { add: addMember } = useMemberRepo();\n\n async function createUserInvite({\n email,\n metadata,\n }: {\n email: string;\n metadata: TVerificationMetadata;\n }) {\n const value: TVerification = {\n type: \"user-invite\",\n email,\n metadata,\n expireAt: new Date(\n new Date().getTime() + 72 * 60 * 60 * 1000\n ).toISOString(), // 72 hours (3 days) from now\n createdAt: new Date().toISOString(),\n };\n\n if (!metadata.app) {\n throw new BadRequestError(\"App metadata is required.\");\n }\n\n if (!metadata.org || !metadata.orgName) {\n throw new BadRequestError(\"Organization metadata is required.\");\n }\n\n try {\n const user = await getUserByEmail(email);\n const dir = __dirname;\n if (user) {\n value.type = \"member-invite\";\n const res = await add(value);\n const filePath = getDirectory(dir, \"./public/handlebars/member-invite\");\n\n const emailContent = compileHandlebar({\n context: {\n validity: VERIFICATION_USER_INVITE_DURATION,\n link: `${APP_MAIN}/verify/member-invite/${res}`,\n organization_name: metadata.orgName,\n },\n filePath,\n });\n\n mailer\n .sendMail({\n to: email,\n subject: \"Member Invite\",\n html: emailContent,\n from: metadata.orgName || \"GoWeekDays\",\n })\n .catch((error) => {\n logger.log({\n level: \"error\",\n message: `Error sending user invite email: ${error}`,\n });\n });\n\n return res;\n }\n\n const res = await add(value);\n\n const filePath = getDirectory(dir, \"./public/handlebars/user-invite\");\n\n const emailContent = compileHandlebar({\n context: {\n validity: VERIFICATION_USER_INVITE_DURATION,\n link: `${APP_MAIN}/verify/invitation/${res}`,\n },\n filePath,\n });\n\n mailer\n .sendMail({\n to: email,\n subject: \"User Invite\",\n html: emailContent,\n from: \"GoWeekDays\",\n })\n .catch((error) => {\n logger.log({\n level: \"error\",\n message: `Error sending user invite email: ${error}`,\n });\n });\n\n return res;\n } catch (error) {\n throw error;\n }\n }\n\n async function createForgetPassword(email: string) {\n const value: TVerification = {\n type: \"forget-password\",\n email,\n expireAt: new Date(new Date().getTime() + 10 * 60 * 1000).toISOString(), // 10 minutes from now\n createdAt: new Date().toISOString(),\n };\n\n try {\n const res = await add(value);\n\n const dir = __dirname;\n\n const filePath = getDirectory(dir, \"./public/handlebars/forget-password\");\n\n const emailContent = compileHandlebar({\n context: {\n validity: VERIFICATION_FORGET_PASSWORD_DURATION,\n link: `${APP_MAIN}/reset-password/${res}`,\n },\n filePath,\n });\n\n mailer\n .sendMail({\n to: email,\n subject: \"Forget Password\",\n from: \"GoWeekdays\",\n html: emailContent,\n })\n .catch((error) => {\n logger.log({\n level: \"error\",\n message: `Error sending forget password email: ${error}`,\n });\n });\n\n return \"Successfully created a link to reset password. Please check your email.\";\n } catch (error) {\n throw new InternalServerError(\"Failed to create forget password link.\");\n }\n }\n\n async function getById(id: string) {\n try {\n const _id = await _getById(id);\n if (!_id) {\n throw new NotFoundError(\"Verification not found.\");\n }\n return _id;\n } catch (error) {\n throw error;\n }\n }\n\n async function getVerifications({\n search = \"\",\n page = 1,\n status = \"\",\n type = \"\",\n email = \"\",\n limit = 10,\n app = \"\",\n } = {}) {\n try {\n return await _getVerifications({\n search,\n page,\n status,\n type,\n limit,\n email,\n app,\n });\n } catch (error) {\n throw error;\n }\n }\n\n function errorByType(type: string, status?: string) {\n if (type === \"user-invite\" && status === \"expired\") {\n throw new BadRequestError(\n \"Invitation has already expired, please contact admin to resend the invitation.\"\n );\n }\n\n if (type === \"user-sign-up\" && status === \"expired\") {\n throw new BadRequestError(\n \"Sign up verification has expired, please sign up again to get a new verification link.\"\n );\n }\n\n if (type === \"user-invite\" && status === \"complete\") {\n throw new BadRequestError(\n \"User already registered, please login to continue.\"\n );\n }\n\n if (type === \"forget-password\" && status === \"complete\") {\n throw new BadRequestError(\n \"Forget password verification has already been used, please request a new one.\"\n );\n }\n\n if (type === \"forget-password\" && status === \"expired\") {\n throw new BadRequestError(\n \"Forget password verification has expired, please request a new one.\"\n );\n }\n\n throw new BadRequestError(\"Invalid verification.\");\n }\n\n async function verify(id: string) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n\n try {\n const _id = await _getById(id);\n if (!_id) {\n throw new NotFoundError(\"Verification not found.\");\n }\n\n if (_id.status === \"expired\") {\n errorByType(_id.type, \"expired\");\n }\n\n if (_id.status === \"complete\") {\n throw new BadRequestError(\"Verification already completed.\");\n }\n\n const expiration = new Date(_id.expireAt).getTime();\n const now = new Date().getTime();\n if (now > expiration) {\n await _updateStatusById(id, \"expired\", session);\n\n errorByType(_id.type, \"expired\");\n\n await session?.commitTransaction();\n }\n\n if (_id.type === \"member-invite\") {\n await _updateStatusById(id, \"complete\", session);\n const user = await getUserByEmail(_id.email);\n if (!user) {\n throw new NotFoundError(\"User not found for member invite.\");\n }\n\n if (!_id.metadata?.app) {\n throw new BadRequestError(\n \"App metadata is required for member invite.\"\n );\n }\n\n if (!_id.metadata?.org || !_id.metadata?.orgName) {\n throw new BadRequestError(\n \"Organization metadata is required for member invite.\"\n );\n }\n\n if (!_id.metadata?.role || !_id.metadata?.roleName) {\n throw new BadRequestError(\n \"Role metadata is required for member invite.\"\n );\n }\n\n await addMember(\n {\n user: user._id?.toString() ?? \"\",\n type: _id.metadata?.app,\n org: _id.metadata?.org,\n orgName: _id.metadata?.orgName,\n role: _id.metadata?.role,\n roleName: _id.metadata?.roleName,\n name: `${user.firstName} ${user.lastName}`,\n },\n session\n );\n\n await session?.commitTransaction();\n\n return \"Member invitation verified successfully.\";\n }\n\n return _id;\n } catch (error) {\n await session?.abortTransaction();\n logger.log({\n level: \"info\",\n message: `Error verifying user invitation: ${error}`,\n });\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function cancelUserInvitation(id: string) {\n try {\n await updateStatusById(id, \"cancelled\");\n } catch (error) {\n throw new InternalServerError(\n `Error cancelling user invitation: ${error}`\n );\n }\n }\n\n async function updateStatusById(_id: string, status: string) {\n try {\n await _updateStatusById(_id, status);\n return \"Successfully updated verification status.\";\n } catch (error) {\n throw error;\n }\n }\n\n async function signUp({\n email,\n metadata,\n }: {\n email: string;\n metadata: TKeyValuePair;\n }) {\n try {\n if (\n metadata &&\n metadata.referralCode &&\n typeof metadata.referralCode === \"string\"\n ) {\n const code = await getUserByReferralCode(metadata.referralCode);\n\n if (!code) {\n throw new BadRequestError(\"Invalid referral code.\");\n }\n }\n const user = await getUserByEmail(email);\n\n if (user) {\n throw new BadRequestError(\n `Email ${email} is already registered, please login to continue.`\n );\n }\n\n const value: TVerification = {\n type: \"user-sign-up\",\n email,\n metadata,\n expireAt: new Date(new Date().getTime() + 5 * 60 * 1000).toISOString(), // 5mins from now\n createdAt: new Date().toISOString(),\n };\n\n const res = await add(value);\n\n const dir = __dirname;\n\n const filePath = getDirectory(dir, \"./public/handlebars/sign-up\");\n\n const emailContent = compileHandlebar({\n context: {\n validity: \"5 minutes\",\n link: `${APP_MAIN}/sign-up/${res}`,\n },\n filePath,\n });\n\n mailer\n .sendMail({\n to: email,\n subject: \"Sign Up Verification\",\n html: emailContent,\n from: \"GoWeekdays\",\n })\n .catch((error) => {\n logger.log({\n level: \"error\",\n message: `Error sending user invite email: ${error}`,\n });\n });\n\n return res;\n } catch (error) {\n throw error;\n }\n }\n\n return {\n createForgetPassword,\n createUserInvite,\n verify,\n getById,\n getVerifications,\n cancelUserInvitation,\n updateStatusById,\n signUp,\n };\n}\n","import * as dotenv from \"dotenv\";\ndotenv.config();\n\nexport const MONGO_URI = (process.env.MONGO_URI ||\n \"mongodb://localhost:27017\") as string;\nexport const MONGO_DB = (process.env.MONGO_DB || \"default\") as string;\n\nexport const PORT = Number(process.env.PORT || 3001);\nexport const SECRET_KEY = process.env.SECRET_KEY as string;\nexport const isDev = process.env.NODE_ENV !== \"production\";\n\nexport const MAILER_TRANSPORT_HOST = process.env\n .MAILER_TRANSPORT_HOST as string;\nexport const MAILER_TRANSPORT_PORT = Number(\n process.env.MAILER_TRANSPORT_PORT || 465\n);\nexport const MAILER_TRANSPORT_SECURE =\n process.env.MAILER_TRANSPORT_SECURE === \"true\";\nexport const MAILER_EMAIL = process.env.MAILER_EMAIL as string;\nexport const MAILER_PASSWORD = process.env.MAILER_PASSWORD as string;\n\nexport const ACCESS_TOKEN_SECRET =\n (process.env.ACCESS_TOKEN_SECRET as string) || \"access_token_secret\";\nexport const REFRESH_TOKEN_SECRET =\n (process.env.REFRESH_TOKEN_SECRET as string) || \"refresh_token_secret\";\nexport const ACCESS_TOKEN_EXPIRY =\n (process.env.ACCESS_TOKEN_EXPIRY as string) || \"15s\";\nexport const REFRESH_TOKEN_EXPIRY =\n (process.env.REFRESH_TOKEN_EXPIRY as string) || \"30d\";\n\nexport const APP_ACCOUNT =\n (process.env.APP_ACCOUNT as string) || \"http://localhost:3001\";\nexport const APP_MAIN =\n (process.env.APP_MAIN as string) || \"http://localhost:3000\";\nexport const VERIFICATION_FORGET_PASSWORD_DURATION =\n (process.env.VERIFICATION_FORGET_PASSWORD_DURATION as string) || \"10 minutes\";\nexport const VERIFICATION_USER_INVITE_DURATION =\n (process.env.VERIFICATION_USER_INVITE_DURATION as string) || \"3 days\";\n\nexport const REDIS_HOST = process.env.REDIS_HOST as string;\nexport const REDIS_PORT = Number(process.env.REDIS_PORT || 6379);\nexport const REDIS_PASSWORD = process.env.REDIS_PASSWORD as string;\n\nexport const DEFAULT_USER_EMAIL = process.env.DEFAULT_USER_EMAIL as string;\nexport const DEFAULT_USER_PASSWORD = process.env\n .DEFAULT_USER_PASSWORD as string;\nexport const DEFAULT_USER_FIRST_NAME = process.env\n .DEFAULT_USER_FIRST_NAME as string;\nexport const DEFAULT_USER_LAST_NAME = process.env\n .DEFAULT_USER_LAST_NAME as string;\n\nexport const SPACES_ACCESS_KEY = process.env.SPACES_ACCESS_KEY as string;\nexport const SPACES_SECRET_KEY = process.env.SPACES_SECRET_KEY as string;\nexport const SPACES_ENDPOINT = process.env.SPACES_ENDPOINT as string;\nexport const SPACES_REGION = process.env.SPACES_REGION as string;\nexport const SPACES_BUCKET = process.env.SPACES_BUCKET as string;\n\nexport const PAYPAL_CLIENT_ID = (process.env.PAYPAL_CLIENT_ID as string) ?? \"\";\nexport const PAYPAL_CLIENT_SECRET =\n (process.env.PAYPAL_CLIENT_SECRET as string) ?? \"\";\nexport const PAYPAL_API_URL =\n (process.env.PAYPAL_API_URL as string) ?? \"https://api-m.sandbox.paypal.com\";\n\nexport const XENDIT_SECRET_KEY =\n (process.env.XENDIT_SECRET_KEY as string) ?? \"\";\nexport const XENDIT_BASE_URL =\n (process.env.XENDIT_BASE_URL as string) ?? \"https://api.xendit.co\";\n","import { ClientSession, ObjectId } from \"mongodb\";\nimport { MUser, MUserRole, TUser, TUserRole } from \"./../models/user.model\";\nimport {\n useAtlas,\n InternalServerError,\n logger,\n BadRequestError,\n paginate,\n useCache,\n makeCacheKey,\n} from \"@eeplatform/nodejs-utils\";\nimport { TKeyValuePair } from \"../models/local.model\";\n\nexport function useUserRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"users\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createTextIndex() {\n try {\n await collection.createIndex({\n firstName: \"text\",\n middleName: \"text\",\n lastName: \"text\",\n email: \"text\",\n });\n } catch (error) {\n throw new Error(\"Failed to create text index on email.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex(\n { email: 1, deletedAt: 1 },\n { unique: true }\n );\n } catch (error) {\n throw new Error(\"Failed to create unique index on email.\");\n }\n }\n\n async function createUser(value: TUser, session?: ClientSession) {\n try {\n value = new MUser(value);\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId;\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Item name already exists\");\n }\n\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function getUserByEmail(email: string) {\n const cacheKey = makeCacheKey(namespace_collection, { email });\n\n try {\n const cached = await getCache<TUser>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getUserByEmail: ${cacheKey}`,\n });\n return cached;\n }\n\n const result = await collection.findOne<TUser>({ email });\n\n if (result) {\n setCache(cacheKey, result, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for user by email: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for user by email: ${err.message}`,\n });\n });\n }\n\n return result;\n } catch (error) {\n throw new Error(\"Failed to get user by email.\");\n }\n }\n\n async function getUserByReferralCode(referralCode: string) {\n const cacheKey = makeCacheKey(namespace_collection, { referralCode });\n\n try {\n const cached = await getCache<TUser>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getUserByReferralCode: ${cacheKey}`,\n });\n return cached;\n }\n\n const result = await collection.findOne<TUser>({ referralCode });\n\n if (result) {\n setCache(cacheKey, result, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for user by referral code: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for user by referral code: ${err.message}`,\n });\n });\n }\n\n return result;\n } catch (error) {\n throw new Error(\"Failed to get user by referral code.\");\n }\n }\n\n async function getUserById(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new Error(\"Invalid user ID.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { _id: String(_id) });\n\n try {\n const cached = await getCache<TUser>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getUserById: ${cacheKey}`,\n });\n return cached;\n }\n\n const result = await collection.findOne<TUser>({ _id });\n\n if (result) {\n setCache(cacheKey, result, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for user by id: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for user by id: ${err.message}`,\n });\n });\n }\n\n return result;\n } catch (error) {\n throw new Error(\"Failed to get user by id.\");\n }\n }\n\n async function getUsers({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"active\",\n type = \"\",\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: TKeyValuePair = { status };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n if (type) {\n query.type = type;\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n search,\n page,\n limit,\n sort: JSON.stringify(sort),\n status,\n type,\n });\n\n logger.log({\n level: \"info\",\n message: `Cache key for getUsers: ${cacheKey}`,\n });\n\n try {\n const cached = await getCache<Record<string, any>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getUsers: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n {\n $project: {\n _id: 1,\n name: {\n $concat: [\"$firstName\", \" \", \"$lastName\"],\n },\n email: 1,\n type: 1,\n status: 1,\n },\n },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getUsers: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getUsers: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw error;\n }\n }\n\n async function updatePassword(\n { _id, password } = {} as { _id: string | ObjectId; password: string },\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new Error(\"Invalid user ID.\");\n }\n\n try {\n const result = await collection.updateOne(\n { _id },\n { $set: { password } },\n { session }\n );\n delCachedData();\n return result;\n } catch (error) {\n throw new Error(\"Failed to update user password.\");\n }\n }\n\n async function updateName(\n { _id, firstName, lastName } = {} as {\n _id: string | ObjectId;\n firstName?: string;\n lastName?: string;\n },\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new Error(\"Invalid user ID.\");\n }\n\n try {\n const result = await collection.updateOne(\n { _id },\n { $set: { firstName, lastName } },\n { session }\n );\n delCachedData();\n return result;\n } catch (error) {\n throw new Error(\"Failed to update user profile.\");\n }\n }\n\n async function updateBirthday(\n { _id, month, day, year } = {} as {\n _id: string | ObjectId;\n month: string;\n day: number;\n year: number;\n },\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new Error(\"Invalid user ID.\");\n }\n\n try {\n const result = await collection.updateOne(\n { _id },\n { $set: { birthMonth: month, birthDay: day, birthYear: year } },\n { session }\n );\n delCachedData();\n return result;\n } catch (error) {\n throw new Error(\"Failed to update user birthday.\");\n }\n }\n\n async function updateUserFieldById(\n { _id, field, value } = {} as {\n _id: string | ObjectId;\n field: string;\n value: string | ObjectId;\n },\n session?: ClientSession\n ) {\n // Allowed fields to prevent arbitrary updates\n const allowedFields = [\n \"gender\",\n \"email\",\n \"contact\",\n \"profile\",\n \"defaultOrg\",\n ];\n\n if (!allowedFields.includes(field)) {\n throw new BadRequestError(\n `Field \"${field}\" is not allowed to be updated.`\n );\n }\n\n // Validate ID\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n if (field === \"defaultOrg\") {\n try {\n value = new ObjectId(value);\n } catch (error) {\n throw new BadRequestError(\"Invalid organization ID.\");\n }\n }\n\n try {\n const result = await collection.updateOne(\n { _id },\n { $set: { [field]: value } },\n { session }\n );\n delCachedData();\n return result;\n } catch (error) {\n throw new BadRequestError(`Failed to update user ${field}.`);\n }\n }\n\n async function addUserRole(\n { _id, role } = {} as { _id: string | ObjectId; role: TUserRole },\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n role = new MUserRole(role);\n\n try {\n await collection.updateOne(\n { _id, \"roles.app\": { $ne: role.app } },\n // @ts-ignore\n { $push: { roles: role } },\n { session }\n );\n } catch (error) {\n throw new InternalServerError(\"Failed to add user role.\");\n }\n }\n\n return {\n createTextIndex,\n createUniqueIndex,\n createUser,\n getUserByEmail,\n getUserById,\n getUsers,\n updatePassword,\n updateName,\n updateBirthday,\n updateUserFieldById,\n addUserRole,\n getUserByReferralCode,\n };\n}\n","import { ObjectId } from \"mongodb\";\n\nexport type TUserRole = {\n name: string;\n app: string;\n role: ObjectId | string;\n status?: string;\n};\n\nexport class MUserRole implements TUserRole {\n name: string;\n app: string;\n role: ObjectId | string;\n status?: string;\n\n constructor(value: TUserRole) {\n this.name = value.name ?? \"\";\n this.app = value.app ?? \"\";\n this.role = value.role ?? \"\";\n this.status = value.status ?? \"active\";\n }\n}\n\nexport type TUser = {\n _id?: ObjectId;\n email: string;\n password: string;\n prefix?: string;\n firstName: string;\n middleName?: string;\n lastName: string;\n suffix?: string;\n birthMonth?: string;\n birthDay?: number;\n birthYear?: number;\n gender?: string;\n defaultOrg?: ObjectId | string;\n xenditCustomerId?: string;\n type?: string;\n status?: string;\n referralCode?: string;\n referredBy?: string;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n};\n\nexport class MUser implements TUser {\n _id?: ObjectId;\n email: string;\n password: string;\n prefix?: string;\n firstName: string;\n middleName?: string;\n lastName: string;\n suffix?: string;\n birthMonth?: string;\n birthDay?: number;\n birthYear?: number;\n gender?: string;\n roles?: TUserRole[];\n status?: string;\n type?: string;\n xenditCustomerId?: string | undefined;\n referralCode?: string;\n referredBy?: string;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n defaultOrg?: ObjectId | string;\n\n constructor(value: TUser) {\n this._id = value._id ?? new ObjectId();\n this.email = value.email ?? \"\";\n this.password = value.password ?? \"\";\n this.prefix = value.prefix ?? \"\";\n this.firstName = value.firstName ?? \"\";\n this.middleName = value.middleName ?? \"\";\n this.lastName = value.lastName ?? \"\";\n this.suffix = value.suffix ?? \"\";\n this.birthMonth = value.birthMonth ?? \"\";\n this.birthDay = value.birthDay ?? 0;\n this.birthYear = value.birthYear ?? 0;\n this.gender = value.gender ?? \"\";\n this.type = value.type ?? \"client\";\n this.status = value.status ?? \"\";\n this.xenditCustomerId = value.xenditCustomerId ?? \"\";\n this.referralCode = value.referralCode ?? \"\";\n this.referredBy = value.referredBy ?? \"\";\n this.createdAt = value.createdAt ?? new Date().toISOString();\n this.updatedAt = value.updatedAt ?? \"\";\n this.deletedAt = value.deletedAt ?? \"\";\n\n try {\n value.defaultOrg = new ObjectId(value.defaultOrg);\n } catch (error) {\n throw new Error(\"Invalid defaultOrg ID.\");\n }\n\n this.defaultOrg = value.defaultOrg;\n }\n}\n","import {\n AppError,\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MMember, TMember } from \"../models/member.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function useMemberRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new Error(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"members\";\n\n const collection = db.collection(namespace_collection);\n\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndex([\n {\n name: 1,\n },\n {\n status: 1,\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex(\n {\n org: 1,\n user: 1,\n },\n { partialFilterExpression: { deletedAt: \"\" }, unique: true }\n );\n } catch (error) {\n throw new Error(\"Failed to create unique index.\");\n }\n }\n\n async function createTextIndex() {\n try {\n await collection.createIndex([\n {\n name: \"text\",\n },\n {\n orgName: \"text\",\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create text index.\");\n }\n }\n\n async function add(value: TMember, session?: ClientSession) {\n try {\n value = MMember(value);\n\n await collection.insertOne(value, { session });\n delCachedData();\n return \"Successfully added member.\";\n } catch (error) {\n if (error instanceof AppError) {\n throw error;\n } else {\n throw new InternalServerError(\"Failed to create member.\");\n }\n }\n }\n\n async function getById(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n id: _id.toString(),\n });\n const cached = await getCache<TMember>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getById member: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TMember>({ _id });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for member by id: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for member by id: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve member.\"\n );\n }\n }\n\n async function getByUserId(user: string | ObjectId) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n user: String(user),\n });\n const cached = await getCache<TMember>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByUserId member: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TMember>({ user });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for member by user ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for member by user ID: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve member.\"\n );\n }\n }\n\n async function getByUserType(\n user: string | ObjectId,\n type: string,\n org?: string | ObjectId\n ) {\n const query: Record<string, any> = {\n type,\n status: \"active\",\n };\n\n const cacheKeyOptions: Record<string, any> = {\n type,\n };\n\n if (org) {\n try {\n org = new ObjectId(org);\n cacheKeyOptions.org = String(org);\n query.org = org;\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n }\n\n try {\n user = new ObjectId(user);\n cacheKeyOptions.user = String(user);\n query.user = user;\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, cacheKeyOptions);\n const cached = await getCache<TMember>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByUserId member: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TMember>(query);\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for member by user ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for member by user ID: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve member.\"\n );\n }\n }\n\n type TUpdateName = Pick<TMember, \"user\" | \"name\">;\n\n async function updateName(value: TUpdateName, session?: ClientSession) {\n try {\n value.user = new ObjectId(value.user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n try {\n await collection.updateOne(\n { user: value.user },\n { $set: { name: value.name } },\n { session }\n );\n delCachedData();\n return \"Successfully updated member name.\";\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to update member name.\"\n );\n }\n }\n\n async function getAll(\n { search, limit, page, user, org, type, status } = {} as {\n search: string;\n limit: number;\n page: number;\n user?: string | ObjectId;\n org?: string | ObjectId;\n type: string;\n status: string;\n }\n ) {\n limit = limit > 0 ? limit : 10;\n search = search || \"\";\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { type, status };\n\n const cacheKeyOptions: Record<string, any> = { type, status, limit, page };\n\n if (user) {\n cacheKeyOptions.user = String(user);\n try {\n query.user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n }\n\n if (org) {\n cacheKeyOptions.org = String(org);\n try {\n query.org = new ObjectId(org);\n } catch (error) {\n throw new BadRequestError(\"Invalid organization ID.\");\n }\n }\n\n if (search) {\n cacheKeyOptions.search = search;\n query.$text = { $search: search };\n }\n\n const cacheKey = makeCacheKey(namespace_collection, cacheKeyOptions);\n\n logger.log({\n level: \"info\",\n message: `Cache key for getAll members: ${cacheKey}`,\n });\n\n // Check cache first\n const cached = await getCache<Record<string, any>>(cacheKey);\n\n if (cached && cached.items.length) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getAll members: ${cacheKey}`,\n });\n return cached;\n }\n\n try {\n const items = await collection\n .aggregate([\n {\n $match: query,\n },\n {\n $sort: { _id: -1 },\n },\n {\n $limit: limit,\n },\n {\n $project: {\n _id: 1,\n name: 1,\n user: 1,\n status: 1,\n role: 1,\n roleName: 1,\n org: 1,\n orgName: 1,\n type: 1,\n },\n },\n ])\n .toArray();\n\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getAll members: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getAll members: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve members.\"\n );\n }\n }\n\n async function countByOrg(org: string | ObjectId) {\n try {\n org = new ObjectId(org);\n } catch (error) {\n throw new BadRequestError(\"Invalid organization ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, { org: String(org) });\n const cached = await getCache<number>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for countByOrg members: ${cacheKey}`,\n });\n return cached;\n }\n const data = await collection.countDocuments({ org, status: \"active\" });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for countByOrg members: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for countByOrg members: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to count members.\"\n );\n }\n }\n\n async function countByUser(user: string | ObjectId) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n user: String(user),\n });\n const cached = await getCache<number>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for countByUser members: ${cacheKey}`,\n });\n return cached;\n }\n const data = await collection.countDocuments({ user, status: \"active\" });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for countByUser members: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for countByUser members: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to count members.\"\n );\n }\n }\n\n async function getOrgsByMembership(\n { search, limit, page, user } = {} as {\n search: string;\n limit: number;\n page: number;\n user?: string | ObjectId;\n }\n ) {\n limit = limit > 0 ? limit : 10;\n search = search || \"\";\n page = page > 0 ? page - 1 : 0;\n\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n const query: Record<string, any> = {\n user,\n status: { $ne: \"deleted\" },\n org: { $nin: [null, \"\"] },\n };\n\n const cacheKeyOptions: Record<string, any> = {\n user: String(user),\n org: JSON.stringify(query.org),\n limit,\n page,\n };\n\n if (search) {\n cacheKeyOptions.search = search;\n query.$text = { $search: search };\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, cacheKeyOptions);\n const cached = await getCache<{ text: string; value: ObjectId }[]>(\n cacheKey\n );\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getOrgsByMembership members: ${cacheKey}`,\n });\n return cached;\n }\n const items = await collection\n .aggregate([\n {\n $match: query,\n },\n {\n $sort: { _id: -1 },\n },\n {\n $limit: limit,\n },\n {\n $project: {\n _id: 0,\n text: \"$orgName\",\n value: \"$org\",\n },\n },\n ])\n .toArray();\n\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getOrgsByMembership members: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getOrgsByMembership members: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve members.\"\n );\n }\n }\n\n async function getOrgsByUserId(\n {\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n user = \"\",\n status = \"active\",\n } = {} as {\n user: string | ObjectId;\n page: number;\n limit?: number;\n search?: string;\n sort?: Record<string, number>;\n status?: string;\n }\n ) {\n page = page > 0 ? page - 1 : 0;\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n const query: Record<string, any> = { user, status };\n const cacheKeyOptions: Record<string, any> = {\n user: String(user),\n status,\n limit,\n page,\n sort: JSON.stringify(sort),\n };\n\n if (search) {\n cacheKeyOptions.search = search;\n query.$text = { $search: search };\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, cacheKeyOptions);\n const cached = await getCache<{ _id: ObjectId; name: string }[]>(\n cacheKey\n );\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getOrgsByUserId members: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n {\n $lookup: {\n from: \"orgs\",\n localField: \"org\",\n foreignField: \"_id\",\n as: \"organization\",\n },\n },\n { $unwind: \"$organization\" }, // Flatten the array\n {\n $project: { _id: \"$organization._id\", name: \"$organization.name\" },\n }, // Extract required fields\n ])\n .toArray();\n\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getOrgsByUserId members: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getOrgsByUserId members: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error, failed to retrieve organizations.\"\n );\n }\n }\n\n async function updateStatusByUserId(user: string | ObjectId, status: string) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n const options: Record<string, any> = {\n status,\n updatedAt: new Date(),\n };\n\n if (status === \"deleted\") {\n options.deletedAt = new Date();\n }\n\n try {\n await collection.updateMany(\n { user },\n {\n $set: options,\n }\n );\n delCachedData();\n return \"Successfully updated member status.\";\n } catch (error) {\n throw new InternalServerError(\"Failed to update member status.\");\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n createTextIndex,\n add,\n getById,\n getAll,\n getOrgsByUserId,\n updateStatusByUserId,\n updateName,\n getByUserId,\n getOrgsByMembership,\n countByOrg,\n countByUser,\n getByUserType,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { ObjectId } from \"mongodb\";\n\nexport type TMember = {\n _id?: ObjectId;\n org?: string | ObjectId;\n orgName?: string;\n name: string;\n user: string | ObjectId;\n role: string | ObjectId;\n roleName?: string;\n type: string;\n status?: string;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n};\n\nexport function MMember(value: TMember): TMember {\n const schema = Joi.object({\n _id: Joi.string().hex().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n orgName: Joi.string().optional().allow(\"\", null),\n name: Joi.string().required(),\n user: Joi.string().hex().required(),\n role: Joi.string().hex().required(),\n roleName: Joi.string().optional().allow(\"\", null),\n type: Joi.string().required(),\n status: Joi.string().optional().allow(\"\", null),\n createdAt: Joi.string().optional().allow(\"\", null),\n updatedAt: Joi.string().optional().allow(\"\", null),\n deletedAt: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = schema.validate(value);\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n if (value.org) {\n try {\n value.org = new ObjectId(value.org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n }\n\n if (value.user) {\n try {\n value.user = new ObjectId(value.user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n }\n\n if (value.role) {\n try {\n value.role = new ObjectId(value.role);\n } catch (error) {\n throw new BadRequestError(\"Invalid role ID.\");\n }\n }\n\n return {\n _id: value._id,\n org: value.org ?? \"\",\n orgName: value.orgName ?? \"\",\n name: value.name,\n user: value.user,\n type: value.type,\n role: value.role,\n roleName: value.roleName ?? \"\",\n status: value.status || \"active\",\n createdAt: value.createdAt || new Date().toISOString(),\n updatedAt: \"\",\n deletedAt: \"\",\n };\n}\n","import {\n AppError,\n BadRequestError,\n InternalServerError,\n} from \"@eeplatform/nodejs-utils\";\nimport { Request, Response, NextFunction } from \"express\";\nimport Joi from \"joi\";\nimport { useVerificationService } from \"../services/verification.service\";\nimport { useVerificationRepo } from \"../repositories/verification.repository\";\n\nexport function useVerificationController() {\n const {\n createUserInvite: _createUserInvite,\n createForgetPassword: _createForgetPassword,\n cancelUserInvitation: _cancelUserInvitation,\n verify: _verify,\n } = useVerificationService();\n\n const { getVerifications: _getVerifications } = useVerificationRepo();\n\n async function createUserInvite(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const validation = Joi.object({\n email: Joi.string().email().required(),\n app: Joi.string().required(),\n role: Joi.string().hex().required(),\n roleName: Joi.string().required(),\n org: Joi.string().required(),\n orgName: Joi.string().required(),\n });\n\n const { error } = validation.validate(req.body);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n const email = (req.body.email as string) ?? \"\";\n const app = (req.body.app as string) ?? \"\";\n const role = (req.body.role as string) ?? \"\";\n const roleName = (req.body.roleName as string) ?? \"\";\n const org = (req.body.org as string) ?? \"\";\n const orgName = (req.body.orgName as string) ?? \"\";\n\n try {\n await _createUserInvite({\n email,\n metadata: {\n app,\n role,\n roleName,\n org,\n orgName,\n },\n });\n\n res.json({ message: \"Successfully invited user.\" });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function createForgetPassword(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const email = (req.body.email as string) || \"\";\n\n const validation = Joi.string().email().required();\n\n const { error } = validation.validate(email);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _createForgetPassword(email);\n res.json({\n message:\n \"Check your email to verify it before resetting your password.\",\n });\n return;\n } catch (error) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(\"An unexpected error occurred\"));\n }\n }\n }\n\n async function getVerifications(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const validation = Joi.object({\n status: Joi.string().required(),\n search: Joi.string().optional().allow(\"\", null),\n page: Joi.number().required(),\n type: Joi.string().optional().allow(\"\", null),\n email: Joi.string().optional().allow(\"\", null),\n app: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate(req.query);\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n const status = (req.query.status as string) ?? \"\";\n const search = (req.query.search as string) ?? \"\";\n const page = Number(req.query.page) ?? 1;\n let type = (req.query.type as string) ?? \"\";\n const email = (req.query.email as string) ?? \"\";\n const app = (req.query.app as string) ?? \"\";\n\n const hasMultipleTypes = type.includes(\",\");\n\n let splitType: Array<string> = [];\n\n if (hasMultipleTypes) {\n splitType = type.split(\",\");\n }\n\n try {\n const items = await _getVerifications({\n status,\n search,\n page,\n type: hasMultipleTypes ? splitType : type,\n email,\n app,\n });\n res.json(items);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function verify(req: Request, res: Response, next: NextFunction) {\n const id = (req.params.id as string) || \"\";\n\n const validation = Joi.string().hex().required();\n\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _verify(id);\n res.json(message);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function cancelUserInvitation(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const otpId = (req.params.id as string) || \"\";\n\n const validation = Joi.string().hex().required();\n\n const { error } = validation.validate(otpId);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _cancelUserInvitation(otpId);\n return res.json({\n message: \"User invite has been cancelled.\",\n });\n } catch (error) {\n throw error;\n }\n }\n\n return {\n getVerifications,\n createUserInvite,\n createForgetPassword,\n verify,\n cancelUserInvitation,\n };\n}\n","import { ObjectId } from \"mongodb\";\n\nexport type TToken = {\n token: string;\n user: ObjectId;\n createdAt?: string;\n};\n\nexport class MToken implements TToken {\n token: string;\n user: ObjectId;\n createdAt?: string;\n\n constructor(value: TToken) {\n this.token = value.token ?? \"\";\n this.user = value.user ?? new ObjectId();\n this.createdAt = value.createdAt ?? new Date().toISOString();\n }\n}","import {\n InternalServerError,\n logger,\n makeCacheKey,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { ObjectId } from \"mongodb\";\n\nexport function useTokenRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"tokens\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createToken(\n { token, user } = {} as { token: string; user: string | ObjectId }\n ) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n return Promise.reject(\"Invalid user ID\");\n }\n\n try {\n await collection.insertOne({ token, user });\n delCachedData();\n return \"Token created\";\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n async function getToken(token: string) {\n const cacheKey = makeCacheKey(namespace_collection, { token });\n\n try {\n // Check cache first\n const cached = await getCache<any>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getToken: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne({ token });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for token: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for token: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n async function deleteToken(token: string) {\n try {\n const result = await collection.deleteOne({ token });\n delCachedData();\n return result;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n return {\n createToken,\n getToken,\n deleteToken,\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n NotFoundError,\n hashPassword,\n logger,\n makeCacheKey,\n useAtlas,\n useCache,\n useS3,\n} from \"@eeplatform/nodejs-utils\";\nimport { useUserRepo } from \"./../repositories/user.repository\";\nimport { MUser, TUser } from \"./../models/user.model\";\nimport { TFile } from \"../models/file.model\";\nimport { useFileRepo } from \"../repositories/file.repository\";\nimport {\n DEFAULT_USER_EMAIL,\n DEFAULT_USER_FIRST_NAME,\n DEFAULT_USER_LAST_NAME,\n DEFAULT_USER_PASSWORD,\n SPACES_ACCESS_KEY,\n SPACES_BUCKET,\n SPACES_ENDPOINT,\n SPACES_REGION,\n SPACES_SECRET_KEY,\n} from \"../config\";\nimport { useVerificationRepo } from \"../repositories/verification.repository\";\nimport { useVerificationService } from \"./verification.service\";\nimport \"multer\";\nimport { useMemberRepo } from \"../repositories/member.repository\";\nimport { useXenditService } from \"./xendit.service\";\nimport { ObjectId } from \"mongodb\";\nimport { useRoleRepo } from \"../repositories/role.repository\";\n\nexport function useUserService() {\n const {\n createUser: _createUser,\n getUserByEmail,\n getUserById: _getById,\n updateName: _updateName,\n updateBirthday: _updateBirthday,\n updateUserFieldById: _updateUserFieldById,\n getUsers: _getUsers,\n } = useUserRepo();\n\n const { addRole } = useRoleRepo();\n const { add: addMember } = useMemberRepo();\n\n const { createCustomer } = useXenditService();\n\n async function createDefaultUser() {\n const session = useAtlas.getClient()?.startSession();\n\n try {\n session?.startTransaction();\n const _user = await getUserByEmail(DEFAULT_USER_EMAIL);\n if (_user) {\n throw new BadRequestError(\n `User already exists: ${DEFAULT_USER_EMAIL}.`\n );\n }\n\n const hashedPassword = await hashPassword(DEFAULT_USER_PASSWORD);\n\n const userId = new ObjectId();\n\n const user: TUser = {\n _id: userId,\n email: DEFAULT_USER_EMAIL,\n password: hashedPassword,\n firstName: DEFAULT_USER_FIRST_NAME,\n lastName: DEFAULT_USER_LAST_NAME,\n status: \"active\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const customer = await createCustomer({\n reference_id: userId.toString(),\n type: \"INDIVIDUAL\",\n individual_detail: {\n given_names: user.firstName,\n surname: user.lastName,\n },\n email: user.email,\n });\n\n if (!customer.id) {\n throw new InternalServerError(\"Failed to create xendit customer.\");\n }\n\n user.xenditCustomerId = customer.id;\n\n await _createUser(user, session);\n\n const roleId = await addRole(\n {\n org: \"\",\n name: \"Super Admin\",\n type: \"admin\",\n permissions: [\"*\"],\n status: \"active\",\n default: true,\n },\n session\n );\n\n await addMember(\n {\n user: userId.toString(),\n name: `${user.firstName} ${user.lastName}`,\n role: roleId.toString(),\n roleName: \"Super Admin\",\n type: \"admin\",\n },\n session\n );\n\n await session?.commitTransaction();\n return \"Successfully created default user.\";\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function getUsers({\n search = \"\",\n page = 1,\n status = \"\",\n type = \"\",\n limit = 10,\n } = {}) {\n try {\n return await _getUsers({ search, page, status, type, limit });\n } catch (error) {\n throw error;\n }\n }\n\n type TCreateUser = Pick<\n TUser,\n | \"email\"\n | \"password\"\n | \"prefix\"\n | \"firstName\"\n | \"middleName\"\n | \"lastName\"\n | \"suffix\"\n >;\n\n async function createUser(value: TCreateUser) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n\n try {\n const _user = await getUserByEmail(value.email);\n if (_user) {\n throw new BadRequestError(`User already exists: ${value.email}.`);\n }\n\n const hashedPassword = await hashPassword(value.password);\n\n const userId = new ObjectId();\n\n const user: TUser = {\n _id: userId,\n email: value.email,\n password: hashedPassword,\n prefix: value.prefix,\n firstName: value.firstName,\n middleName: value.middleName,\n lastName: value.lastName,\n suffix: value.suffix,\n status: \"active\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n const customer = await createCustomer({\n reference_id: userId.toString(),\n type: \"INDIVIDUAL\",\n individual_detail: {\n given_names: user.firstName,\n surname: user.lastName,\n },\n email: user.email,\n });\n\n if (!customer.id) {\n throw new InternalServerError(\"Failed to create xendit customer.\");\n }\n\n user.xenditCustomerId = customer.id;\n\n await _createUser(user, session);\n\n await session?.commitTransaction();\n return userId;\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n const { getById: _getVerificationById, updateStatusById: _updateStatusById } =\n useVerificationRepo();\n\n async function createUserByInvite({\n id = \"\",\n firstName = \"\",\n lastName = \"\",\n password = \"\",\n } = {}) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n\n try {\n const invitation = await _getVerificationById(id);\n if (\n !invitation ||\n !invitation.metadata?.app ||\n !invitation.metadata?.role\n ) {\n throw new BadRequestError(\"Invalid invitation.\");\n }\n\n if (invitation.status === \"complete\") {\n throw new BadRequestError(\"Invitation already used.\");\n }\n\n const expired = new Date(invitation.expireAt) < new Date();\n\n if (invitation.status === \"expired\" || expired) {\n throw new BadRequestError(\"Invitation expired.\");\n }\n\n const email = invitation.email;\n\n if (!invitation.metadata.org) {\n throw new BadRequestError(\"Invitation does not have an organization.\");\n }\n\n const _user = await getUserByEmail(invitation.email);\n\n let userId = _user?._id ?? \"\";\n\n if (!_user) {\n const hashedPassword = await hashPassword(password);\n\n const user: TUser = new MUser({\n email,\n password: hashedPassword,\n firstName,\n lastName,\n status: \"active\",\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n defaultOrg: invitation.metadata?.org,\n });\n\n userId = await _createUser(user, session);\n }\n\n await _updateStatusById(id, \"complete\", session);\n\n await addMember(\n {\n user: userId.toString(),\n name: `${firstName} ${lastName}`,\n role: invitation.metadata?.role,\n roleName: invitation.metadata?.roleName,\n type: invitation.metadata?.app,\n org: invitation.metadata?.org,\n orgName: invitation.metadata?.orgName,\n },\n session\n );\n\n await session?.commitTransaction();\n return userId;\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function createUserBySignUp({\n id = \"\",\n firstName = \"\",\n lastName = \"\",\n password = \"\",\n } = {}) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n\n try {\n const signUp = await _getVerificationById(id);\n if (!signUp) {\n throw new BadRequestError(\"Invalid sign up link.\");\n }\n\n if (signUp.status === \"complete\") {\n throw new BadRequestError(\n \"You have already an account created using this link.\"\n );\n }\n\n const expired = new Date(signUp.expireAt) < new Date();\n\n if (signUp.status === \"expired\" || expired) {\n throw new BadRequestError(\"Sign up link expired.\");\n }\n\n const email = signUp.email;\n\n const _user = await getUserByEmail(signUp.email);\n if (_user) {\n throw new BadRequestError(`User already exists: ${email}.`);\n }\n\n const hashedPassword = await hashPassword(password);\n\n const userId = new ObjectId();\n\n const user: TUser = {\n _id: userId,\n email,\n password: hashedPassword,\n firstName,\n lastName,\n status: \"active\",\n referredBy: signUp.metadata?.referralCode,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n await _createUser(user, session);\n await _updateStatusById(id, \"complete\", session);\n\n await session?.commitTransaction();\n return userId;\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n const { verify, getById, updateStatusById } = useVerificationService();\n\n async function resetPassword(\n id: string,\n newPassword: string,\n passwordConfirmation: string\n ) {\n try {\n await verify(id);\n } catch (error) {\n throw error;\n }\n\n if (newPassword !== passwordConfirmation) {\n throw new BadRequestError(\"Passwords do not match.\");\n }\n\n let hashedPassword = \"\";\n\n try {\n hashedPassword = await hashPassword(newPassword);\n } catch (error) {\n throw new InternalServerError(`Error hashing password: ${error}`);\n }\n\n try {\n const otpDoc = await getById(id);\n if (!otpDoc) {\n throw new NotFoundError(\"You are using an invalid reset link.\");\n }\n\n if (otpDoc.status === \"used\") {\n throw new BadRequestError(\"This link has already been invalidated.\");\n }\n\n await updateStatusById(id, \"used\");\n\n return \"Successfully reset password.\";\n } catch (error) {\n throw error;\n }\n }\n\n const { updateName: updateMemberName } = useMemberRepo();\n\n async function updateName(\n _id: string,\n firstName?: string,\n lastName?: string\n ) {\n if (!_id) {\n throw new BadRequestError(\"Invalid user ID\");\n }\n\n if (!firstName) {\n throw new BadRequestError(\"Invalid firstName\");\n }\n\n if (!lastName) {\n throw new BadRequestError(\"Invalid lastName\");\n }\n\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n\n const cacheKey = makeCacheKey(\"users\", { user: _id });\n\n try {\n useCache()\n .delCache(cacheKey)\n .then(() => {\n logger.info(`Cache cleared for user: ${_id}`);\n })\n .catch((error) => {\n logger.error(`Failed to clear cache for user: ${_id}`, error);\n });\n\n await _updateName({ _id, firstName, lastName }, session);\n await updateMemberName(\n { user: _id, name: `${firstName} ${lastName}` },\n session\n );\n await session?.commitTransaction();\n return \"Successfully updated name.\";\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function updateBirthday(\n _id: string,\n month: string,\n day: number,\n year: number\n ) {\n if (!_id) {\n throw new BadRequestError(\"Invalid user ID\");\n }\n\n if (!month) {\n throw new BadRequestError(\"Invalid birth month.\");\n }\n\n if (!day) {\n throw new BadRequestError(\"Invalid birthday.\");\n }\n\n if (!year) {\n throw new BadRequestError(\"Invalid birth year.\");\n }\n\n try {\n await _updateBirthday({ _id, month, day, year });\n return \"Successfully updated birthday.\";\n } catch (error) {\n throw error;\n }\n }\n\n async function updateUserFieldById(\n { _id, field, value } = {} as {\n _id: string;\n field: string;\n value: string;\n }\n ) {\n try {\n return await _updateUserFieldById({ _id, field, value });\n } catch (error) {\n throw error;\n }\n }\n\n const { createFile: _createFile, deleteFileById } = useFileRepo();\n\n const s3 = new useS3({\n accessKeyId: SPACES_ACCESS_KEY,\n secretAccessKey: SPACES_SECRET_KEY,\n endpoint: SPACES_ENDPOINT,\n region: SPACES_REGION,\n bucket: SPACES_BUCKET,\n });\n\n async function updateUserProfile(\n { file, user, previousProfile } = {} as {\n file: Express.Multer.File;\n user: string;\n previousProfile?: string;\n }\n ) {\n const session = useAtlas.getClient()?.startSession();\n\n session?.startTransaction();\n\n const _file: TFile = {\n name: file.originalname,\n createdAt: new Date().toISOString(),\n };\n\n try {\n const id = await _createFile(_file, session);\n await s3.uploadObject({\n key: id,\n body: file.buffer,\n contentType: file.mimetype,\n });\n\n if (previousProfile) {\n await deleteFileById(previousProfile, session);\n await s3.deleteObject(previousProfile);\n }\n\n await _updateUserFieldById(\n { _id: user, field: \"profile\", value: id },\n session\n );\n\n await session?.commitTransaction();\n\n return id;\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n return {\n getUsers,\n createUser,\n resetPassword,\n updateName,\n updateBirthday,\n updateUserFieldById,\n updateUserProfile,\n createUserByInvite,\n createUserBySignUp,\n createDefaultUser,\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MFile, TFile } from \"../models/file.model\";\nimport { ObjectId, ClientSession } from \"mongodb\";\n\nexport function useFileRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"files\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createFile(value: TFile, session?: ClientSession) {\n try {\n value = new MFile(value);\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId.toString();\n } catch (error) {\n throw new InternalServerError(\"Failed to create file.\");\n }\n }\n\n async function deleteFileById(\n _id: string | ObjectId,\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid file id.\");\n }\n\n try {\n await collection.deleteOne({ _id }, { session });\n delCachedData();\n return \"File deleted successfully\";\n } catch (error) {\n throw new InternalServerError(\"Failed to delete file.\");\n }\n }\n\n async function getAllDraftedFiles() {\n const cacheKey = makeCacheKey(namespace_collection, { status: \"draft\" });\n\n try {\n // Check cache first\n const cached = await getCache<any[]>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getAllDraftedFiles: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection\n .find({ $and: [{ status: \"draft\" }, { status: null }] })\n .toArray();\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getAllDraftedFiles: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getAllDraftedFiles: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\"Failed to get drafted files.\");\n }\n }\n\n return {\n createFile,\n deleteFileById,\n getAllDraftedFiles,\n };\n}\n","import { ObjectId } from \"mongodb\";\n\nexport type TFile = {\n _id?: ObjectId;\n name: string;\n type?: string;\n status?: string;\n createdAt: string;\n};\n\nexport class MFile implements TFile {\n _id?: ObjectId;\n name: string;\n type?: string;\n status?: string;\n createdAt: string;\n\n constructor(value: TFile) {\n this._id = value._id;\n this.name = value.name ?? \"\";\n this.type = value.type ?? \"public\";\n this.status = value.status ?? \"active\";\n this.createdAt = value.createdAt ?? new Date().toISOString();\n }\n}","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","import FormData from 'form-data';\n\nexport default FormData;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import crypto from 'crypto';\nimport URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n const randomValues = new Uint32Array(size);\n crypto.randomFillSync(randomValues);\n for (let i = 0; i < size; i++) {\n str += alphabet[randomValues[i] % length];\n }\n\n return str;\n}\n\n\nexport default {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n ALPHABET,\n generateString,\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n","'use strict';\n\nimport url from 'url';\nexport default url.URLSearchParams;\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport buildURL from './../helpers/buildURL.js';\nimport proxyFromEnv from 'proxy-from-env';\nimport http from 'http';\nimport https from 'https';\nimport util from 'util';\nimport followRedirects from 'follow-redirects';\nimport zlib from 'zlib';\nimport {VERSION} from '../env/data.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport platform from '../platform/index.js';\nimport fromDataURI from '../helpers/fromDataURI.js';\nimport stream from 'stream';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport AxiosTransformStream from '../helpers/AxiosTransformStream.js';\nimport {EventEmitter} from 'events';\nimport formDataToStream from \"../helpers/formDataToStream.js\";\nimport readBlob from \"../helpers/readBlob.js\";\nimport ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js';\nimport callbackify from \"../helpers/callbackify.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\n\nconst zlibOptions = {\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n}\n\nconst isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects;\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\nconst flushOnFinish = (stream, [throttled, flush]) => {\n stream\n .on('end', flush)\n .on('error', flush);\n\n return throttled;\n}\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object<string, any>} options - The options object that was passed to the request.\n *\n * @returns {Object<string, any>}\n */\nfunction dispatchBeforeRedirect(options, responseDetails) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options, responseDetails);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = proxyFromEnv.getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n }\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n }\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\nconst resolveFamily = ({address, family}) => {\n if (!utils.isString(address)) {\n throw TypeError('address must be a string');\n }\n return ({\n address,\n family: family || (address.indexOf('.') < 0 ? 6 : 4)\n });\n}\n\nconst buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family});\n\n/*eslint consistent-return:0*/\nexport default isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data, lookup, family} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n if (lookup) {\n const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]);\n // hotfix to support opt.all option which is required for node 20.x\n lookup = (hostname, opt, cb) => {\n _lookup(hostname, opt, (err, arg0, arg1) => {\n if (err) {\n return cb(err);\n }\n\n const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];\n\n opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);\n });\n }\n }\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n }\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n const parsed = new URL(fullPath, platform.hasBrowserEnv ? platform.origin : undefined);\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream.Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const {onUploadProgress, onDownloadProgress} = config;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util.promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data) || utils.isFile(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream.Readable.from(readBlob(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) {\n // Nothing to do...\n } else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream.Readable.from(data, {objectMode: false});\n }\n\n data = stream.pipeline([data, new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', flushOnFinish(\n data,\n progressEventDecorator(\n contentLength,\n progressEventReducer(asyncDecorator(onUploadProgress), false, 3)\n )\n ));\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n family,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n // cacheable-lookup integration hotfix\n !utils.isUndefined(lookup) && (options.lookup = lookup);\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname.startsWith(\"[\") ? parsed.hostname.slice(1, -1) : parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https : http;\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress || maxDownloadRate) {\n const transformStream = new AxiosTransformStream({\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', flushOnFinish(\n transformStream,\n progressEventDecorator(\n responseLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)\n )\n ));\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch ((res.headers['content-encoding'] || '').toLowerCase()) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib.createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib.createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream.finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'stream has been aborted',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n return reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (Number.isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n}\n\nexport const __setProxy = setProxy;\n","export const VERSION = \"1.10.0\";","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport parseProtocol from './parseProtocol.js';\nimport platform from '../platform/index.js';\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nexport default function fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n","'use strict';\n\nimport stream from 'stream';\nimport utils from '../utils.js';\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream.Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const internals = this[kInternals] = {\n timeWindow: options.timeWindow,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n const pushChunk = (_chunk, _callback) => {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n internals.isCaptured && this.emit('progress', internals.bytesSeen);\n\n if (this.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n}\n\nexport default AxiosTransformStream;\n","import util from 'util';\nimport {Readable} from 'stream';\nimport utils from \"../utils.js\";\nimport readBlob from \"./readBlob.js\";\nimport platform from \"../platform/index.js\";\n\nconst BOUNDARY_ALPHABET = platform.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = typeof TextEncoder === 'function' ? new TextEncoder() : new util.TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + platform.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n }\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nexport default formDataToStream;\n","const {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream()\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer()\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n}\n\nexport default readBlob;\n","\"use strict\";\n\nimport stream from \"stream\";\n\nclass ZlibHeaderTransformStream extends stream.Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nexport default ZlibHeaderTransformStream;\n","import utils from \"../utils.js\";\n\nconst callbackify = (fn, reducer) => {\n return utils.isAsyncFn(fn) ? function (...args) {\n const cb = args.pop();\n fn.apply(this, args).then((value) => {\n try {\n reducer ? cb(null, ...reducer(value)) : cb(null, value);\n } catch (err) {\n cb(err);\n }\n }, cb);\n } : fn;\n}\n\nexport default callbackify;\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request, fetchOptions);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import Axios from \"axios\";\nimport {\n APP_ACCOUNT,\n APP_MAIN,\n XENDIT_BASE_URL,\n XENDIT_SECRET_KEY,\n} from \"../config\";\nimport { AppError, BadRequestError, logger } from \"@eeplatform/nodejs-utils\";\nimport { ObjectId } from \"mongodb\";\nimport Joi from \"joi\";\nimport { CustomerSchema, TCustomer } from \"../models/customer.mode\";\nimport { z } from \"zod\";\nimport {\n usePaymentModel,\n validateCardPayment,\n validateDirectDebit,\n validateEWalletPayment,\n} from \"../models/payment.model\";\n\nexport function useXenditService() {\n const basicAuth = Buffer.from(`${XENDIT_SECRET_KEY}:`).toString(\"base64\");\n\n const axios = Axios.create({\n baseURL: XENDIT_BASE_URL,\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Basic ${basicAuth}`,\n },\n });\n\n async function createCustomer(value: TCustomer) {\n try {\n // Validate the customer data\n CustomerSchema.parse(value);\n\n // Send the request\n const res = await axios.post(\"/customers\", value);\n\n return res.data;\n } catch (error: any) {\n if (error instanceof z.ZodError) {\n console.error(\"Validation failed:\", error.errors);\n throw new BadRequestError(\"Invalid customer data.\");\n }\n\n console.error(\"Request failed:\", error);\n throw new BadRequestError(\"Failed to create customer.\");\n }\n }\n\n async function linkPaymentMethodEWallet({\n customerId = \"\",\n type = \"GCASH\",\n success_return_url = `${APP_ACCOUNT}/payment-methods`,\n failure_return_url = `${APP_ACCOUNT}/payment-methods`,\n cancel_return_url = `${APP_ACCOUNT}/payment-methods`,\n } = {}) {\n try {\n const res = await axios.post(\"/v2/payment_methods\", {\n type: \"EWALLET\",\n reusability: \"MULTIPLE_USE\",\n customer_id: customerId,\n ewallet: {\n channel_code: type,\n channel_properties: {\n success_return_url,\n failure_return_url,\n cancel_return_url,\n },\n },\n });\n\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to initiate GCash linking.\");\n }\n }\n\n async function linkPaymentMethodCard({\n success_return_url = `${APP_ACCOUNT}/payment-methods`,\n failure_return_url = `${APP_ACCOUNT}/payment-methods`,\n card_number = \"\",\n expiry_month = \"\",\n expiry_year = \"\",\n cvv = \"\",\n cardholder_name = \"\",\n currency = \"PHP\",\n } = {}) {\n try {\n const res = await axios.post(\"/v2/payment_methods\", {\n type: \"CARD\",\n card: {\n currency,\n channel_properties: {\n skip_three_d_secure: true,\n success_return_url,\n failure_return_url,\n },\n card_information: {\n card_number,\n expiry_month,\n expiry_year,\n cvv,\n cardholder_name,\n },\n },\n reusability: \"MULTIPLE_USE\",\n description: \"Linking card to GoWeekdays account.\",\n });\n\n return res.data;\n } catch (error: any) {\n logger.error(error.response.data.message);\n throw new BadRequestError(error.response.data.message);\n }\n }\n\n async function eWalletSubsequentPayment({\n amount = 0,\n currency = \"PHP\",\n payment_method_id = \"\",\n customer_id = \"\",\n description = \"\",\n } = {}) {\n try {\n const res = await axios.post(\"/payment_requests\", {\n amount,\n currency,\n payment_method_id,\n customer_id,\n description,\n });\n\n return res.data;\n } catch (error) {\n throw new BadRequestError(\n \"Failed to initiate GCash linking and payment request.\"\n );\n }\n }\n\n async function initGCashLinkingAndPaymentRequest({\n amount = 0,\n currency = \"PHP\",\n countryCode = \"PH\",\n customerId = \"\",\n success_return_url = `${APP_MAIN}/checkout/success`,\n failure_return_url = `${APP_MAIN}/checkout/failed`,\n } = {}) {\n try {\n const res = await axios.post(\"/payment_requests\", {\n amount,\n currency,\n country: countryCode,\n customer_id: customerId,\n payment_method: {\n type: \"EWALLET\",\n ewallet: {\n channel_code: \"GCASH\",\n channel_properties: {\n success_return_url,\n failure_return_url,\n },\n },\n reusability: \"MULTIPLE_USE\",\n },\n });\n\n return res.data;\n } catch (error) {\n throw new BadRequestError(\n \"Failed to initiate GCash linking and payment request.\"\n );\n }\n }\n\n async function initSubscription({\n customer = \"\",\n currency = \"PHP\",\n amount = 0,\n paymentMethod = \"\",\n description = \"\",\n interval = \"MONTH\",\n seats = 1,\n } = {}) {\n try {\n const res = await axios.post(\"/recurring/plans\", {\n reference_id: new ObjectId().toString(),\n customer_id: customer,\n recurring_action: \"PAYMENT\",\n currency,\n amount,\n payment_methods: [\n {\n payment_method_id: paymentMethod,\n rank: 1,\n },\n ],\n schedule: {\n reference_id: new ObjectId().toString(),\n interval,\n interval_count: 1,\n anchor_date: \"2022-02-15T09:44:19.546Z\",\n retry_interval: \"DAY\",\n retry_interval_count: 1,\n total_retry: 3,\n failed_attempt_notifications: [1, 3],\n },\n notification_config: {\n locale: \"en\",\n recurring_created: [\"WHATSAPP\", \"EMAIL\"],\n recurring_succeeded: [\"WHATSAPP\", \"EMAIL\"],\n recurring_failed: [\"WHATSAPP\", \"EMAIL\"],\n },\n failed_cycle_action: \"STOP\",\n immediate_action_type: \"FULL_AMOUNT\",\n metadata: {\n seats,\n },\n description,\n });\n\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to create subscription.\");\n }\n }\n\n async function checkSubscriptionStatus(subscriptionId: string) {\n try {\n const res = await axios.get(`/recurring/plans/${subscriptionId}`);\n return res.data.status as string;\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription status.\");\n }\n }\n\n async function cancelSubscription(subscriptionId: string) {\n try {\n const res = await axios.get(\n `/recurring/plans/${subscriptionId}/deactivate`\n );\n return res.data.status as string;\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription status.\");\n }\n }\n\n async function getSubscription(id: string) {\n try {\n const res = await axios.get(`/recurring/plans/${id}`);\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription.\");\n }\n }\n\n async function getSubscriptionCycles(id: string) {\n try {\n const res = await axios.get(`/recurring/plans/${id}/cycles`);\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription cycles.\");\n }\n }\n\n async function pay(value: {\n amount: number;\n currency: string;\n payment_method_id: string;\n customer_id: string;\n description?: string;\n metadata?: Record<string, any>;\n }) {\n try {\n const schema = Joi.object({\n amount: Joi.number().positive().min(0).required(),\n currency: Joi.string().required(),\n payment_method_id: Joi.string().required(),\n customer_id: Joi.string().required(),\n description: Joi.string().optional().allow(\"\", null),\n metadata: Joi.object().optional(),\n });\n\n const { error } = schema.validate(value);\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n const res = await axios.post(\"/payment_requests\", {\n amount: value.amount,\n currency: value.currency,\n payment_method_id: value.payment_method_id,\n customer_id: value.customer_id,\n description: value.description ?? \"\",\n metadata: value.metadata ?? {},\n });\n return res.data;\n } catch (error: any) {\n logger.log({\n level: \"error\",\n message: `${error}`,\n });\n\n if (error instanceof AppError) {\n throw error;\n }\n throw new BadRequestError(error.response.data.message);\n }\n }\n\n async function getPaymentMethodById(id: string) {\n try {\n const res = await axios.get(`v2/payment_methods/${id}`);\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get payment method.\");\n }\n }\n\n async function getCustomerById(id: string) {\n try {\n const res = await axios.get(`/customers/${id}`);\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get customers.\");\n }\n }\n\n async function eWalletLinkOnly(value: Record<string, any>) {\n try {\n validateEWalletPayment(value);\n } catch (error: any) {\n throw new BadRequestError(error);\n }\n\n try {\n const res = await axios.post(\"/v2/payment_methods\", value);\n return res.data;\n } catch (error: any) {\n throw new BadRequestError(\"Failed to link payment method.\");\n }\n }\n\n async function directDebitLinkOnly(value: Record<string, any>) {\n try {\n validateDirectDebit(value);\n } catch (error: any) {\n throw new BadRequestError(error);\n }\n\n try {\n const res = await axios.post(\"/v2/payment_methods\", value);\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to link payment method.\");\n }\n }\n\n async function cardLinkOnly(value: Record<string, any>) {\n try {\n validateCardPayment(value);\n } catch (error: any) {\n throw new BadRequestError(error);\n }\n\n try {\n const res = await axios.post(\"/v2/payment_methods\", value);\n return res.data;\n } catch (error: any) {\n throw new BadRequestError(\n error.response.data.message ?? \"Failed to link payment method.\"\n );\n }\n }\n\n async function getPaymentMethodsByCustomerId(customerId: string) {\n try {\n const res = await axios.get(\"/v2/payment_methods\", {\n params: { customer_id: customerId, status: \"ACTIVE\" },\n });\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get payment methods.\");\n }\n }\n\n async function updatePaymentMethodStatusById(id: string, status: string) {\n try {\n const res = await axios.patch(`/v2/payment_methods/${id}`, {\n status,\n });\n return res.data;\n } catch (error) {\n throw new BadRequestError(\"Failed to update status payment methods.\");\n }\n }\n\n return {\n createCustomer,\n linkPaymentMethodEWallet,\n initGCashLinkingAndPaymentRequest,\n initSubscription,\n linkPaymentMethodCard,\n eWalletSubsequentPayment,\n checkSubscriptionStatus,\n cancelSubscription,\n getSubscription,\n getSubscriptionCycles,\n pay,\n getPaymentMethodById,\n getCustomerById,\n eWalletLinkOnly,\n directDebitLinkOnly,\n cardLinkOnly,\n getPaymentMethodsByCustomerId,\n updatePaymentMethodStatusById,\n };\n}\n","import { z } from \"zod\";\n\nconst alphanumeric = /^[a-zA-Z0-9 ]*$/;\nconst iso3166_2 = /^[A-Z]{2}$/;\nconst e164 = /^\\+[1-9]\\d{1,14}$/;\n\nconst AddressSchema = z.object({\n country: z.string().regex(iso3166_2, \"Invalid country code\"),\n street_line1: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n street_line2: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n city: z.string().max(255).regex(alphanumeric, \"Alphanumeric only\").optional(),\n province_state: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n postal_code: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n category: z.enum([\"HOME\", \"WORK\", \"PROVINCIAL\"]).optional(),\n is_primary: z.boolean().optional(),\n});\n\nconst IdentityAccountSchema = z.object({\n type: z.enum([\n \"BANK_ACCOUNT\",\n \"EWALLET\",\n \"CREDIT_CARD\",\n \"PAY_LATER\",\n \"OTC\",\n \"QR_CODE\",\n \"SOCIAL_MEDIA\",\n ]),\n company: z.string().max(100).optional(),\n description: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n country: z.string().regex(iso3166_2, \"Invalid country code\").optional(),\n properties: z.any().optional(),\n});\n\nconst KycDocumentSchema = z.object({\n country: z.string().regex(iso3166_2, \"Invalid country code\"),\n type: z.enum([\n \"BIRTH_CERTIFICATE\",\n \"BANK_STATEMENT\",\n \"DRIVING_LICENSE\",\n \"IDENTITY_CARD\",\n \"PASSPORT\",\n \"VISA\",\n \"BUSINESS_REGISTRATION\",\n \"BUSINESS_LICENSE\",\n ]),\n sub_type: z\n .enum([\n \"NATIONAL_ID\",\n \"CONSULAR_ID\",\n \"VOTER_ID\",\n \"POSTAL_ID\",\n \"RESIDENCE_PERMIT\",\n \"TAX_ID\",\n \"STUDENT_ID\",\n \"MILITARY_ID\",\n \"MEDICAL_ID\",\n ])\n .optional(),\n document_name: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n document_number: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n expires_at: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Invalid date format YYYY-MM-DD\")\n .optional(),\n holder_name: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n document_images: z.array(z.string()).optional(),\n});\n\nconst IndividualDetailSchema = z.object({\n given_names: z.string().regex(alphanumeric, \"Alphanumeric only\"),\n surname: z.string().regex(alphanumeric, \"Alphanumeric only\").optional(),\n nationality: z.string().regex(iso3166_2, \"Invalid country code\").optional(),\n place_of_birth: z\n .string()\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n date_of_birth: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Invalid date format YYYY-MM-DD\")\n .optional(),\n gender: z.enum([\"MALE\", \"FEMALE\", \"OTHER\"]).optional(),\n employment: z.string().optional(),\n employer_name: z.string().regex(alphanumeric, \"Alphanumeric only\").optional(),\n nature_of_business: z\n .string()\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n role_description: z\n .string()\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n});\n\nconst BusinessDetailSchema = z.object({\n business_name: z.string().regex(alphanumeric, \"Alphanumeric only\"),\n trading_name: z\n .string()\n .max(255)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n business_type: z.enum([\n \"CORPORATION\",\n \"SOLE_PROPRIETOR\",\n \"PARTNERSHIP\",\n \"COOPERATIVE\",\n \"TRUST\",\n \"NON_PROFIT\",\n \"GOVERNMENT\",\n ]),\n nature_of_business: z\n .string()\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n business_domicile: z\n .string()\n .regex(iso3166_2, \"Invalid country code\")\n .optional(),\n date_of_registration: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Invalid date format YYYY-MM-DD\")\n .optional(),\n});\n\nexport const CustomerSchema = z\n .object({\n reference_id: z.string().max(255).regex(alphanumeric, \"Alphanumeric only\"),\n type: z.enum([\"INDIVIDUAL\", \"BUSINESS\"]),\n individual_detail: z.lazy(() => IndividualDetailSchema).optional(),\n business_detail: z.lazy(() => BusinessDetailSchema).optional(),\n mobile_number: z\n .string()\n .max(50)\n .regex(e164, \"Invalid E.164 format\")\n .optional(),\n phone_number: z\n .string()\n .max(50)\n .regex(e164, \"Invalid E.164 format\")\n .optional(),\n hashed_phone_number: z.string().max(255).optional(),\n email: z.string().max(50).email(\"Invalid email format\").optional(),\n addresses: z.array(AddressSchema).optional(),\n identity_accounts: z.array(IdentityAccountSchema).optional(),\n kyc_documents: z.array(KycDocumentSchema).optional(),\n description: z\n .string()\n .max(500)\n .regex(alphanumeric, \"Alphanumeric only\")\n .optional(),\n date_of_registration: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}$/, \"Invalid date format YYYY-MM-DD\")\n .optional(),\n })\n .refine(\n (data) =>\n (data.type === \"INDIVIDUAL\" && data.individual_detail) ||\n (data.type === \"BUSINESS\" && data.business_detail),\n {\n message:\n \"individual_detail is required if type is INDIVIDUAL, and business_detail is required if type is BUSINESS\",\n }\n );\n\nexport type TCustomer = z.infer<typeof CustomerSchema>;\n","import { Db, Collection, ObjectId } from \"mongodb\";\nimport { z } from \"zod\";\n\n// Payment Status\nconst TPaymentStatus = z.enum([\"pending\", \"completed\", \"failed\", \"refunded\"]);\ntype TPaymentStatus = z.infer<typeof TPaymentStatus>;\n\n// Payment Method\nconst TPaymentMethod = z.enum([\n \"CARD\",\n \"DIRECT_DEBIT\",\n \"VIRTUAL_ACCOUNT\",\n \"EWALLET\",\n \"OVER_THE_COUNTER\",\n \"QR_CODE\",\n \"PAYPAL\",\n]);\nexport type TPaymentMethodType = z.infer<typeof TPaymentMethod>;\n\n// Payment Metadata\nconst TPaymentMetadata = z\n .object({\n userId: z.union([z.string().length(24), z.instanceof(ObjectId)]).optional(),\n orgId: z.union([z.string().length(24), z.instanceof(ObjectId)]).optional(),\n transactionId: z.string().optional(), // External payment processor transaction ID\n currency: z.string().default(\"PHP\"),\n paymentMethod: z.string().optional(),\n paymentMethodType: z.string().optional(),\n paymentMethodId: z.string().optional(),\n payment: z.string().optional(),\n subscriptionId: z\n .union([z.string().length(24), z.instanceof(ObjectId)])\n .optional(),\n })\n .transform((val) => {\n if (typeof val.subscriptionId === \"string\") {\n val.subscriptionId = new ObjectId(val.subscriptionId);\n }\n\n if (typeof val.orgId === \"string\") {\n val.orgId = new ObjectId(val.orgId);\n }\n\n if (typeof val.userId === \"string\") {\n val.userId = new ObjectId(val.userId);\n }\n return val;\n });\ntype TPaymentMetadata = z.infer<typeof TPaymentMetadata>;\n\n// Payment Schema\nconst TPayment = z.object({\n _id: z.union([z.string().length(24), z.instanceof(ObjectId)]).optional(),\n invoiceId: z\n .string()\n .optional()\n .default(() => \"\"),\n amount: z.number().min(0),\n paymentMethod: TPaymentMethod,\n status: TPaymentStatus,\n metadata: TPaymentMetadata,\n createdAt: z\n .date()\n .default(() => new Date())\n .optional(),\n updatedAt: z.date().optional(),\n});\nexport type TPayment = z.infer<typeof TPayment>;\n\n// Define the Zod schema\nexport const DirectDebitSchema = z.object({\n type: z.literal(\"DIRECT_DEBIT\"),\n direct_debit: z.object({\n channel_code: z.string(),\n channel_properties: z.object({\n success_return_url: z.string().url(),\n failure_return_url: z.string().url(),\n }),\n }),\n reusability: z.enum([\"MULTIPLE_USE\", \"SINGLE_USE\"]),\n description: z.string().optional(),\n metadata: z.record(z.string()).optional().default({}),\n customer_id: z.string(),\n});\n\n// TypeScript type inferred from Zod schema\nexport type DirectDebit = z.infer<typeof DirectDebitSchema>;\n\n// Function to create a valid Direct Debit object\nexport function validateDirectDebit(data: Record<string, any>): DirectDebit {\n try {\n return DirectDebitSchema.parse(data);\n } catch (error: any) {\n throw new Error(error.issues[0].message);\n }\n}\n\n// Define the Zod schema\nexport const CardPaymentSchema = z.object({\n type: z.literal(\"CARD\"),\n card: z.object({\n currency: z.literal(\"PHP\"),\n channel_properties: z.object({\n skip_three_d_secure: z.boolean(),\n success_return_url: z.string().url(),\n failure_return_url: z.string().url(),\n }),\n card_information: z.object({\n card_number: z.string().regex(/^\\d{16}$/, \"Invalid card number\"),\n expiry_month: z\n .string()\n .regex(/^(0[1-9]|1[0-2])$/, \"Invalid expiry month\"),\n expiry_year: z.string().regex(/^\\d{4}$/, \"Invalid expiry year\"),\n cvv: z.string().regex(/^\\d{3,4}$/, \"Invalid CVV\"),\n cardholder_name: z.string(),\n }),\n }),\n reusability: z.enum([\"MULTIPLE_USE\", \"SINGLE_USE\"]),\n description: z.string().optional(),\n metadata: z.record(z.string()).optional().default({}),\n});\n\n// TypeScript type inferred from Zod schema\nexport type CardPayment = z.infer<typeof CardPaymentSchema>;\n\nexport function validateCardPayment(data: Record<string, any>): CardPayment {\n try {\n return CardPaymentSchema.parse(data);\n } catch (error: any) {\n throw new Error(error.issues[0].message);\n }\n}\n\n// Define the Zod schema\nexport const EWalletPaymentSchema = z.object({\n type: z.literal(\"EWALLET\"),\n reusability: z.enum([\"MULTIPLE_USE\", \"SINGLE_USE\"]),\n customer_id: z.string(),\n country: z.string(),\n ewallet: z.object({\n channel_code: z.string(),\n channel_properties: z.object({\n success_return_url: z.string().url(),\n failure_return_url: z.string().url(),\n cancel_return_url: z.string().url(),\n }),\n }),\n description: z.string().optional(),\n metadata: z.record(z.string()).optional().default({}),\n});\n\n// TypeScript type inferred from Zod schema\nexport type EWalletPayment = z.infer<typeof EWalletPaymentSchema>;\n\nexport function validateEWalletPayment(\n data: Record<string, any>\n): EWalletPayment {\n try {\n return EWalletPaymentSchema.parse(data);\n } catch (error: any) {\n throw new Error(error.issues[0].message);\n }\n}\n\n// Payment Model Composable\nexport function usePaymentModel(db: Db) {\n const collection: Collection<TPayment> = db.collection<TPayment>(\"payments\");\n\n function createPayment(data: Partial<TPayment>) {\n const defaultValues = {\n _id: new ObjectId(),\n status: \"pending\" as TPaymentStatus,\n createdAt: new Date(),\n updatedAt: new Date(),\n };\n return TPayment.parse({ ...defaultValues, ...data });\n }\n\n function validatePayment(data: unknown) {\n try {\n return TPayment.parse(data);\n } catch (error: any) {\n throw new Error(error.issues[0].message);\n }\n }\n\n return {\n collection,\n createPayment,\n validatePayment,\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n useAtlas,\n paginate,\n logger,\n makeCacheKey,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MRole, TMiniRole, TRole } from \"../models/role.model\";\nimport { ObjectId, ClientSession } from \"mongodb\";\nimport { TKeyValuePair } from \"../models/local.model\";\n\nexport function useRoleRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"roles\";\n\n const collection = db.collection(namespace_collection);\n\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndex({ name: 1 });\n await collection.createIndex({ type: 1 });\n await collection.createIndex({ status: 1 });\n } catch (error) {\n throw new InternalServerError(\"Failed to create index on role.\");\n }\n }\n\n async function createTextIndex() {\n try {\n await collection.createIndex({ name: \"text\" });\n } catch (error) {\n throw new InternalServerError(\"Failed to create text index on role.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex(\n { name: 1, type: 1, org: 1 },\n { unique: true }\n );\n } catch (error) {\n throw new InternalServerError(\"Failed to create unique index on role.\");\n }\n }\n\n async function addRole(value: TRole, session?: ClientSession) {\n value = new MRole(value);\n\n try {\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId;\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Role already exists\");\n }\n\n throw new InternalServerError(\"Failed to create role.\");\n }\n }\n\n async function getRoleByUserId(value: ObjectId | string) {\n try {\n value = new ObjectId(value);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n user: String(value),\n });\n const cached = await getCache<TRole>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getRoleByUserId role: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TRole>({ user: value });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for role by user ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for role by user ID: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\"Failed to retrieve role by user ID.\");\n }\n }\n\n async function getRoleById(_id: ObjectId | string) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n id: _id.toString(),\n });\n const cached = await getCache<TRole>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getRoleById role: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne({ _id });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for role by id: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for role by id: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\"Failed to retrieve role by ID.\");\n }\n }\n\n async function getRoleByName(name: string) {\n if (!name) {\n throw new BadRequestError(\"Role name is required.\");\n }\n\n try {\n // Check cache first\n const cacheKey = makeCacheKey(namespace_collection, {\n name: name,\n });\n const cached = await getCache<TRole>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getRoleByName role: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne({ name });\n\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for role by name: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for role by name: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n throw new InternalServerError(\"Failed to retrieve role by name.\");\n }\n }\n\n async function getRoles(\n {\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n type = \"\",\n org = \"\",\n } = {} as {\n search?: string;\n page?: number;\n limit?: number;\n sort?: any;\n type?: string;\n org?: string | ObjectId;\n }\n ) {\n limit = limit > 0 ? limit : 10;\n search = search || \"\";\n page = page > 0 ? page - 1 : 0;\n\n if (org && typeof org === \"string\" && org.length === 24) {\n try {\n org = new ObjectId(org);\n } catch (error) {\n throw new BadRequestError(\"Invalid organization ID.\");\n }\n }\n\n const query: TKeyValuePair = { status: \"active\", org };\n\n const cacheKeyOptions: Record<string, any> = {\n status: \"active\",\n limit,\n page,\n };\n\n if (org) {\n cacheKeyOptions.org = String(org);\n }\n\n if (type) {\n cacheKeyOptions.type = type;\n query.type = type;\n }\n\n if (search) {\n cacheKeyOptions.search = search;\n query.$text = { $search: search };\n }\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n cacheKeyOptions.sort = JSON.stringify(sort);\n\n const cacheKey = makeCacheKey(namespace_collection, cacheKeyOptions);\n\n // Check cache first\n const cached = await getCache<TRole[]>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getRoles: ${cacheKey}`,\n });\n return cached;\n }\n\n try {\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getRoles: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getRoles: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw error;\n }\n }\n\n async function updateRole(\n _id: string | ObjectId,\n value: TMiniRole,\n session?: ClientSession\n ) {\n if (!_id) {\n throw new BadRequestError(\"Role ID is required.\");\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid role ID.\");\n }\n\n if (!value.name) {\n delete value.name;\n }\n\n if (!value.permissions) {\n delete value.permissions;\n }\n\n if (value.name || value.permissions) {\n try {\n await collection.updateOne({ _id }, { $set: value }, { session });\n delCachedData();\n return \"Successfully updated role.\";\n } catch (error) {\n throw new InternalServerError(\"Failed to update role.\");\n }\n } else {\n throw new BadRequestError(\"No fields to update.\");\n }\n }\n\n async function updatePermissionsById(\n _id: string | ObjectId,\n permissions: TRole[\"permissions\"],\n session?: ClientSession\n ) {\n if (!_id) {\n throw new BadRequestError(\"Role ID is required.\");\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid role ID.\");\n }\n\n if (!permissions) {\n throw new BadRequestError(\"Permissions are required.\");\n }\n\n if (permissions.length === 0) {\n throw new BadRequestError(\"Permissions cannot be empty.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $set: { permissions } },\n { session }\n );\n delCachedData();\n return \"Successfully updated role permissions.\";\n } catch (error) {\n throw new InternalServerError(\"Failed to update role permissions.\");\n }\n }\n\n async function deleteRole(_id: ObjectId | string, session?: ClientSession) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n await collection.deleteOne(\n { _id },\n {\n session,\n }\n );\n delCachedData();\n return \"Successfully deleted role.\";\n } catch (error) {\n throw new InternalServerError(\"Failed to delete role.\");\n }\n }\n\n return {\n createIndex,\n createTextIndex,\n createUniqueIndex,\n addRole,\n getRoles,\n getRoleByUserId,\n getRoleById,\n getRoleByName,\n updateRole,\n deleteRole,\n updatePermissionsById,\n };\n}\n","import { ObjectId } from \"mongodb\";\n\nexport type TRole = {\n _id?: ObjectId;\n org?: string | ObjectId;\n name?: string;\n description?: string;\n permissions?: Array<string>;\n type?: string;\n status?: string;\n default?: boolean;\n createdBy?: string | ObjectId;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n};\n\nexport type TMiniRole = Pick<TRole, \"name\" | \"permissions\">;\n\nexport class MRole implements TRole {\n _id: ObjectId;\n org: string | ObjectId;\n name?: string;\n description?: string;\n permissions?: Array<string>;\n type?: string;\n status?: string;\n default?: boolean;\n createdBy?: string | ObjectId;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n constructor(value: TRole) {\n if (typeof value._id === \"string\") {\n try {\n value._id = new ObjectId(value._id);\n } catch (error) {\n throw new Error(\"Invalid _id.\");\n }\n }\n\n if (typeof value.org === \"string\" && value.org.length === 24) {\n try {\n value.org = new ObjectId(value.org);\n } catch (error) {\n throw new Error(\"Invalid org.\");\n }\n }\n\n this.org = value.org ?? \"\";\n\n this._id = value._id ?? new ObjectId();\n this.name = value.name ?? \"\";\n this.description = value.description ?? \"\";\n this.permissions = value.permissions ?? [];\n this.type = value.type ? value.type : \"account\";\n this.status = value.status ?? \"active\";\n\n this.default = value.default ?? false;\n\n if (value.createdBy) {\n try {\n value.createdBy = new ObjectId(value.createdBy);\n } catch (error) {\n throw new Error(\"Invalid createdBy.\");\n }\n }\n this.createdBy = value.createdBy ?? \"\";\n\n this.createdAt = value.createdAt ?? new Date().toISOString();\n this.updatedAt = value.updatedAt ?? \"\";\n this.deletedAt = value.deletedAt ?? \"\";\n }\n}\n","import {\n AppError,\n BadRequestError,\n InternalServerError,\n} from \"@eeplatform/nodejs-utils\";\nimport { Request, Response, NextFunction } from \"express\";\nimport Joi from \"joi\";\nimport { useUserService } from \"./../services/user.service\";\nimport { useUserRepo } from \"../repositories/user.repository\";\n\nexport function useUserController() {\n const {\n updateName: _updateName,\n updateBirthday: _updateBirthday,\n updateUserFieldById: _updateUserFieldById,\n updateUserProfile: _updateUserProfile,\n getUsers: _getUsers,\n createUserByInvite: _createUserByInvite,\n createUserBySignUp: _createUserBySignUp,\n } = useUserService();\n\n const { getUserById: _getUserById } = useUserRepo();\n\n async function getUsers(req: Request, res: Response, next: NextFunction) {\n const status = (req.query.status as string) ?? \"\";\n const search = (req.query.search as string) ?? \"\";\n const page = Number(req.query.page) ?? 1;\n\n const validation = Joi.object({\n status: Joi.string().required(),\n search: Joi.string().optional().allow(\"\", null),\n page: Joi.number().required(),\n });\n\n const { error } = validation.validate({ status, search, page });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const items = await _getUsers({ status, search, page });\n\n res.json(items);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getUserById(req: Request, res: Response, next: NextFunction) {\n const id = (req.params.id as string) || \"\";\n\n const validation = Joi.string().hex().validate(id);\n if (validation.error) {\n throw new BadRequestError(\"Invalid id.\");\n }\n\n try {\n const user = await _getUserById(id);\n if (!user) {\n throw new BadRequestError(\"User not found.\");\n }\n\n res.json(user);\n } catch (error) {\n next(error);\n }\n }\n\n async function updateName(req: Request, res: Response, next: NextFunction) {\n const id = (req.headers.user as any) ?? \"\";\n const firstName = (req.body.firstName as string) ?? \"\";\n const lastName = (req.body.lastName as string) ?? \"\";\n\n const validation = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n });\n\n const { error } = validation.validate({ firstName, lastName });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _updateName(id, firstName, lastName);\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function updateBirthday(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.headers.user as any) ?? \"\";\n const month = (req.body.month as string) ?? \"\";\n const day = (req.body.day as number) ?? 0;\n const year = (req.body.year as number) ?? 0;\n\n const validation = Joi.object({\n month: Joi.string().required(),\n day: Joi.number().integer().min(1).max(31).required(),\n year: Joi.number()\n .integer()\n .min(1900)\n .max(new Date().getFullYear())\n .required(),\n });\n\n const { error } = validation.validate({ month, day, year });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _updateBirthday(id, month, day, year);\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function updateUserFieldById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const _id = req.params.id as string;\n const { field, value } = req.body;\n\n // Runtime validation using Joi\n const validation = Joi.object({\n _id: Joi.string().hex().required(),\n field: Joi.string()\n .valid(\"gender\", \"email\", \"contact\", \"profile\")\n .required(),\n value: Joi.alternatives().conditional(\"field\", {\n is: \"email\",\n then: Joi.string().email().required(),\n otherwise: Joi.string().required(),\n }),\n });\n\n const { error } = validation.validate({ _id, field, value });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _updateUserFieldById({ _id, field, value });\n res.json({ message });\n } catch (error) {\n next(error);\n }\n }\n\n async function updateUserProfile(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n if (!req.file) {\n res.status(400).send(\"File is required!\");\n return;\n }\n\n const previousProfile = (req.body.previousProfile as string) ?? \"\";\n\n const validation = Joi.object({\n previousProfile: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ previousProfile });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n const user = (req.headers[\"user\"] as string) ?? \"\";\n\n try {\n await _updateUserProfile({\n file: req.file,\n user,\n previousProfile,\n });\n res.json({ message: \"Successfully updated profile picture.\" });\n return;\n } catch (error: any) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(error));\n }\n }\n }\n\n async function createUserByVerification(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const firstName = (req.body.firstName as string) ?? \"\";\n const lastName = (req.body.lastName as string) ?? \"\";\n const password = (req.body.password as string) ?? \"\";\n const id = (req.params.id as string) ?? \"\";\n const type = (req.body.type as string) ?? \"\";\n\n const validation = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n password: Joi.string().required(),\n id: Joi.string().hex().required(),\n type: Joi.string().required(),\n });\n\n const { error } = validation.validate({\n firstName,\n lastName,\n password,\n id,\n type,\n });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n if (type === \"user-invite\") {\n await _createUserByInvite({ firstName, lastName, password, id });\n }\n\n if (type === \"user-sign-up\") {\n await _createUserBySignUp({\n firstName,\n lastName,\n password,\n id,\n });\n }\n\n res.json({ message: \"Successfully created account.\" });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n return {\n getUsers,\n getUserById,\n updateName,\n updateBirthday,\n updateUserFieldById,\n updateUserProfile,\n createUserByVerification,\n };\n}\n","import { useUserRepo } from \"./../repositories/user.repository\";\nimport {\n AppError,\n BadRequestError,\n comparePassword,\n generateToken,\n InternalServerError,\n NotFoundError,\n} from \"@eeplatform/nodejs-utils\";\nimport { ACCESS_TOKEN_SECRET, REFRESH_TOKEN_SECRET } from \"./../config\";\nimport { useTokenRepo } from \"./../repositories/token.repository\";\nimport jwt from \"jsonwebtoken\";\nimport { TUser } from \"../models/user.model\";\n\nexport function useAuthService() {\n const expiresIn = \"1m\";\n\n async function login(\n { email, password } = {} as { email: string; password: string }\n ) {\n if (!email) {\n throw new BadRequestError(\"Email is required\");\n }\n\n if (!password) {\n throw new BadRequestError(\"Password is required\");\n }\n\n // fetch user from database\n let _user: TUser | null;\n\n try {\n _user = await useUserRepo().getUserByEmail(email);\n } catch (error) {\n if (error instanceof AppError) {\n throw error;\n } else {\n throw new InternalServerError(`${error}`);\n }\n }\n\n if (!_user) {\n throw new NotFoundError(\n \"Invalid user email. Please check your email and try again.\"\n );\n }\n\n if (_user.status === \"suspended\") {\n throw new BadRequestError(\n \"Your account is currently suspended. Please contact support for assistance.\"\n );\n }\n\n // verify password\n const isPasswordValid = await comparePassword(password, _user.password);\n if (!isPasswordValid) {\n throw new BadRequestError(\"Invalid password\");\n }\n\n // create and return token\n const metadata = { user: _user._id };\n let refreshToken;\n\n try {\n refreshToken = generateToken({\n secret: REFRESH_TOKEN_SECRET,\n metadata,\n options: { expiresIn: \"7d\" },\n });\n } catch (error) {\n throw new BadRequestError(\"Error generating refresh token\");\n }\n\n let accessToken;\n\n try {\n accessToken = generateToken({\n secret: ACCESS_TOKEN_SECRET,\n metadata,\n options: { expiresIn },\n });\n } catch (error) {\n throw new BadRequestError(\"Error generating access token\");\n }\n\n const user = _user._id ?? \"\";\n\n try {\n await useTokenRepo().createToken({ token: refreshToken, user });\n } catch (error) {\n throw new BadRequestError(\"Error creating refresh token\");\n }\n\n return { accessToken, refreshToken, id: _user._id };\n }\n\n async function refreshToken(token: string) {\n type TMetadata = { user: string };\n\n let decoded: TMetadata;\n\n try {\n decoded = (await jwt.verify(token, REFRESH_TOKEN_SECRET)) as TMetadata;\n } catch (error) {\n throw new BadRequestError(\"Invalid refresh token\");\n }\n\n let _token;\n\n try {\n _token = await useTokenRepo().getToken(token);\n if (!_token) {\n throw new NotFoundError(\"Invalid token\");\n }\n } catch (error) {\n if (error instanceof AppError) {\n throw error;\n } else {\n throw new InternalServerError(`${error}`);\n }\n }\n\n let accessToken;\n\n try {\n accessToken = generateToken({\n secret: ACCESS_TOKEN_SECRET,\n metadata: { user: decoded.user },\n options: { expiresIn },\n });\n } catch (error) {\n throw new BadRequestError(\"Error generating access token\");\n }\n\n return accessToken;\n }\n\n async function logout(token: string) {\n let _token;\n\n try {\n _token = await useTokenRepo().getToken(token);\n if (!_token) {\n throw new NotFoundError(\"Invalid token\");\n }\n } catch (error) {\n if (error instanceof AppError) {\n throw error;\n } else {\n throw new InternalServerError(`${error}`);\n }\n }\n\n try {\n await useTokenRepo().deleteToken(token);\n } catch (error) {\n throw new InternalServerError(\"Error deleting token\");\n }\n\n return \"Logged out successfully\";\n }\n\n return {\n login,\n refreshToken,\n logout,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport Joi from \"joi\";\nimport { useAuthService } from \"./../services/auth.service\";\nimport {\n AppError,\n BadRequestError,\n InternalServerError,\n} from \"@eeplatform/nodejs-utils\";\nimport { useUserService } from \"../services/user.service\";\nimport { useVerificationService } from \"../services/verification.service\";\n\nexport function useAuthController() {\n const { signUp: _signUp } = useVerificationService();\n\n async function login(req: Request, res: Response, next: NextFunction) {\n const email = req.body.email as string;\n const password = req.body.password as string;\n\n const validation = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().required(),\n });\n\n const { error } = validation.validate({ email, password });\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const token = await useAuthService().login({ email, password });\n res.json(token);\n } catch (error) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(\"An unexpected error occurred\"));\n }\n }\n }\n\n async function refreshToken(req: Request, res: Response, next: NextFunction) {\n const refreshToken = req.body.token as string;\n\n if (!refreshToken) {\n next(new BadRequestError(\"Refresh token is required\"));\n return;\n }\n\n try {\n const newRefreshToken = await useAuthService().refreshToken(refreshToken);\n res.json({ token: newRefreshToken });\n } catch (error) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(\"An unexpected error occurred\"));\n }\n }\n }\n\n async function logout(req: Request, res: Response, next: NextFunction) {\n const token = (req.params.id as string) || \"\";\n\n if (!token) {\n next(new BadRequestError(\"Token is required\"));\n return;\n }\n\n try {\n await useAuthService().logout(token);\n res.json({ message: \"Logged out successfully\" });\n } catch (error) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(\"An unexpected error occurred\"));\n }\n }\n }\n\n async function resetPassword(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const otp = (req.body.otp as string) || \"\";\n const newPassword = (req.body.newPassword as string) || \"\";\n const passwordConfirmation =\n (req.body.passwordConfirmation as string) || \"\";\n\n const validation = Joi.object({\n otp: Joi.string().hex().required(),\n newPassword: Joi.string().required().min(8),\n passwordConfirmation: Joi.string().required().min(8),\n });\n\n const { error } = validation.validate({\n otp,\n newPassword,\n passwordConfirmation,\n });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await useUserService().resetPassword(\n otp,\n newPassword,\n passwordConfirmation\n );\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function signUp(req: Request, res: Response, next: NextFunction) {\n const email = req.body.email as string;\n const referralCode = (req.body.referral as string) ?? \"\";\n\n const validation = Joi.object({\n email: Joi.string().email().required(),\n referralCode: Joi.string().min(4).optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ email, referralCode });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _signUp({\n email,\n metadata: {\n referralCode,\n },\n });\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n return {\n login,\n refreshToken,\n logout,\n resetPassword,\n signUp,\n };\n}\n","import { TFile } from \"../models/file.model\";\nimport { useFileRepo } from \"../repositories/file.repository\";\nimport { logger, useS3, useAtlas } from \"@eeplatform/nodejs-utils\";\nimport {\n SPACES_ACCESS_KEY,\n SPACES_BUCKET,\n SPACES_ENDPOINT,\n SPACES_REGION,\n SPACES_SECRET_KEY,\n} from \"../config\";\nimport cron from \"node-cron\";\nexport function useFileService() {\n const {\n createFile: _createFile,\n deleteFileById,\n getAllDraftedFiles,\n } = useFileRepo();\n\n const s3 = new useS3({\n accessKeyId: SPACES_ACCESS_KEY,\n secretAccessKey: SPACES_SECRET_KEY,\n endpoint: SPACES_ENDPOINT,\n region: SPACES_REGION,\n bucket: SPACES_BUCKET,\n forcePathStyle: true,\n });\n\n async function createFile(value: Express.Multer.File) {\n const session = useAtlas.getClient()?.startSession();\n\n session?.startTransaction();\n\n const file: TFile = {\n name: value.originalname,\n createdAt: new Date().toISOString(),\n };\n\n try {\n const id = await _createFile(file, session);\n await s3.uploadObject({\n key: id,\n body: value.buffer,\n contentType: value.mimetype,\n });\n\n await session?.commitTransaction();\n\n return id;\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function deleteFile(id: string) {\n const session = useAtlas.getClient()?.startSession();\n\n session?.startTransaction();\n\n try {\n await deleteFileById(id, session);\n await s3.deleteObject(id);\n await session?.commitTransaction();\n\n return \"File deleted successfully\";\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n function deleteDraft() {\n cron.schedule(\"0 0 * * *\", async () => {\n const files = await getAllDraftedFiles();\n for (let index = 0; index < files.length; index++) {\n const file = files[index];\n try {\n await deleteFile(file._id.toString());\n await logger.log({\n level: \"info\",\n message: \"Successfully deleted draft files.\",\n });\n } catch (error) {\n logger.log({\n level: \"info\",\n message: \"Successfully deleted draft files.\",\n });\n return;\n }\n }\n });\n }\n\n return {\n createFile,\n deleteFile,\n deleteDraft,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { useFileService } from \"../services/file.service\";\nimport {\n AppError,\n BadRequestError,\n InternalServerError,\n} from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\n\nexport function useFileController() {\n const { createFile, deleteFile: _deleteFile } = useFileService();\n async function upload(req: Request, res: Response, next: NextFunction) {\n if (!req.file) {\n res.status(400).send(\"File is required!\");\n return;\n }\n\n try {\n const id = await createFile(req.file);\n res.json({ message: \"Successfully uploaded file\", id });\n return;\n } catch (error: any) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(error));\n }\n }\n }\n\n async function deleteFile(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id as string;\n\n const validation = Joi.string().required();\n\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const message = await _deleteFile(id);\n res.json({ message });\n return;\n } catch (error: any) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(error));\n }\n }\n }\n\n return {\n upload,\n deleteFile,\n };\n}\n","import { NextFunction, Request, Response } from \"express\";\nimport Joi from \"joi\";\nimport { BadRequestError, InternalServerError } from \"@eeplatform/nodejs-utils\";\nimport { useRoleRepo } from \"../repositories/role.repository\";\n\nexport function useRoleController() {\n const {\n addRole: _createRole,\n getRoleById: _getRoleById,\n getRoleByUserId: _getRoleByUserId,\n getRoles: _getRoles,\n updateRole: _updateRole,\n deleteRole: _deleteRole,\n updatePermissionsById: _updatePermissionsById,\n } = useRoleRepo();\n\n async function createRole(req: Request, res: Response, next: NextFunction) {\n const payload = req.body;\n const validation = Joi.object({\n name: Joi.string().required(),\n permissions: Joi.array().items(Joi.string()).required(),\n type: Joi.string().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate(payload);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const role = await _createRole(payload);\n res.json({ message: \"Successfully created role.\", data: { role } });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getRoles(req: Request, res: Response, next: NextFunction) {\n const search = (req.query.search as string) ?? \"\";\n const page = parseInt((req.query.page as string) ?? \"1\");\n const limit = parseInt((req.query.limit as string) ?? \"10\");\n const type = (req.query.type as string) ?? \"\";\n const org = (req.query.org as string) ?? \"\";\n\n const validation = Joi.object({\n search: Joi.string().optional().allow(\"\", null),\n page: Joi.number().required(),\n limit: Joi.number().required(),\n type: Joi.string().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ search, page, limit, type, org });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const data = await _getRoles({ search, page, limit, type, org });\n res.json(data);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getRoleByUserId(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const userId = req.params.userId;\n\n const validation = Joi.object({\n userId: Joi.string().required(),\n });\n\n const { error } = validation.validate({ userId });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const role = await _getRoleByUserId(userId);\n res.json({ message: \"Successfully retrieved role.\", data: { role } });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getRoleById(req: Request, res: Response, next: NextFunction) {\n const _id = req.params.id;\n\n const validation = Joi.object({\n _id: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({ _id });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const data = await _getRoleById(_id);\n res.json(data);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function updateRole(req: Request, res: Response, next: NextFunction) {\n const _id = req.params.id;\n const name = (req.body.name as string) ?? \"\";\n const permissions = (req.body.permissions as Array<string>) ?? [];\n const validation = Joi.object({\n _id: Joi.string().required(),\n name: Joi.string().required(),\n permissions: Joi.array().items(Joi.string()).required(),\n });\n\n const { error } = validation.validate({ _id, name, permissions });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const role = await _updateRole(_id, { name, permissions });\n res.json({ message: \"Successfully updated role.\", data: { role } });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function updatePermissionsById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const _id = req.params.id;\n const permissions = (req.body.permissions as Array<string>) ?? [];\n const validation = Joi.object({\n _id: Joi.string().required(),\n permissions: Joi.array().items(Joi.string()).required(),\n });\n\n const { error } = validation.validate({ _id, permissions });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _updatePermissionsById(_id, permissions);\n res.json({ message: \"Successfully updated role permissions.\" });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function deleteRole(req: Request, res: Response, next: NextFunction) {\n const _id = req.params.id;\n\n const validation = Joi.object({\n _id: Joi.string().required(),\n });\n\n const { error } = validation.validate({ _id });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _deleteRole(_id);\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n return {\n createRole,\n getRoles,\n getRoleByUserId,\n getRoleById,\n updateRole,\n deleteRole,\n updatePermissionsById,\n };\n}\n","import { ObjectId } from \"mongodb\";\n\nexport type TEntity = {\n _id?: ObjectId;\n name: string; // The entity's name\n username: string; // The entity's username\n type: \"strand\" | \"office\" | \"bureau\" | \"service\" | \"person\"; // Specifies the type of entry\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n status?: string; // The entity's status\n};\n\nexport class MEntity implements TEntity {\n _id?: ObjectId;\n name: string;\n username: string;\n type: \"strand\" | \"office\" | \"bureau\" | \"service\" | \"person\";\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n status?: string;\n\n constructor(value: TEntity) {\n this._id = value._id ?? new ObjectId();\n this.name = value.name ?? \"\";\n this.username = value.username ?? \"\";\n this.type = value.type;\n this.createdAt = value.createdAt ?? new Date().toISOString();\n this.updatedAt = value.updatedAt ?? \"\";\n this.deletedAt = value.deletedAt ?? \"\";\n this.status = value.status ?? \"active\";\n }\n}\n","import { ClientSession, ObjectId } from \"mongodb\";\nimport { MEntity, TEntity } from \"../models/entity.model\";\nimport {\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { TKeyValuePair } from \"../models/local.model\";\n\nexport function useEntityRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"entities\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndex({ name: 1 });\n await collection.createIndex({ status: 1 });\n } catch (error) {\n throw new Error(\"Failed to create index for entity.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex({ name: 1, deletedAt: 1 }, { unique: true });\n } catch (error) {\n throw new Error(\"Failed to create unique index on email.\");\n }\n }\n\n async function createEntity(value: TEntity, session?: ClientSession) {\n try {\n value = new MEntity(value);\n const res = await collection.insertOne(value, {\n session,\n });\n delCachedData();\n return res.insertedId.toString();\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Entity name already exists.\");\n }\n\n throw new InternalServerError(\"Failed to create entity.\");\n }\n }\n\n async function getEntities({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: TKeyValuePair = { status: \"active\" };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n search,\n page,\n limit,\n sort: JSON.stringify(sort),\n status: \"active\",\n });\n\n try {\n // Check cache first\n const cached = await getCache<Record<string, any>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getEntities: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getEntities: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getEntities: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw error;\n }\n }\n async function updateEntityFieldById(\n { _id, field, value } = {} as {\n _id: string | ObjectId;\n field: string;\n value: string;\n },\n session?: ClientSession\n ) {\n // Allowed fields to prevent arbitrary updates\n const allowedFields = [\"name\"];\n\n if (!allowedFields.includes(field)) {\n throw new BadRequestError(\n `Field \"${field}\" is not allowed to be updated.`\n );\n }\n\n // Validate ID\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $set: { [field]: value } }, // Dynamically set the field\n { session }\n );\n delCachedData();\n return `Successfully updated entity ${field}.`;\n } catch (error) {\n throw new InternalServerError(`Failed to update entity ${field}.`);\n }\n }\n\n async function deleteEntity(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid entity ID.\");\n }\n\n try {\n const result = await collection.updateOne(\n { _id },\n { $set: { status: \"deleted\", deletedAt: new Date().toISOString() } }\n );\n delCachedData();\n return result;\n } catch (error) {\n return Promise.reject(error);\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n createEntity,\n getEntities,\n updateEntityFieldById,\n deleteEntity,\n };\n}\n","import type { Request, Response, NextFunction } from \"express\";\nimport Joi from \"joi\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { useEntityRepo } from \"../repositories/entity.repository\";\n\nexport function useEntityController() {\n const {\n createEntity: _createEntity,\n getEntities: _getEntities,\n updateEntityFieldById: _updateEntityFieldById,\n deleteEntity: _deleteEntity,\n } = useEntityRepo();\n\n async function createEntity(req: Request, res: Response, next: NextFunction) {\n const value = req.body;\n\n const validation = Joi.object({\n name: Joi.string().required(),\n type: Joi.string().valid(\n \"strand\",\n \"office\",\n \"bureau\",\n \"service\",\n \"person\"\n ),\n });\n\n const { error } = validation.validate(value);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const id = await _createEntity(value);\n res.json({ message: \"Successfully created entity.\", id });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function getEntities(req: Request, res: Response, next: NextFunction) {\n const search = (req.query.search as string) ?? \"\";\n const page = Number(req.query.page) ?? 1;\n const limit = Number(req.query.limit) ?? 10;\n\n const validation = Joi.object({\n search: Joi.string().allow(\"\"),\n page: Joi.number().min(1),\n limit: Joi.number().min(1),\n });\n\n const { error } = validation.validate(req.query);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const entities = await _getEntities({\n search,\n page,\n limit,\n });\n\n res.json(entities);\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function updateEntityFieldById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const validation = Joi.object({\n id: Joi.string().required(),\n field: Joi.string().required(),\n value: Joi.string().required(),\n });\n\n const { error } = validation.validate(req.body);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _updateEntityFieldById(req.body);\n res.json({ message: \"Entity updated.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function deleteEntity(req: Request, res: Response, next: NextFunction) {\n const { id } = req.params;\n\n const validation = Joi.object({\n id: Joi.string().required(),\n });\n\n const { error } = validation.validate({ id });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _deleteEntity(id);\n res.json({ message: \"Entity deleted.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n return {\n createEntity,\n getEntities,\n updateEntityFieldById,\n deleteEntity,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { ObjectId } from \"mongodb\";\n\nexport type TBillingRecipient = {\n addedAt?: Date | string;\n email: string;\n};\n\nexport type TSubscription = {\n _id?: ObjectId;\n user?: ObjectId | string;\n org?: ObjectId | string;\n customerId?: string;\n paymentMethodId?: string;\n amount: number;\n description?: string;\n currency: string;\n promoCode?: string;\n type: string;\n paidSeats?: number;\n currentSeats?: number;\n maxSeats?: number;\n status?: string;\n billingCycle: \"monthly\" | \"yearly\";\n billingContacts?: Array<TBillingRecipient>;\n nextBillingDate?: Date;\n lastPaymentStatus?: string;\n failedAttempts?: number;\n createdAt?: string | Date;\n updatedAt?: string | Date;\n deletedAt?: string | Date;\n};\n\nexport function MSubscription(value: TSubscription): TSubscription {\n const schema = Joi.object({\n _id: Joi.string().hex().optional().allow(\"\", null),\n user: Joi.string().hex().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n customerId: Joi.string().optional(),\n paymentMethodId: Joi.string().optional(),\n amount: Joi.number().min(0).required(),\n currency: Joi.string().required(),\n description: Joi.string().optional().allow(\"\", null),\n promoCode: Joi.string().optional().allow(\"\", null),\n type: Joi.string().valid(\"organization\", \"affiliate\").required(),\n paidSeats: Joi.number().optional().min(0).allow(null, \"\"),\n currentSeats: Joi.number().optional().min(0).allow(null, \"\"),\n maxSeats: Joi.number().optional().min(0).allow(null, \"\"),\n status: Joi.string().optional().allow(\"\", null),\n billingCycle: Joi.string().valid(\"monthly\", \"yearly\").required(), // Ensure valid values\n billingContacts: Joi.array()\n .items(\n Joi.object({\n addedAt: Joi.date().optional(),\n email: Joi.string().email().required(),\n })\n )\n .optional(),\n nextBillingDate: Joi.date().optional(),\n lastPaymentStatus: Joi.string().optional().allow(\"\", null),\n failedAttempts: Joi.number().optional().allow(\"\", null),\n createdAt: Joi.date().optional(),\n updatedAt: Joi.string().optional().allow(\"\", null),\n deletedAt: Joi.string().optional().allow(\"\", null),\n }).custom((value, helpers) => {\n // Ensure either `user` or `org` is provided\n if (!value.user && !value.org) {\n return helpers.error(\"any.invalid\", {\n message: \"Either user or org is required.\",\n });\n }\n return value;\n });\n\n const { error } = schema.validate(value);\n if (error) {\n throw new BadRequestError(error.details[0].message);\n }\n\n // Convert valid IDs to ObjectId\n if (value._id) value._id = new ObjectId(value._id);\n if (value.user) value.user = new ObjectId(value.user);\n if (value.org) value.org = new ObjectId(value.org);\n\n // Ensure `createdAt` is properly set\n const createdAt = value.createdAt ? new Date(value.createdAt) : new Date();\n\n // Ensure `nextBillingDate` is set correctly based on `billingCycle`\n const nextBillingDate = new Date(createdAt);\n if (value.billingCycle === \"monthly\") {\n nextBillingDate.setMonth(nextBillingDate.getMonth() + 1);\n } else if (value.billingCycle === \"yearly\") {\n nextBillingDate.setFullYear(nextBillingDate.getFullYear() + 1);\n }\n nextBillingDate.setDate(nextBillingDate.getDate() + 1);\n\n return {\n _id: value._id,\n user: value.user ?? \"\",\n org: value.org ?? \"\",\n customerId: value.customerId ?? \"\",\n paymentMethodId: value.paymentMethodId ?? \"\",\n amount: value.amount,\n currency: value.currency,\n description: value.description ?? \"\",\n type: value.type,\n promoCode: value.promoCode ?? \"\",\n paidSeats: value.paidSeats ?? 0,\n currentSeats: value.currentSeats ?? 0,\n maxSeats: value.maxSeats ?? 0,\n status: \"active\",\n billingCycle: value.billingCycle,\n billingContacts: value.billingContacts ?? [],\n nextBillingDate: nextBillingDate, // Fixed nextBillingDate logic\n lastPaymentStatus: value.lastPaymentStatus ?? \"success\",\n failedAttempts: value.failedAttempts ?? 0,\n createdAt: createdAt.toISOString(),\n updatedAt: value.updatedAt ?? \"\",\n deletedAt: value.deletedAt ?? \"\",\n };\n}\n","import {\n BadRequestError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MSubscription, TSubscription } from \"../models/subscription.model\";\nimport { ClientSession, ObjectId, Collection } from \"mongodb\";\nimport Joi from \"joi\";\n\nexport function useSubscriptionRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new BadRequestError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"subscriptions\";\n const collection: Collection<TSubscription> =\n db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n { key: { subscriptionId: 1 } },\n { key: { user: 1 } },\n { key: { status: 1 } },\n { key: { lastPaymentStatus: 1 } },\n { key: { nextBillingDate: 1 } },\n { key: { failedAttempts: 1 } },\n ]);\n } catch (error) {\n throw new BadRequestError(\"Failed to create index on subscription.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex(\n { user: 1, org: 1, status: 1 },\n { unique: true }\n );\n } catch (error) {\n throw new BadRequestError(\n \"Failed to create unique index on subscription.\"\n );\n }\n }\n\n async function add(value: TSubscription, session?: ClientSession) {\n try {\n value = MSubscription(value);\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId;\n } catch (error: any) {\n throw new BadRequestError(\"Failed to create subscription.\");\n }\n }\n\n async function getById(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { _id: String(_id) });\n\n try {\n // Check cache first\n const cached = await getCache<TSubscription>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getById subscription: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TSubscription>({ _id });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for subscription by ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for subscription by ID: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription by ID.\");\n }\n }\n\n async function getByUserId(user: string | ObjectId) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { user: String(user) });\n\n try {\n // Check cache first\n const cached = await getCache<TSubscription>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByUserId subscription: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TSubscription>({ user });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for subscription by user ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for subscription by user ID: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription by ID.\");\n }\n }\n\n async function getByAffiliateUserId(user: string | ObjectId) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n try {\n return await collection.findOne<TSubscription>({\n user,\n type: \"affiliate\",\n });\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription by ID.\");\n }\n }\n\n async function getByOrgId(org: string | ObjectId) {\n try {\n org = new ObjectId(org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n\n try {\n return await collection.findOne<TSubscription>({\n org,\n type: \"organization\",\n });\n } catch (error) {\n throw new BadRequestError(\"Failed to get subscription by ID.\");\n }\n }\n\n async function getBySubscriptionId(subscriptionId: string) {\n const cacheKey = makeCacheKey(namespace_collection, { subscriptionId });\n\n try {\n // Check cache first\n const cached = await getCache<TSubscription>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getBySubscriptionId: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TSubscription>({ subscriptionId });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for subscription by subscription ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for subscription by subscription ID: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new BadRequestError(\n \"Failed to get subscription by subscription ID.\"\n );\n }\n }\n\n async function getSubscriptions({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"active\",\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { status };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n search,\n page,\n limit,\n sort: JSON.stringify(sort),\n status,\n });\n\n try {\n // Check cache first\n const cached = await getCache<Record<string, any>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getSubscriptions: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getSubscriptions: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getSubscriptions: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw error;\n }\n }\n\n async function updateStatus(_id: string | ObjectId, status: string) {\n try {\n _id = new ObjectId(_id);\n } catch (error: any) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n await collection.updateOne({ _id }, { $set: { status } });\n return \"Successfully updated subscription status.\";\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription status.\");\n }\n }\n\n async function addBillingContactById(_id: string | ObjectId, email: string) {\n try {\n _id = new ObjectId(_id);\n } catch (error: any) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $push: { billingContacts: { email, addedAt: new Date() } } }\n );\n return \"Successfully updated subscription billing contact.\";\n } catch (error) {\n throw new BadRequestError(\n \"Failed to update subscription billing contact.\"\n );\n }\n }\n\n async function updateBillingContactByAddedAt(\n _id: string | ObjectId,\n addedAt: string | Date,\n email: string\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error: any) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n addedAt = new Date(addedAt);\n } catch (error) {\n throw new BadRequestError(\"Invalid addedAt date.\");\n }\n\n try {\n await collection.updateOne(\n { _id, \"billingContacts.addedAt\": addedAt },\n { $set: { \"billingContacts.$.email\": email } }\n );\n return \"Successfully updated subscription billing contact.\";\n } catch (error) {\n throw new BadRequestError(\n \"Failed to update subscription billing contact.\"\n );\n }\n }\n\n async function deleteBillingContactByAddedAt(\n _id: string | ObjectId,\n addedAt: string | Date\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error: any) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n addedAt = new Date(addedAt);\n } catch (error) {\n throw new BadRequestError(\"Invalid addedAt date.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $pull: { billingContacts: { addedAt } } }\n );\n return \"Successfully delete subscription billing contact.\";\n } catch (error) {\n throw new BadRequestError(\n \"Failed to delete subscription billing contact.\"\n );\n }\n }\n\n async function getDueSubscriptions(BATCH_SIZE = 100) {\n const today = new Date();\n const startOfDay = new Date(today.setUTCHours(0, 0, 0, 0)); // Start of today (UTC)\n const endOfDay = new Date(today.setUTCHours(23, 59, 59, 999)); // End of today (UTC)\n\n try {\n return await collection\n .find<TSubscription>({\n status: \"active\",\n lastPaymentStatus: \"success\",\n $or: [\n {\n nextBillingDate: {\n $gte: startOfDay,\n $lte: endOfDay,\n }, // Due Today\n },\n {\n nextBillingDate: { $lt: startOfDay }, // Overdue (Past due)\n },\n ],\n })\n .sort({ nextBillingDate: 1 }) // Process the oldest first\n .limit(BATCH_SIZE)\n .toArray();\n } catch (error) {\n throw new BadRequestError(\"Failed to get due subscriptions.\");\n }\n }\n\n async function getFailedSubscriptions(BATCH_SIZE = 100) {\n try {\n return await collection\n .find<TSubscription>({\n lastPaymentStatus: \"failed\",\n status: \"active\",\n })\n .limit(BATCH_SIZE)\n .toArray();\n } catch (error) {\n throw new BadRequestError(\"Failed to get failed subscriptions.\");\n }\n }\n\n async function processSuccessfulPayment(\n value: Pick<TSubscription, \"nextBillingDate\"> & { _id: string | ObjectId },\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n nextBillingDate: Joi.date().required(),\n });\n\n const { error } = schema.validate(value);\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n value._id = new ObjectId(value._id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const date = value.nextBillingDate as Date;\n\n try {\n const res = await collection.updateOne(\n { _id: value._id },\n {\n $set: {\n nextBillingDate: new Date(\n new Date(date).setMonth(new Date(date).getMonth() + 1)\n ),\n lastPaymentStatus: \"success\",\n failedAttempts: 0,\n updatedAt: new Date(),\n },\n },\n { session }\n );\n\n logger.info(`${res.modifiedCount} subscription updated.`);\n\n return \"Successfully updated subscription.\";\n } catch (error: any) {\n logger.error(`${error}`);\n throw new BadRequestError(\"Failed to update subscription.\");\n }\n }\n\n async function markSubscriptionAsFailed(\n { _id, failed } = {} as { _id: string | ObjectId; failed?: boolean },\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n });\n\n const { error } = schema.validate({ _id });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const updateOptions: Record<string, any> = {\n $inc: { failedAttempts: 1 },\n };\n\n if (failed) {\n updateOptions.$set = { lastPaymentStatus: \"failed\" };\n }\n\n try {\n return await collection.updateOne({ _id }, updateOptions, { session });\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription.\");\n }\n }\n\n async function markSubscriptionAsCanceled(\n _id: string | ObjectId,\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n });\n\n const { error } = schema.validate({ _id });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n return await collection.updateOne(\n { _id },\n {\n $set: { status: \"canceled\" },\n },\n { session }\n );\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription.\");\n }\n }\n\n async function updateStatusById(\n _id: string | ObjectId,\n status: string,\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n });\n\n const { error } = schema.validate({ _id });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n return await collection.updateOne(\n { _id },\n {\n $set: { status },\n },\n { session }\n );\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription status.\");\n }\n }\n\n async function updatePaymentMethodById(\n _id: string | ObjectId,\n paymentMethodId: string,\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n paymentMethodId: Joi.string().required(),\n });\n\n const { error } = schema.validate({ _id, paymentMethodId });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n return await collection.updateOne(\n { _id },\n {\n $set: { paymentMethodId },\n },\n { session }\n );\n } catch (error) {\n throw new BadRequestError(\n \"Failed to update subscription payment method.\"\n );\n }\n }\n\n async function updatePromoCodeById(\n _id: string | ObjectId,\n promoCode: string,\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n promoCode: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = schema.validate({ _id, promoCode });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n return await collection.updateOne(\n { _id },\n {\n $set: { promoCode },\n },\n { session }\n );\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription promo code.\");\n }\n }\n\n async function updateSeatsById(\n {\n _id,\n currentSeats,\n maxSeats,\n paidSeats,\n amount,\n status,\n nextBillingDate,\n } = {} as {\n _id: string | ObjectId;\n currentSeats: number;\n maxSeats: number;\n paidSeats?: number;\n amount: number;\n status?: string;\n nextBillingDate?: string;\n },\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n currentSeats: Joi.number().required().min(1),\n maxSeats: Joi.number().required().min(0),\n paidSeats: Joi.number().optional().min(0),\n amount: Joi.number().required().min(0),\n status: Joi.string().optional().allow(\"\", null),\n nextBillingDate: Joi.date().optional().allow(\"\", null),\n });\n\n const { error } = schema.validate({\n _id,\n currentSeats,\n maxSeats,\n paidSeats,\n amount,\n status,\n nextBillingDate,\n });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const data: Record<string, any> = {\n currentSeats,\n maxSeats,\n amount,\n updatedAt: new Date(),\n };\n\n if (paidSeats) {\n data.paidSeats = paidSeats;\n }\n\n if (status) {\n data.status = status;\n }\n\n if (nextBillingDate) {\n data.nextBillingDate = new Date(nextBillingDate);\n }\n\n try {\n return await collection.updateOne(\n { _id },\n {\n $set: data,\n },\n { session }\n );\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription seats.\");\n }\n }\n\n async function updateMaxSeatsById(\n { _id, seats } = {} as {\n _id: string | ObjectId;\n seats: number;\n },\n session?: ClientSession\n ) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n seats: Joi.number().required().min(1),\n });\n\n const { error } = schema.validate({ _id, seats });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n return await collection.updateOne(\n { _id },\n {\n $set: { maxSeats: seats },\n },\n { session }\n );\n } catch (error) {\n throw new BadRequestError(\"Failed to update subscription paid seats.\");\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n add,\n getById,\n getBySubscriptionId,\n getByUserId,\n getSubscriptions,\n updateStatus,\n getByOrgId,\n getByAffiliateUserId,\n getDueSubscriptions,\n getFailedSubscriptions,\n processSuccessfulPayment,\n markSubscriptionAsFailed,\n markSubscriptionAsCanceled,\n updateSeatsById,\n updateMaxSeatsById,\n updateStatusById,\n updatePromoCodeById,\n updatePaymentMethodById,\n addBillingContactById,\n updateBillingContactByAddedAt,\n deleteBillingContactByAddedAt,\n };\n}\n","import {\n AppError,\n BadRequestError,\n logger,\n useAtlas,\n} from \"@eeplatform/nodejs-utils\";\nimport { useSubscriptionRepo } from \"../repositories/subscription.repository\";\nimport { useUserRepo } from \"../repositories/user.repository\";\nimport { useXenditService } from \"./xendit.service\";\nimport { useOrgRepo } from \"../repositories/organization.repository\";\nimport { TOrg } from \"../models/organization.model\";\nimport { TAddress } from \"../models/address.model\";\nimport { useAddressRepo } from \"../repositories/address.repository\";\nimport { useRoleRepo } from \"../repositories/role.repository\";\nimport { useMemberRepo } from \"../repositories/member.repository\";\nimport { usePromoCodeRepo } from \"../repositories/promo-code.repository\";\nimport Joi from \"joi\";\nimport { TPromoCode, TPromoTier } from \"../models/promo-code.model\";\nimport { useInvoiceRepo } from \"../repositories/invoice.repository\";\nimport { useCounterRepo } from \"../repositories/counter.repository\";\nimport { TInvoice } from \"../models/invoice.model\";\nimport { usePaymentRepo } from \"../repositories/payment.repository\";\nimport { TPayment, TPaymentMethodType } from \"../models/payment.model\";\nimport { usePriceRepo } from \"../repositories/price.repository\";\nimport { TCustomer } from \"../models/customer.mode\";\nimport { TSubscription } from \"../models/subscription.model\";\nimport { TPrice } from \"../models/price.model\";\nimport { usePaypalService } from \"./paypal.service\";\n\nexport function useSubscriptionService() {\n const {\n getByUserId: _getByUserId,\n add,\n getByOrgId: _getByOrgId,\n getDueSubscriptions,\n processSuccessfulPayment,\n updateSeatsById: _updateSeatsById,\n getById: _getById,\n updateMaxSeatsById,\n updateStatusById: _updateStatusById,\n } = useSubscriptionRepo();\n\n const { getUserById: _getUserByUserId, updateUserFieldById } = useUserRepo();\n\n const {\n checkSubscriptionStatus,\n getSubscription,\n pay,\n getCustomerById,\n getPaymentMethodById,\n createCustomer,\n } = useXenditService();\n\n const { add: addOrg, getById: getOrgById } = useOrgRepo();\n const { add: addAddress } = useAddressRepo();\n const { addRole } = useRoleRepo();\n const { add: addMember, countByOrg } = useMemberRepo();\n const { assignByUserId, getByCode } = usePromoCodeRepo();\n const {\n add: addInvoice,\n getByDueDate,\n updateStatusByInvoiceNumber,\n } = useInvoiceRepo();\n const { add: addPayment } = usePaymentRepo();\n const { getByType, incrementByType } = useCounterRepo();\n const { getByNameType } = usePriceRepo();\n const { getByNumber } = useInvoiceRepo();\n\n type TOrgSub = {\n user: string;\n amount: number;\n currency: string;\n promoCode?: string;\n payment_method_id: string;\n payment_method_expiry_month?: string;\n payment_method_expiry_year?: string;\n payment_method_cvv?: string;\n payment_method_cardholder_name?: string;\n payment_method_channel: string;\n payment_method_type: string;\n customer_id: string;\n organization: TOrg;\n billingAddress: TAddress;\n seats: number;\n };\n\n function calculateTieredPricing(\n seats: number,\n tiers: TPromoTier[],\n prorationFactor = 1\n ) {\n let totalCost = 0;\n let nonProratedCost = 0;\n let items: TInvoice[\"items\"] = [];\n\n for (let i = 0; i < tiers.length; i++) {\n let { min, max, price } = tiers[i];\n\n if (max === 0) max = Infinity; // Handle unlimited tier\n\n if (seats >= min) {\n let seatsInTier = Math.min(seats, max) - min + 1;\n let tierCost = seatsInTier * price * prorationFactor; // Apply proration factor\n totalCost += tierCost;\n nonProratedCost += seatsInTier * price;\n\n items.push({\n description: `GoWeekdays Subscription - ${seatsInTier} seats @ ${price} per seat`,\n unitPrice: price,\n quantity: seatsInTier,\n seats: seatsInTier,\n total: formatAmount(tierCost),\n });\n }\n\n if (seats <= max) break; // Stop when all seats are counted\n }\n\n return {\n totalCost: formatAmount(totalCost),\n items,\n nonProratedCost: formatAmount(nonProratedCost),\n };\n }\n\n type TSubscriptionOptions = {\n user: string;\n currency: string;\n perSeatPrice: number;\n seats: number;\n transactionId?: string;\n promoCode?: string;\n org: {\n name: string;\n type: string;\n email: string;\n busInst?: string;\n contact: string;\n description: string;\n };\n };\n\n async function subscribe(value: TSubscriptionOptions) {\n const session = useAtlas.getClient()?.startSession();\n\n session?.startTransaction();\n\n try {\n const _user = await _getUserByUserId(value.user);\n if (!_user) {\n throw new BadRequestError(\"User not found.\");\n }\n\n const orgId = await addOrg(value.org, session);\n\n const roleName = \"owner\";\n\n const role = await addRole(\n {\n org: orgId.toString(),\n name: roleName,\n permissions: [\"*\"],\n type: \"organization\",\n default: true,\n },\n session\n );\n\n await addMember(\n {\n org: orgId.toString(),\n orgName: value.org.name,\n user: value.user,\n name: `${_user.firstName} ${_user.lastName}`,\n role: role.toString(),\n roleName: roleName,\n type: \"organization\",\n },\n session\n );\n\n if (!_user.defaultOrg) {\n await updateUserFieldById(\n {\n _id: value.user,\n field: \"defaultOrg\",\n value: orgId.toString(),\n },\n session\n );\n }\n\n const description = \"GoWeekdays Organization Monthly Subscription.\";\n\n const monthlySubscriptionPrice = await getByNameType(\n \"organization-subscription\",\n \"monthly-subscription\"\n );\n\n if (!monthlySubscriptionPrice) {\n throw new BadRequestError(\n \"Failed to fetch monthly subscription price.\"\n );\n }\n\n let amount = monthlySubscriptionPrice.value;\n\n const items = [];\n\n if (value.promoCode) {\n const promoCode = await getByCode(value.promoCode);\n\n if (!promoCode) {\n throw new BadRequestError(\"Promo code not found.\");\n }\n\n if (promoCode.assignedTo) {\n throw new BadRequestError(\n \"Promo code already assigned to another user.\"\n );\n }\n\n if (\n promoCode &&\n promoCode.type === \"fixed\" &&\n promoCode.fixed_rate !== undefined &&\n promoCode.fixed_rate >= 0\n ) {\n amount = promoCode.fixed_rate;\n items.push({\n description: \"GoWeekdays Monthly Subscription\",\n unitPrice: promoCode.fixed_rate,\n quantity: 1,\n seats: value.seats,\n total: promoCode.fixed_rate * value.seats,\n });\n }\n\n if (\n promoCode &&\n promoCode.type === \"tiered\" &&\n promoCode.tiers &&\n promoCode.tiers.length\n ) {\n const computedTieredInvoice = calculateTieredPricing(\n value.seats,\n promoCode.tiers\n );\n items.push(...computedTieredInvoice.items);\n amount = computedTieredInvoice.totalCost;\n }\n }\n\n if (\n monthlySubscriptionPrice.saleValue &&\n monthlySubscriptionPrice.saleExpiry &&\n new Date(monthlySubscriptionPrice.saleExpiry) > new Date()\n ) {\n amount = monthlySubscriptionPrice.saleValue;\n }\n\n const subscription = await add(\n {\n org: orgId.toString(),\n amount,\n currency: value.currency,\n type: \"organization\",\n description,\n paidSeats: value.seats,\n currentSeats: value.seats,\n maxSeats: value.seats,\n billingCycle: \"monthly\",\n promoCode: value.promoCode,\n },\n session\n );\n\n const invoiceCounter = await getByType(\"invoice\");\n\n if (!invoiceCounter) {\n throw new BadRequestError(\"Failed to fetch invoice counter.\");\n }\n\n const date = new Date();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const yyyy = date.getFullYear();\n\n const formattedDate = `${mm}-${dd}-${yyyy}`;\n\n const invoiceNumber = `inv-${formattedDate}-${invoiceCounter.count + 1}`;\n\n const invoiceData: TInvoice = {\n type: \"organization-subscription\",\n invoiceNumber,\n amount,\n dueDate: new Date(),\n metadata: {\n transactionId: value.transactionId,\n orgId: orgId.toString(),\n currency: value.currency,\n subscriptionId: subscription.toString(),\n description: `Initial invoice for ${value.seats.toLocaleString()} seats`,\n },\n status: \"paid\",\n items:\n items && items.length\n ? items\n : [\n {\n description: \"GoWeekdays Monthly Subscription\",\n unitPrice: amount,\n quantity: 1,\n seats: value.seats,\n total: amount * value.seats,\n },\n ],\n };\n\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n\n await addPayment(\n {\n invoiceId: invoiceNumber,\n amount,\n paymentMethod: \"PAYPAL\",\n status: \"completed\",\n metadata: {\n userId: value.user,\n orgId: orgId.toString(),\n currency: value.currency,\n payment: value.transactionId,\n subscriptionId: subscription.toString(),\n },\n },\n session\n );\n\n if (value.promoCode) {\n await assignByUserId(\n { user: value.user, code: value.promoCode },\n session\n );\n }\n\n await session?.commitTransaction();\n\n return {\n message: \"Subscription created successfully.\",\n data: { org: orgId.toString() },\n };\n } catch (error) {\n await session?.abortTransaction();\n\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function createOrgSubscription(value: TOrgSub) {\n const session = useAtlas.getClient()?.startSession();\n\n session?.startTransaction();\n\n try {\n const _user = await _getUserByUserId(value.user);\n if (!_user) {\n throw new BadRequestError(\"User not found.\");\n }\n\n const orgId = await addOrg(value.organization, session);\n\n const customerData: TCustomer = {\n reference_id: orgId.toString(),\n type:\n value.organization.type === \"business\" ? \"BUSINESS\" : \"INDIVIDUAL\",\n email: value.organization.email,\n };\n\n if (value.organization.type === \"business\") {\n customerData.business_detail = {\n business_name: value.organization.busInst ?? value.organization.name,\n business_type: \"SOLE_PROPRIETOR\",\n };\n }\n\n if (value.organization.type === \"personal\") {\n customerData.individual_detail = {\n given_names: value.organization.name,\n };\n }\n\n const { id: customerId } = await createCustomer(customerData);\n\n if (!customerId) {\n throw new BadRequestError(\"Failed to create customer.\");\n }\n\n const role = await addRole(\n {\n org: orgId.toString(),\n name: \"owner\",\n permissions: [\"*\"],\n type: \"organization\",\n default: true,\n },\n session\n );\n\n await addMember(\n {\n org: orgId.toString(),\n orgName: value.organization.name,\n user: value.user,\n name: `${_user.firstName} ${_user.lastName}`,\n role: role.toString(),\n type: \"organization\",\n },\n session\n );\n\n if (!_user.defaultOrg) {\n await updateUserFieldById(\n {\n _id: value.user,\n field: \"defaultOrg\",\n value: orgId.toString(),\n },\n session\n );\n }\n\n const customer = await getCustomerById(customerId);\n\n if (!customer.id) {\n throw new BadRequestError(\"Xendit customer account required.\");\n }\n\n value.billingAddress.org = orgId.toString();\n\n await addAddress(value.billingAddress, session);\n\n const description = \"GoWeekdays Organization Monthly Subscription.\";\n\n if (value.promoCode) {\n await assignByUserId(\n { user: value.user, code: value.promoCode },\n session\n );\n }\n\n const monthlySubscriptionPrice = await getByNameType(\n \"organization-subscription\",\n \"monthly-subscription\"\n );\n\n if (!monthlySubscriptionPrice) {\n throw new BadRequestError(\n \"Failed to fetch monthly subscription price.\"\n );\n }\n\n let amount = monthlySubscriptionPrice.value;\n\n const items = [];\n\n if (value.promoCode) {\n const promoCode = await getByCode(value.promoCode);\n\n if (!promoCode) {\n throw new BadRequestError(\"Promo code not found.\");\n }\n\n if (\n promoCode &&\n promoCode.type === \"fixed\" &&\n promoCode.fixed_rate !== undefined &&\n promoCode.fixed_rate >= 0\n ) {\n amount = promoCode.fixed_rate;\n items.push({\n description: \"GoWeekdays Monthly Subscription\",\n unitPrice: promoCode.fixed_rate,\n quantity: 1,\n seats: value.seats,\n total: promoCode.fixed_rate * value.seats,\n });\n }\n\n if (\n promoCode &&\n promoCode.type === \"tiered\" &&\n promoCode.tiers &&\n promoCode.tiers.length\n ) {\n const computedTieredInvoice = calculateTieredPricing(\n value.seats,\n promoCode.tiers\n );\n items.push(...computedTieredInvoice.items);\n amount = computedTieredInvoice.totalCost;\n }\n }\n\n if (\n monthlySubscriptionPrice.saleValue &&\n monthlySubscriptionPrice.saleExpiry &&\n new Date(monthlySubscriptionPrice.saleExpiry) > new Date()\n ) {\n amount = monthlySubscriptionPrice.saleValue;\n }\n\n const subscription = await add(\n {\n org: orgId.toString(),\n customerId: customerId,\n paymentMethodId: value.payment_method_id,\n amount,\n currency: value.currency,\n type: \"organization\",\n description,\n paidSeats: value.seats,\n currentSeats: value.seats,\n maxSeats: value.seats,\n billingCycle: \"monthly\",\n promoCode: value.promoCode,\n },\n session\n );\n\n const invoiceCounter = await getByType(\"invoice\");\n\n if (!invoiceCounter) {\n throw new BadRequestError(\"Failed to fetch invoice counter.\");\n }\n\n const date = new Date();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const yyyy = date.getFullYear();\n\n const formattedDate = `${mm}-${dd}-${yyyy}`;\n\n const invoiceNumber = `inv-${formattedDate}-${invoiceCounter.count + 1}`;\n\n const invoiceData: TInvoice = {\n type: \"organization-subscription\",\n invoiceNumber,\n amount,\n dueDate: new Date(),\n metadata: {\n orgId: orgId.toString(),\n currency: value.currency,\n subscriptionId: subscription.toString(),\n description: `Initial invoice for ${value.seats.toLocaleString()} seats`,\n },\n status: \"paid\",\n items:\n items && items.length\n ? items\n : [\n {\n description: \"GoWeekdays Monthly Subscription\",\n unitPrice: amount,\n quantity: 1,\n seats: value.seats,\n total: amount * value.seats,\n },\n ],\n };\n\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n\n let payment: Record<string, any> = {};\n\n if (amount) {\n payment = await pay({\n customer_id: customerId,\n payment_method_id: value.payment_method_id,\n amount,\n currency: value.currency,\n description,\n });\n }\n\n await addPayment(\n {\n invoiceId: invoiceNumber,\n amount,\n paymentMethod: value.payment_method_type as TPaymentMethodType,\n status: \"completed\",\n metadata: {\n userId: value.user,\n orgId: orgId.toString(),\n currency: value.currency,\n paymentMethod: value.payment_method_channel,\n paymentMethodType: value.payment_method_type,\n paymentMethodId: value.payment_method_id,\n payment: payment.id,\n subscriptionId: subscription.toString(),\n },\n },\n session\n );\n\n await session?.commitTransaction();\n\n return {\n message: \"Subscription created successfully.\",\n data: { org: orgId.toString() },\n };\n } catch (error) {\n await session?.abortTransaction();\n\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n type TAffiliateSub = {\n user: string;\n amount: number;\n currency: string;\n promoCode?: string;\n payment_method_id: string;\n payment_method_expiry_month?: string;\n payment_method_expiry_year?: string;\n payment_method_cvv?: string;\n payment_method_cardholder_name?: string;\n payment_method_channel: string;\n payment_method_type: string;\n customer_id: string;\n billingAddress: TAddress;\n };\n\n async function createAffiliateSubscription(value: TAffiliateSub) {\n const session = useAtlas.getClient()?.startSession();\n\n session?.startTransaction();\n\n try {\n const _user = await _getUserByUserId(value.user);\n if (!_user) {\n throw new BadRequestError(\"User not found.\");\n }\n\n await addAddress(value.billingAddress, session);\n\n const description = \"GoWeekdays affiliate yearly Subscription.\";\n\n const customer = await getCustomerById(value.customer_id);\n\n if (!customer.id) {\n throw new BadRequestError(\"Xendit customer account required.\");\n }\n\n const affiliateSubscriptionPrice = await getByNameType(\n \"affiliate-subscription\",\n \"yearly-subscription\"\n );\n\n if (!affiliateSubscriptionPrice) {\n throw new BadRequestError(\n \"Failed to fetch affiliate subscription price.\"\n );\n }\n\n let amount = affiliateSubscriptionPrice.value;\n\n if (\n affiliateSubscriptionPrice.saleValue &&\n affiliateSubscriptionPrice.saleExpiry &&\n new Date(affiliateSubscriptionPrice.saleExpiry) > new Date()\n ) {\n amount = affiliateSubscriptionPrice.saleValue;\n }\n\n const items = [];\n\n if (value.promoCode) {\n const promoCode = await getByCode(value.promoCode);\n\n if (!promoCode) {\n throw new BadRequestError(\"Promo code not found.\");\n }\n\n if (\n promoCode &&\n promoCode.type === \"fixed\" &&\n promoCode.fixed_rate !== undefined &&\n promoCode.fixed_rate >= 0\n ) {\n amount = promoCode.fixed_rate;\n items.push({\n description: \"GoWeekdays Yearly Affiliate Subscription\",\n unitPrice: promoCode.fixed_rate,\n quantity: 1,\n seats: 1,\n total: promoCode.fixed_rate * 1,\n });\n }\n\n await assignByUserId(\n { user: value.user, code: value.promoCode },\n session\n );\n }\n\n const subscription = await add(\n {\n user: value.user,\n customerId: value.customer_id,\n paymentMethodId: value.payment_method_id,\n amount,\n currency: value.currency,\n type: \"affiliate\",\n description,\n billingCycle: \"yearly\",\n },\n session\n );\n\n const invoiceCounter = await getByType(\"invoice\");\n\n if (!invoiceCounter) {\n throw new BadRequestError(\"Failed to fetch invoice counter.\");\n }\n\n const date = new Date();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const yyyy = date.getFullYear();\n\n const formattedDate = `${mm}-${dd}-${yyyy}`;\n\n const invoiceNumber = `inv-${formattedDate}-${invoiceCounter.count + 1}`;\n\n const invoiceData: TInvoice = {\n type: \"affiliate-subscription\",\n invoiceNumber,\n amount,\n dueDate: new Date(),\n metadata: {\n userId: value.user,\n currency: value.currency,\n subscriptionId: subscription.toString(),\n },\n status: \"paid\",\n items: items.length\n ? items\n : [\n {\n description: \"GoWeekdays Yearly Affiliate Subscription\",\n unitPrice: amount,\n quantity: 1,\n seats: 1,\n total: amount,\n },\n ],\n };\n\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n\n let payment: Record<string, any> = {};\n\n if (amount) {\n payment = await pay({\n customer_id: value.customer_id,\n payment_method_id: value.payment_method_id,\n amount,\n currency: value.currency,\n description,\n });\n }\n\n await addPayment(\n {\n invoiceId: invoiceNumber,\n amount,\n paymentMethod: value.payment_method_type as TPaymentMethodType,\n status: \"completed\",\n metadata: {\n userId: value.user,\n currency: value.currency,\n paymentMethod: value.payment_method_channel,\n paymentMethodType: value.payment_method_type,\n paymentMethodId: value.payment_method_id,\n payment: payment.id,\n subscriptionId: subscription.toString(),\n },\n },\n session\n );\n\n await session?.commitTransaction();\n\n return \"Subscription created successfully.\";\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function getByUserId(id: string) {\n try {\n const subscription = await _getByUserId(id);\n if (!subscription) {\n throw new BadRequestError(\"Subscription not found.\");\n }\n\n const customerSubscription = await getSubscription(id);\n\n return customerSubscription;\n } catch (error) {\n throw error;\n }\n }\n\n async function getStatusByUser(user: string) {\n try {\n const userSubscription = await getByUserId(user);\n const status = await checkSubscriptionStatus(\n userSubscription.subscriptionId\n );\n return status;\n } catch (error: any) {\n throw new BadRequestError(\"Failed to fetch subscription status\");\n }\n }\n\n const { createInvoice } = usePaypalService();\n\n async function processSubscriptions(batchSize = 100, maxRetries = 7) {\n while (true) {\n const subscriptions = await getDueSubscriptions(batchSize);\n\n if (subscriptions.length === 0) {\n logger.log({\n level: \"info\",\n message: \"No more subscriptions to process.\",\n });\n break;\n }\n\n await Promise.allSettled(\n subscriptions.map(async (sub) => {\n const session = useAtlas.getClient()?.startSession();\n\n try {\n if (!sub._id) {\n throw new BadRequestError(\"Subscription ID not found.\");\n }\n\n sub.maxSeats = sub.maxSeats ?? 0;\n sub.paidSeats = sub.paidSeats ?? 0;\n\n const chargeableSeats =\n sub.type === \"affiliate\"\n ? 1\n : Math.max(sub.paidSeats, sub.maxSeats);\n\n const code = sub.promoCode ?? \"\";\n\n const price = await getByNameType(\n `${sub.type}-subscription`,\n `${sub.billingCycle}-subscription`\n );\n\n if (!price) {\n throw new BadRequestError(\"Failed to fetch subscription price.\");\n }\n\n const promoCode = await getByCode(code).catch(() => null);\n\n let amount = price.value * chargeableSeats;\n\n const description = `GoWeekdays ${sub.type} ${sub.billingCycle} Subscription`;\n\n const items = [];\n\n if (\n code &&\n promoCode &&\n promoCode.type === \"fixed\" &&\n promoCode.fixed_rate !== undefined &&\n promoCode.fixed_rate >= 0\n ) {\n amount = promoCode.fixed_rate * chargeableSeats;\n items.push({\n description,\n unitPrice: amount,\n quantity: 1,\n seats: chargeableSeats,\n total: amount,\n });\n }\n\n if (\n code &&\n promoCode &&\n promoCode.type === \"tiered\" &&\n promoCode.tiers &&\n promoCode.tiers.length\n ) {\n const computedTieredInvoice = calculateTieredPricing(\n chargeableSeats,\n promoCode.tiers\n );\n items.push(...computedTieredInvoice.items);\n amount = computedTieredInvoice.totalCost;\n }\n\n if (!sub.nextBillingDate) {\n throw new BadRequestError(\"Next billing date not found.\");\n }\n\n const invoice = await getByDueDate(\n sub._id.toString(),\n sub.nextBillingDate\n );\n\n const invoiceCounter = await getByType(\"invoice\");\n\n if (!invoiceCounter) {\n throw new BadRequestError(\"Failed to fetch invoice counter.\");\n }\n\n const date = new Date();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const yyyy = date.getFullYear();\n\n const formattedDate = `${mm}-${dd}-${yyyy}`;\n\n const invoiceNumber = `inv-${formattedDate}-${\n invoiceCounter.count + 1\n }`;\n\n if (!invoice && amount > 0) {\n let customerEmail = \"\";\n let customerName = \"\";\n\n if (sub.type === \"organization\" && sub.org) {\n const orgData = await getOrgById(sub.org.toString());\n customerEmail = orgData.email ?? \"\";\n customerName = orgData.name ?? \"\";\n }\n\n if (sub.type === \"affiliate\" && sub.user) {\n const userData = await _getUserByUserId(sub.user.toString());\n customerEmail = userData?.email ?? \"\";\n customerName = `${userData?.firstName} ${userData?.lastName}`;\n }\n\n const paypalInvoice = await createInvoice({\n invoiceNumber,\n invoiceDate: new Date().toISOString().split(\"T\")[0],\n customerEmail,\n customerName,\n quantity: chargeableSeats,\n ratePerSeat: price.value,\n currency: sub.currency,\n items,\n });\n\n const invoiceData: TInvoice = {\n type: `${sub.type}-subscription` as TInvoice[\"type\"],\n invoiceNumber,\n amount,\n dueDate: new Date(),\n metadata: {\n userId: String(sub.user),\n orgId: String(sub.org),\n currency: sub.currency,\n subscriptionId: sub._id.toString(),\n billingCycle: sub.billingCycle,\n description,\n transactionId: paypalInvoice,\n },\n status: \"pending\",\n items: items.length\n ? items\n : [\n {\n description,\n unitPrice: amount,\n quantity: 1,\n seats: chargeableSeats,\n total: amount * chargeableSeats,\n },\n ],\n };\n\n if (!invoiceData.metadata?.userId) {\n delete invoiceData.metadata?.userId;\n }\n\n if (!invoiceData.metadata?.orgId) {\n delete invoiceData.metadata?.orgId;\n }\n\n // 🔄 Start a new transaction for payment processing\n session?.startTransaction();\n\n await addInvoice(invoiceData, session);\n await incrementByType(\"invoice\", session);\n\n await _updateStatusById(sub._id.toString(), \"due\", session);\n\n // ✅ Commit the invoice creation separately\n await session?.commitTransaction();\n }\n\n if (!invoice && amount <= 0) {\n await processSuccessfulPayment(\n {\n _id: sub._id.toString(),\n nextBillingDate: sub.nextBillingDate,\n },\n session\n );\n\n await updateMaxSeatsById(\n {\n _id: sub._id.toString(),\n seats: sub.paidSeats,\n },\n session\n );\n\n await session?.commitTransaction();\n }\n\n logger.log({\n level: \"info\",\n message: `Processed subscription ${sub._id} successfully.`,\n });\n\n return;\n } catch (error) {\n await session?.abortTransaction(); // ⛔ Rollback any failure from the outer try block\n\n logger.log({\n level: \"error\",\n message: `Failed to process ${sub._id}: ${error}`,\n });\n\n throw new Error(\n `Failed to process subscription ${sub._id}: ${error}`\n );\n } finally {\n session?.endSession();\n }\n })\n );\n\n logger.log({\n level: \"info\",\n message: \"Processed a batch of subscriptions.\",\n });\n }\n }\n\n type TUpdateSeats = {\n transactionId?: string;\n subscriptionId: string;\n seats: number;\n amount: number;\n };\n\n function prorateSeats(seats: number, price: number, nextBillingDate: Date) {\n const totalDaysInMonth = new Date(\n nextBillingDate.getFullYear(),\n nextBillingDate.getMonth() + 1,\n 0\n ).getDate();\n\n const currentDate = new Date();\n\n const remainingDays = Math.floor(\n (nextBillingDate.getTime() - currentDate.getTime()) /\n (1000 * 60 * 60 * 24)\n );\n\n const prorationFactor = remainingDays / totalDaysInMonth;\n\n return remainingDays > 1\n ? Number((seats * price * prorationFactor).toFixed(2))\n : Number((seats * price).toFixed(2));\n }\n\n function formatAmount(amount: number) {\n const validation = Joi.object({\n amount: Joi.number().required(),\n });\n\n const { error } = validation.validate({ amount });\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n return Number(amount.toFixed(2));\n }\n\n function calculateAmountWithPromoCode(\n subscription: TSubscription,\n price: TPrice,\n seats: number,\n prorationFactor = 1,\n promoCode?: TPromoCode\n ) {\n let amount = 0;\n let newMonthSubscriptionFee = 0;\n let perSeatPrice = price.value;\n let items: Array<Record<string, any>> = [];\n\n if (!subscription.nextBillingDate) {\n throw new BadRequestError(\"Next billing date not found.\");\n }\n\n if (promoCode) {\n if (\n promoCode.type === \"fixed\" &&\n promoCode.fixed_rate !== undefined &&\n promoCode.fixed_rate >= 0\n ) {\n perSeatPrice = promoCode.fixed_rate;\n amount = formatAmount(perSeatPrice * seats * prorationFactor);\n newMonthSubscriptionFee = formatAmount(perSeatPrice * seats);\n\n items = [\n {\n description: `GoWeekdays Subscription - ${seats} seats @ ${perSeatPrice} per seat`,\n unitPrice: perSeatPrice,\n quantity: 1,\n seats,\n total: amount,\n },\n ];\n } else if (\n promoCode.type === \"tiered\" &&\n promoCode.tiers &&\n promoCode.tiers.length > 0\n ) {\n const computedTieredInvoice = calculateTieredPricing(\n seats,\n promoCode.tiers,\n prorationFactor\n );\n amount = computedTieredInvoice.totalCost;\n newMonthSubscriptionFee = computedTieredInvoice.nonProratedCost;\n items = computedTieredInvoice.items as TInvoice[\"items\"];\n }\n }\n\n return {\n newMonthSubscriptionFee,\n amount,\n items,\n };\n }\n\n function calculateProration(billingDate: Date) {\n if (!billingDate) {\n throw new BadRequestError(\"Billing date is required.\");\n }\n\n const nextBillingDate = billingDate;\n const totalDaysInMonth = new Date(\n nextBillingDate.getFullYear(),\n nextBillingDate.getMonth() + 1,\n 0\n ).getDate();\n const currentDate = new Date();\n const remainingDays = Math.floor(\n (nextBillingDate.getTime() - currentDate.getTime()) /\n (1000 * 60 * 60 * 24)\n );\n\n return remainingDays > 1 ? remainingDays / totalDaysInMonth : 1;\n }\n\n async function generateInvoiceNumber() {\n try {\n const invoiceCounter = await getByType(\"invoice\");\n if (!invoiceCounter) {\n throw new BadRequestError(\"Failed to fetch invoice counter.\");\n }\n\n const date = new Date();\n const mm = String(date.getMonth() + 1).padStart(2, \"0\");\n const dd = String(date.getDate()).padStart(2, \"0\");\n const yyyy = date.getFullYear();\n\n const formattedDate = `${mm}-${dd}-${yyyy}`;\n\n return `inv-${formattedDate}-${invoiceCounter.count + 1}`;\n } catch (error) {\n throw error;\n }\n }\n\n async function updateSeatsById(value: TUpdateSeats) {\n const schema = Joi.object({\n subscriptionId: Joi.string().hex().required(),\n seats: Joi.number().min(1).required(),\n amount: Joi.number().required(),\n });\n\n const { error } = schema.validate(value);\n\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n const session = useAtlas.getClient()?.startSession();\n\n try {\n session?.startTransaction();\n\n const subscription = await _getById(value.subscriptionId);\n\n if (!subscription) {\n throw new BadRequestError(\"Subscription not found.\");\n }\n\n if (!subscription._id) {\n throw new BadRequestError(\"Invalid subscription.\");\n }\n\n if (!subscription.nextBillingDate) {\n throw new BadRequestError(\"Next billing date not found.\");\n }\n\n if (!subscription.org) {\n throw new BadRequestError(\"Organization not found.\");\n }\n\n const members = await countByOrg(`${subscription.org}`);\n\n if (!members) {\n throw new BadRequestError(\"Failed to fetch members.\");\n }\n\n let paidSeats = subscription.paidSeats ?? 0;\n\n let seats = paidSeats > value.seats ? 0 : value.seats - paidSeats;\n\n // Check if the subscription is cancelled and has no failed attempts\n // and the current billing date is in the future\n // and there is no due invoice\n // If so, set seats to 0\n // This is to prevent the user from being charged for seats they are not using\n // and to allow them to remove members before reducing seats\n\n const dueInvoice = await getByDueDate(\n subscription._id.toString(),\n subscription.nextBillingDate,\n \"pending\"\n );\n\n const currentBillingDate = new Date(subscription?.nextBillingDate);\n\n const isCancelledManually =\n !dueInvoice &&\n subscription.status === \"cancelled\" &&\n subscription.failedAttempts === 0 &&\n new Date().getTime() > currentBillingDate.getTime();\n\n const activeWithOverdueInvoice =\n dueInvoice &&\n subscription.status === \"active\" &&\n subscription.failedAttempts &&\n subscription.failedAttempts > 0 &&\n new Date().getTime() > currentBillingDate.getTime();\n\n const isInvoiced =\n dueInvoice &&\n dueInvoice.status === \"pending\" &&\n subscription.status === \"active\" &&\n new Date().getTime() > currentBillingDate.getTime();\n\n if (isCancelledManually || activeWithOverdueInvoice || isInvoiced) {\n seats = value.seats;\n }\n\n if (seats === 0 && members > value.seats) {\n throw new BadRequestError(\n \"Cannot reduce seats to less than the number of members. Please remove members before reducing seats.\"\n );\n }\n\n const monthlySubscriptionPrice = await getByNameType(\n \"organization-subscription\",\n \"monthly-subscription\"\n );\n\n if (!monthlySubscriptionPrice) {\n throw new BadRequestError(\n \"Failed to fetch monthly subscription price.\"\n );\n }\n\n let perSeatPrice = monthlySubscriptionPrice.value;\n\n if (\n monthlySubscriptionPrice.saleValue &&\n monthlySubscriptionPrice.saleExpiry &&\n new Date(monthlySubscriptionPrice.saleExpiry) > new Date()\n ) {\n perSeatPrice = monthlySubscriptionPrice.saleValue;\n }\n\n let prorationFactor = calculateProration(\n new Date(subscription.nextBillingDate)\n );\n\n const isSubscriptionReactivation =\n subscription.status === \"cancelled\" && !dueInvoice;\n\n const isPassedBillingDate =\n new Date().getTime() > new Date(subscription.nextBillingDate).getTime();\n\n if (isSubscriptionReactivation && isPassedBillingDate) {\n prorationFactor = 1;\n }\n\n let amount = perSeatPrice * seats * prorationFactor;\n let newMonthlySubscriptionPrice = perSeatPrice * seats;\n\n let items: TInvoice[\"items\"] = [];\n\n if (subscription.promoCode) {\n const promoCode = await getByCode(subscription.promoCode);\n\n if (promoCode) {\n const {\n amount: amountWithPromoCode,\n newMonthSubscriptionFee,\n items: itemWithPromoCode,\n } = calculateAmountWithPromoCode(\n subscription,\n monthlySubscriptionPrice,\n seats,\n prorationFactor,\n promoCode\n );\n\n amount = amountWithPromoCode;\n newMonthlySubscriptionPrice = newMonthSubscriptionFee;\n items = itemWithPromoCode as TInvoice[\"items\"];\n }\n }\n\n const invoiceNumber = await generateInvoiceNumber();\n\n const invoiceData: TInvoice = {\n type: \"organization-subscription\",\n invoiceNumber,\n amount: Number(amount.toFixed(2)),\n dueDate: new Date(),\n metadata: {\n orgId: String(subscription.org),\n currency: subscription.currency,\n subscriptionId: value.subscriptionId,\n description: `Charge for ${\n isSubscriptionReactivation ? \"\" : \"additional\"\n } ${seats.toLocaleString()} seats`,\n },\n status: \"paid\",\n items: [\n {\n description: \"GoWeekdays Monthly Subscription\",\n unitPrice: formatAmount(perSeatPrice),\n quantity: 1,\n seats,\n total: formatAmount(amount),\n },\n ],\n };\n\n if (items.length) {\n invoiceData.items = items;\n }\n\n if (seats && !dueInvoice) {\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n\n let payment: Record<string, any> = {};\n\n if (amount) {\n payment = await pay({\n customer_id: subscription.customerId ?? \"\",\n payment_method_id: subscription.paymentMethodId ?? \"\",\n amount: formatAmount(amount),\n currency: subscription.currency,\n description: \"GoWeekdays Organization Monthly Subscription.\",\n });\n }\n\n const paymentMethod = await getPaymentMethodById(\n subscription.paymentMethodId ?? \"\"\n );\n\n if (!paymentMethod) {\n throw new BadRequestError(\"Payment method not found.\");\n }\n\n const paymentMetadata: Record<string, any> = {\n userId: String(subscription.user),\n orgId: String(subscription.org),\n currency: subscription.currency,\n paymentMethod:\n paymentMethod.type === \"EWALLET\"\n ? paymentMethod.ewallet.channel_code\n : paymentMethod.type === \"DIRECT_DEBIT\"\n ? paymentMethod.direct_debit.channel_code\n : \"\",\n paymentMethodType: paymentMethod.type,\n paymentMethodId: subscription.paymentMethodId,\n payment: payment.id,\n subscriptionId: value.subscriptionId,\n };\n\n if (!paymentMetadata.userId) {\n delete paymentMetadata.userId;\n }\n\n if (!paymentMetadata.orgId) {\n delete paymentMetadata.orgId;\n }\n\n await addPayment(\n {\n invoiceId: invoiceNumber,\n amount: formatAmount(amount),\n paymentMethod: paymentMethod.type as TPaymentMethodType,\n status: \"completed\",\n metadata: paymentMetadata as TPayment[\"metadata\"],\n },\n session\n );\n\n paidSeats = value.seats;\n } else if (dueInvoice && dueInvoice.status === \"pending\") {\n await updateStatusByInvoiceNumber(\n dueInvoice.invoiceNumber,\n \"cancelled\",\n session\n );\n\n invoiceData.status = \"pending\";\n invoiceData.dueDate = new Date(subscription.nextBillingDate);\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n }\n\n const updateData = {\n _id: value.subscriptionId,\n currentSeats: value.seats,\n maxSeats: 0,\n paidSeats,\n amount: newMonthlySubscriptionPrice,\n status: \"\",\n nextBillingDate: \"\",\n };\n\n if (!dueInvoice && new Date().getTime() > currentBillingDate.getTime()) {\n let date = new Date();\n date.setMonth(date.getMonth() + 1);\n date.setDate(date.getDate() + 1);\n updateData.nextBillingDate = date.toISOString();\n }\n\n if (!dueInvoice && subscription.status === \"cancelled\") {\n updateData.status = \"active\";\n }\n\n await _updateSeatsById(updateData, session);\n\n await session?.commitTransaction();\n } catch (error) {\n await session?.abortTransaction();\n logger.log({\n level: \"error\",\n message: `Failed to update subscription seats: ${error}`,\n });\n\n if (error instanceof AppError) {\n throw error;\n }\n\n throw new BadRequestError(\"Failed to update subscription seats.\");\n } finally {\n session?.endSession();\n }\n }\n\n async function updateSubscriptionSeats(value: TUpdateSeats) {\n const schema = Joi.object({\n transactionId: Joi.string().optional().allow(\"\", null),\n subscriptionId: Joi.string().hex().required(),\n seats: Joi.number().min(1).required(),\n amount: Joi.number().required(),\n });\n\n const { error } = schema.validate(value);\n\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n const session = useAtlas.getClient()?.startSession();\n\n try {\n session?.startTransaction();\n\n const subscription = await _getById(value.subscriptionId);\n\n if (!subscription) {\n throw new BadRequestError(\"Subscription not found.\");\n }\n\n if (!subscription._id) {\n throw new BadRequestError(\"Invalid subscription.\");\n }\n\n if (!subscription.nextBillingDate) {\n throw new BadRequestError(\"Next billing date not found.\");\n }\n\n if (!subscription.org) {\n throw new BadRequestError(\"Organization not found.\");\n }\n\n const members = await countByOrg(`${subscription.org}`);\n\n if (!members) {\n throw new BadRequestError(\"Failed to fetch members.\");\n }\n\n let paidSeats = subscription.paidSeats ?? 0;\n\n let seats = paidSeats > value.seats ? 0 : value.seats - paidSeats;\n\n // Check if the subscription is cancelled and has no failed attempts\n // and the current billing date is in the future\n // and there is no due invoice\n // If so, set seats to 0\n // This is to prevent the user from being charged for seats they are not using\n // and to allow them to remove members before reducing seats\n\n const dueInvoice = await getByDueDate(\n subscription._id.toString(),\n subscription.nextBillingDate,\n \"pending\"\n );\n\n const currentBillingDate = new Date(subscription?.nextBillingDate);\n\n const isCancelledManually =\n !dueInvoice &&\n subscription.status === \"cancelled\" &&\n subscription.failedAttempts === 0 &&\n new Date().getTime() > currentBillingDate.getTime();\n\n const activeWithOverdueInvoice =\n dueInvoice &&\n subscription.status === \"active\" &&\n subscription.failedAttempts &&\n subscription.failedAttempts > 0 &&\n new Date().getTime() > currentBillingDate.getTime();\n\n const isInvoiced =\n dueInvoice &&\n dueInvoice.status === \"pending\" &&\n subscription.status === \"active\" &&\n new Date().getTime() > currentBillingDate.getTime();\n\n if (isCancelledManually || activeWithOverdueInvoice || isInvoiced) {\n seats = value.seats;\n }\n\n if (seats === 0 && members > value.seats) {\n throw new BadRequestError(\n \"Cannot reduce seats to less than the number of members. Please remove members before reducing seats.\"\n );\n }\n\n const monthlySubscriptionPrice = await getByNameType(\n \"organization-subscription\",\n \"monthly-subscription\"\n );\n\n if (!monthlySubscriptionPrice) {\n throw new BadRequestError(\n \"Failed to fetch monthly subscription price.\"\n );\n }\n\n let perSeatPrice = monthlySubscriptionPrice.value;\n\n if (\n monthlySubscriptionPrice.saleValue &&\n monthlySubscriptionPrice.saleExpiry &&\n new Date(monthlySubscriptionPrice.saleExpiry) > new Date()\n ) {\n perSeatPrice = monthlySubscriptionPrice.saleValue;\n }\n\n let prorationFactor = calculateProration(\n new Date(subscription.nextBillingDate)\n );\n\n const isSubscriptionReactivation =\n subscription.status === \"cancelled\" && !dueInvoice;\n\n const isPassedBillingDate =\n new Date().getTime() > new Date(subscription.nextBillingDate).getTime();\n\n if (isSubscriptionReactivation && isPassedBillingDate) {\n prorationFactor = 1;\n }\n\n let amount = perSeatPrice * seats * prorationFactor;\n let newMonthlySubscriptionPrice = perSeatPrice * seats;\n\n let items: TInvoice[\"items\"] = [];\n\n if (subscription.promoCode) {\n const promoCode = await getByCode(subscription.promoCode);\n\n if (promoCode) {\n const {\n amount: amountWithPromoCode,\n newMonthSubscriptionFee,\n items: itemWithPromoCode,\n } = calculateAmountWithPromoCode(\n subscription,\n monthlySubscriptionPrice,\n seats,\n prorationFactor,\n promoCode\n );\n\n amount = amountWithPromoCode;\n newMonthlySubscriptionPrice = newMonthSubscriptionFee;\n items = itemWithPromoCode as TInvoice[\"items\"];\n }\n }\n\n const invoiceNumber = await generateInvoiceNumber();\n\n const invoiceData: TInvoice = {\n type: \"organization-subscription\",\n invoiceNumber,\n amount: Number(amount.toFixed(2)),\n dueDate: new Date(),\n metadata: {\n transactionId: value.transactionId,\n orgId: String(subscription.org),\n currency: subscription.currency,\n subscriptionId: value.subscriptionId,\n description: `Charge for ${\n isSubscriptionReactivation ? \"\" : \"additional\"\n } ${seats.toLocaleString()} seats`,\n },\n status: \"paid\",\n items: [\n {\n description: \"GoWeekdays Monthly Subscription\",\n unitPrice: formatAmount(perSeatPrice),\n quantity: 1,\n seats,\n total: formatAmount(amount),\n },\n ],\n };\n\n if (items.length) {\n invoiceData.items = items;\n }\n\n if (seats && !dueInvoice) {\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n\n const paymentMethod = await getPaymentMethodById(\n subscription.paymentMethodId ?? \"\"\n );\n\n if (!paymentMethod) {\n throw new BadRequestError(\"Payment method not found.\");\n }\n\n const paymentMetadata: Record<string, any> = {\n userId: String(subscription.user),\n orgId: String(subscription.org),\n currency: subscription.currency,\n paymentMethod:\n paymentMethod.type === \"EWALLET\"\n ? paymentMethod.ewallet.channel_code\n : paymentMethod.type === \"DIRECT_DEBIT\"\n ? paymentMethod.direct_debit.channel_code\n : \"\",\n paymentMethodType: paymentMethod.type,\n paymentMethodId: subscription.paymentMethodId,\n payment: value.transactionId,\n subscriptionId: value.subscriptionId,\n };\n\n if (!paymentMetadata.userId) {\n delete paymentMetadata.userId;\n }\n\n if (!paymentMetadata.orgId) {\n delete paymentMetadata.orgId;\n }\n\n await addPayment(\n {\n invoiceId: invoiceNumber,\n amount: formatAmount(amount),\n paymentMethod: paymentMethod.type as TPaymentMethodType,\n status: \"completed\",\n metadata: paymentMetadata as TPayment[\"metadata\"],\n },\n session\n );\n\n paidSeats = value.seats;\n } else if (dueInvoice && dueInvoice.status === \"pending\") {\n await updateStatusByInvoiceNumber(\n dueInvoice.invoiceNumber,\n \"cancelled\",\n session\n );\n\n invoiceData.status = \"pending\";\n invoiceData.dueDate = new Date(subscription.nextBillingDate);\n await addInvoice(invoiceData, session);\n\n await incrementByType(\"invoice\", session);\n }\n\n const updateData = {\n _id: value.subscriptionId,\n currentSeats: value.seats,\n maxSeats: 0,\n paidSeats,\n amount: newMonthlySubscriptionPrice,\n status: \"\",\n nextBillingDate: \"\",\n };\n\n if (!dueInvoice && new Date().getTime() > currentBillingDate.getTime()) {\n let date = new Date();\n date.setMonth(date.getMonth() + 1);\n date.setDate(date.getDate() + 1);\n updateData.nextBillingDate = date.toISOString();\n }\n\n if (!dueInvoice && subscription.status === \"cancelled\") {\n updateData.status = \"active\";\n }\n\n await _updateSeatsById(updateData, session);\n\n await session?.commitTransaction();\n } catch (error) {\n await session?.abortTransaction();\n logger.log({\n level: \"error\",\n message: `Failed to update subscription seats: ${error}`,\n });\n\n if (error instanceof AppError) {\n throw error;\n }\n\n throw new BadRequestError(\"Failed to update subscription seats.\");\n } finally {\n session?.endSession();\n }\n }\n\n async function processSubscriptionPayment(\n invoiceNumber: string,\n subscriptionId: string\n ) {\n const invoice = await getByNumber(invoiceNumber);\n if (!invoice) {\n throw new BadRequestError(\"Invoice not found.\");\n }\n\n if (invoice.status === \"paid\") {\n throw new BadRequestError(\"Invoice already paid.\");\n }\n\n if (!invoice._id) {\n throw new BadRequestError(\"Invoice ID is missing.\");\n }\n\n if (!invoice.metadata?.subscriptionId) {\n throw new BadRequestError(\"Subscription ID is missing.\");\n }\n\n if (invoice.metadata.subscriptionId.toString() !== subscriptionId) {\n throw new BadRequestError(\"Subscription ID does not match invoice.\");\n }\n\n const subscription = await _getById(invoice.metadata.subscriptionId);\n if (!subscription) {\n throw new BadRequestError(\"Subscription not found.\");\n }\n\n if (!subscription._id) {\n throw new BadRequestError(\"Subscription ID is missing.\");\n }\n\n if (!subscription.customerId) {\n throw new BadRequestError(\"Customer ID is missing.\");\n }\n\n if (!subscription.paymentMethodId) {\n throw new BadRequestError(\"Payment method ID is missing.\");\n }\n\n if (!subscription.amount) {\n throw new BadRequestError(\"Subscription amount is missing.\");\n }\n\n if (!subscription.currency) {\n throw new BadRequestError(\"Subscription currency is missing.\");\n }\n\n const session = useAtlas.getClient()?.startSession();\n\n try {\n session?.startTransaction();\n\n const payment = await pay({\n customer_id: subscription.customerId,\n payment_method_id: subscription.paymentMethodId,\n amount: subscription.amount,\n currency: subscription.currency,\n description: \"GoWeekdays Subscription Payment\",\n });\n\n if (!payment.id) {\n throw new BadRequestError(\"Failed to process payment.\");\n }\n\n const paymentMethod = await getPaymentMethodById(\n subscription.paymentMethodId\n );\n\n if (!paymentMethod) {\n throw new BadRequestError(\"Payment method not found.\");\n }\n\n const paymentData: TPayment = {\n invoiceId: invoiceNumber,\n amount: subscription.amount,\n paymentMethod: paymentMethod.type as TPaymentMethodType,\n status: \"completed\",\n metadata: {\n userId: String(subscription.user),\n orgId: String(subscription.org),\n currency: subscription.currency,\n paymentMethod:\n paymentMethod.type === \"EWALLET\"\n ? paymentMethod.ewallet.channel_code\n : paymentMethod.type === \"DIRECT_DEBIT\"\n ? paymentMethod.direct_debit.channel_code\n : \"\",\n paymentMethodType: paymentMethod.type,\n paymentMethodId: subscription.paymentMethodId,\n payment: payment.id,\n subscriptionId: subscription._id.toString(),\n },\n };\n\n if (!paymentData.metadata.userId) {\n delete paymentData.metadata.userId;\n }\n\n if (!paymentData.metadata.orgId) {\n delete paymentData.metadata.orgId;\n }\n\n await addPayment(paymentData, session);\n\n await updateStatusByInvoiceNumber(invoiceNumber, \"paid\", session);\n\n await processSuccessfulPayment(\n {\n _id: subscription._id.toString(),\n nextBillingDate: subscription.nextBillingDate,\n },\n session\n );\n\n await session?.commitTransaction();\n } catch (error) {\n await session?.abortTransaction();\n logger.log({\n level: \"error\",\n message: `Failed to process subscription payment: ${error}`,\n });\n\n if (error instanceof AppError) {\n throw error;\n }\n\n throw new BadRequestError(\"Failed to process subscription payment.\");\n } finally {\n session?.endSession();\n }\n }\n\n return {\n subscribe,\n getByUserId,\n getStatusByUser,\n createAffiliateSubscription,\n createOrgSubscription,\n processSubscriptions,\n updateSeatsById,\n updateSubscriptionSeats,\n processSubscriptionPayment,\n };\n}\n","import {\n AppError,\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MOrg, TOrg } from \"../models/organization.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function useOrgRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new Error(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"organizations\";\n\n const collection = db.collection(namespace_collection);\n\n const { getCache, setCache, delNamespace } = useCache();\n\n async function createIndex() {\n try {\n await collection.createIndex([\n { name: 1 },\n { description: 1 },\n { status: 1 },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index.\");\n }\n }\n\n async function createTextIndex() {\n try {\n await collection.createIndex({\n name: \"text\",\n description: \"text\",\n });\n } catch (error) {\n throw new Error(\"Failed to create text index on name and description.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndex(\n {\n name: 1,\n },\n { unique: true }\n );\n } catch (error) {\n throw new Error(\"Failed to create unique index on name.\");\n }\n }\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function add(value: TOrg, session?: ClientSession) {\n try {\n value = MOrg(value);\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId;\n } catch (error: any) {\n logger.log({\n level: \"error\",\n message: error.message,\n });\n if (error instanceof AppError) {\n throw error;\n } else {\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Organization already exist.\");\n }\n\n throw new Error(\"Failed to create organization.\");\n }\n }\n }\n\n async function getAll({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"active\",\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { status };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n search,\n page,\n limit,\n sort: JSON.stringify(sort),\n status,\n });\n\n logger.log({\n level: \"info\",\n message: `Cache key for getAll organizations: ${cacheKey}`,\n });\n\n try {\n const cached = await getCache<Record<string, any>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getAll organizations: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n {\n $project: {\n _id: 1,\n name: 1,\n description: 1,\n status: 1,\n createdAt: 1,\n },\n },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getAll organizations: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getAll organizations: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw error;\n }\n }\n\n async function getById(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { _id: String(_id) });\n\n try {\n const cached = await getCache<TOrg>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getById organization: ${cacheKey}`,\n });\n return cached;\n }\n\n const result = await collection.findOne<TOrg>({ _id });\n if (!result) {\n throw new BadRequestError(\"Organization not found.\");\n }\n\n setCache(cacheKey, result, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for organization by id: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for organization by id: ${err.message}`,\n });\n });\n\n return result;\n } catch (error) {\n if (error instanceof AppError) {\n throw error;\n } else {\n throw new InternalServerError(\"Failed to get organization.\");\n }\n }\n }\n\n async function getByName(name: string) {\n const cacheKey = makeCacheKey(namespace_collection, { name });\n\n try {\n const cached = await getCache<TOrg>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByName organization: ${cacheKey}`,\n });\n return cached;\n }\n\n const result = await collection.findOne<TOrg>({ name });\n if (!result) {\n throw new BadRequestError(\"Organization not found.\");\n }\n\n setCache(cacheKey, result, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for organization by name: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for organization by name: ${err.message}`,\n });\n });\n\n return result;\n } catch (error) {\n if (error instanceof AppError) {\n throw error;\n } else {\n throw new InternalServerError(\"Failed to get organization.\");\n }\n }\n }\n\n async function updateFieldById(\n { _id, field, value } = {} as {\n _id: string | ObjectId;\n field: string;\n value: string;\n },\n session?: ClientSession\n ) {\n // Allowed fields to prevent arbitrary updates\n const allowedFields = [\"name\", \"description\"];\n\n if (!allowedFields.includes(field)) {\n throw new BadRequestError(\n `Field \"${field}\" is not allowed to be updated.`\n );\n }\n\n // Validate ID\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $set: { [field]: value } }, // Dynamically set the field\n { session }\n );\n\n delCachedData();\n\n return `Successfully updated user ${field}.`;\n } catch (error) {\n throw new InternalServerError(`Failed to update organization ${field}.`);\n }\n }\n\n async function deleteById(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $set: { status: \"deleted\", deletedAt: new Date().toISOString() } }\n );\n delCachedData();\n return \"Successfully deleted organization.\";\n } catch (error) {\n throw new InternalServerError(\"Failed to delete organization.\");\n }\n }\n\n return {\n createIndex,\n createTextIndex,\n createUniqueIndex,\n add,\n getAll,\n getById,\n updateFieldById,\n deleteById,\n getByName,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { ObjectId } from \"mongodb\";\n\nexport type TOrg = {\n _id?: ObjectId;\n name: string;\n description: string;\n type?: string;\n email?: string;\n contact?: string;\n busInst?: string;\n status?: string;\n xenditCustomerId?: string;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n};\n\nexport function MOrg(value: TOrg): TOrg {\n const schema = Joi.object({\n _id: Joi.string().hex().optional().allow(\"\", null),\n name: Joi.string().required(),\n email: Joi.string().email().required(),\n contact: Joi.string().required(),\n type: Joi.string().required(),\n busInst: Joi.string().optional().allow(\"\", null),\n description: Joi.string().optional().allow(\"\", null),\n status: Joi.string().optional().allow(\"\", null),\n createdAt: Joi.string().optional().allow(\"\", null),\n updatedAt: Joi.string().optional().allow(\"\", null),\n deletedAt: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = schema.validate(value);\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n if (value._id) {\n try {\n value._id = new ObjectId(value._id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n }\n\n return {\n _id: value._id,\n name: value.name,\n description: value.description,\n type: value.type,\n email: value.email,\n contact: value.contact,\n status: value.status || \"active\",\n createdAt: value.createdAt || new Date().toISOString(),\n updatedAt: \"\",\n deletedAt: \"\",\n };\n}\n","import {\n BadRequestError,\n useAtlas,\n useCache,\n makeCacheKey,\n logger,\n} from \"@eeplatform/nodejs-utils\";\nimport { MAddress, TAddress } from \"../models/address.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function useAddressRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new BadRequestError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"addresses\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n { key: { user: 1 } },\n { key: { type: 1 } },\n { key: { orgId: 1 } },\n ]);\n } catch (error) {\n throw new BadRequestError(\"Failed to create index on address.\");\n }\n }\n\n async function add(value: TAddress, session?: ClientSession) {\n try {\n value = MAddress(value);\n const res = await collection.insertOne(value, { session });\n delCachedData();\n return res.insertedId;\n } catch (error: any) {\n throw new BadRequestError(\"Failed to create address.\");\n }\n }\n\n type TUpdateAddress = Pick<\n TAddress,\n | \"country\"\n | \"address\"\n | \"continuedAddress\"\n | \"city\"\n | \"province\"\n | \"postalCode\"\n | \"taxId\"\n | \"org\"\n >;\n\n async function updateById(\n _id: string | ObjectId,\n value: TUpdateAddress,\n session?: ClientSession\n ) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid address ID.\");\n }\n\n if (value.org) {\n try {\n value.org = new ObjectId(value.org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $set: value },\n { session, upsert: true }\n );\n delCachedData();\n return \"Successfully updated address.\";\n } catch (error: any) {\n throw new BadRequestError(\"Failed to update address.\");\n }\n }\n\n async function getByUserId(user: string | ObjectId) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { user: String(user) });\n\n try {\n // Check cache first\n const cached = await getCache<TAddress>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByUserId address: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TAddress>({ user });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for address by user ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for address by user ID: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get address by ID.\");\n }\n }\n\n async function getByOrgId(org: string | ObjectId) {\n try {\n org = new ObjectId(org);\n } catch (error) {\n throw new BadRequestError(\"Invalid orgId.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { org: String(org) });\n\n try {\n // Check cache first\n const cached = await getCache<TAddress>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByOrgId address: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TAddress>({ org });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for address by org ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for address by org ID: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new BadRequestError(\"Failed to get address by orgId.\");\n }\n }\n\n return {\n createIndex,\n add,\n getByUserId,\n getByOrgId,\n updateById,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { ObjectId } from \"mongodb\";\n\nexport type TAddress = {\n _id?: ObjectId;\n type: string;\n user: ObjectId | string;\n org?: ObjectId | string;\n country: string;\n address: string;\n continuedAddress?: string;\n city: string;\n province: string;\n postalCode: string;\n taxId: string;\n};\n\nexport const addressSchema = Joi.object({\n type: Joi.string().required(),\n user: Joi.string().hex().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n country: Joi.string().required(),\n address: Joi.string().required(),\n continuedAddress: Joi.string().optional().allow(\"\", null),\n city: Joi.string().required(),\n province: Joi.string().required(),\n postalCode: Joi.string().required(),\n taxId: Joi.string().optional().allow(\"\", null),\n});\n\nexport function MAddress(value: any): TAddress {\n if (value.user) {\n try {\n value.user = new ObjectId(value.user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n }\n\n if (value.org) {\n try {\n value.org = new ObjectId(value.org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n }\n\n return {\n type: value.type ?? \"billing\",\n user: value.user ?? \"\",\n org: value.org ?? \"\",\n country: value.country ?? \"\",\n address: value.address ?? \"\",\n continuedAddress: value.continuedAddress ?? \"\",\n city: value.city ?? \"\",\n province: value.province ?? \"\",\n postalCode: value.postalCode ?? \"\",\n taxId: value.taxId ?? \"\",\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport { MPromoCode, TPromoCode } from \"../models/promo-code.model\";\nimport Joi from \"joi\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function usePromoCodeRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"promo-codes\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n { key: { code: 1 } },\n { key: { type: 1 } },\n { key: { status: 1 } },\n { key: { assignedTo: 1 } },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index for promo code.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndexes([\n { key: { code: 1, type: 1 }, unique: true },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create unique index for promo code.\");\n }\n }\n\n async function add(value: TPromoCode) {\n try {\n value = MPromoCode(value);\n await collection.insertOne(value);\n delCachedData();\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Promo code already exists.\");\n }\n\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function getByCode(\n code: string,\n type?: string,\n assigned?: boolean | null\n ) {\n const schema = Joi.object({\n code: Joi.string().trim().required(),\n });\n\n const { error } = schema.validate({ code });\n\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n const query: Record<string, any> = { code };\n\n if (type) {\n query.type = type;\n }\n\n if (assigned === true) {\n query.assignedTo = { $exists: true, $ne: \"\" };\n } else if (assigned === false) {\n query.assignedTo = { $in: [null, \"\"] };\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n code,\n type: type || \"default\",\n assigned: assigned?.toString() || \"any\",\n });\n\n try {\n // Check cache first\n const cached = await getCache<TPromoCode>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByCode promo code: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TPromoCode>(query);\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for promo code by code: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for promo code by code: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function getById(_id: string | ObjectId) {\n const schema = Joi.object({\n _id: Joi.string().hex().required(),\n });\n\n const { error } = schema.validate({ _id });\n\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const cacheKey = makeCacheKey(namespace_collection, { _id: String(_id) });\n\n try {\n // Check cache first\n const cached = await getCache<TPromoCode>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getById promo code: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne<TPromoCode>({ _id });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for promo code by ID: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for promo code by ID: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function getPromoCodes({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"active\",\n type = \"\",\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { status };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n if (type) {\n query.type = type;\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n search,\n page,\n limit,\n sort: JSON.stringify(sort),\n status,\n type,\n });\n\n try {\n // Check cache first\n const cached = await getCache<Record<string, any>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getPromoCodes: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getPromoCodes: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getPromoCodes: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function assignByUserId(\n { user, code } = {} as { user: string | ObjectId; code: string },\n session?: ClientSession\n ) {\n const schema = Joi.object({\n user: Joi.string().required(),\n code: Joi.string().required(),\n });\n\n const { error } = schema.validate({ user, code });\n\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n try {\n await collection.updateOne(\n { code },\n { $set: { assignedTo: user } },\n { session }\n );\n delCachedData();\n } catch (error) {\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n add,\n getByCode,\n getPromoCodes,\n assignByUserId,\n getById,\n };\n}\n","import Joi from \"joi\";\n\nconst promoTypeSchema = Joi.string().valid(\"tiered\", \"fixed\").required();\n\nconst promoTierSchema = Joi.object({\n min: Joi.number().integer().min(1).required(),\n max: Joi.number().integer().min(Joi.ref(\"min\")).allow(0).required(),\n price: Joi.number().positive().required(),\n});\n\nexport const schema = Joi.object({\n code: Joi.string().trim().uppercase().required(),\n description: Joi.string().trim().optional(),\n type: promoTypeSchema,\n tiers: Joi.alternatives().conditional(\"type\", {\n is: \"tiered\",\n then: Joi.array().items(promoTierSchema).min(1).required(),\n otherwise: Joi.forbidden(),\n }),\n fixed_rate: Joi.alternatives().conditional(\"type\", {\n is: \"fixed\",\n then: Joi.number().required().min(0),\n otherwise: Joi.number().integer().allow(0),\n }),\n expiresAt: Joi.string().optional().allow(null, \"\"),\n});\n","import { ObjectId } from \"mongodb\";\ntype TPromoType = \"tiered\" | \"fixed\";\n\nexport type TPromoTier = {\n min: number;\n max: number;\n price: number;\n};\n\nexport type TPromoCode = {\n _id?: ObjectId;\n code: string;\n description?: string;\n type: TPromoType;\n tiers?: TPromoTier[];\n fixed_rate?: number;\n appliesTo?: string; // \"subscription\" | \"order\"\n createdAt?: string; // Date of creation\n expiresAt?: string; // Optional expiry\n assignedTo?: string | ObjectId; // Store the only ape who used it\n status?: \"active\" | \"expired\" | \"disabled\";\n};\n\nimport { schema } from \"../validations/promo-code.schema\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\n\nexport function MPromoCode(data: TPromoCode): TPromoCode {\n const { error } = schema.validate(data);\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n return {\n _id: data._id,\n code: data.code,\n description: data.description ?? \"\",\n type: data.type,\n tiers: data.tiers ?? [],\n fixed_rate: data.fixed_rate ?? 0,\n appliesTo: data.appliesTo ?? \"\",\n createdAt: new Date().toISOString(),\n expiresAt: data.expiresAt ?? \"\",\n assignedTo: data.assignedTo,\n status: data.status ?? \"active\",\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n logger,\n paginate,\n useAtlas,\n} from \"@eeplatform/nodejs-utils\";\nimport { TInvoice, useInvoiceModel } from \"../models/invoice.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function useInvoiceRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new Error(\"Unable to connect to server.\");\n }\n\n const { collection, createInvoice } = useInvoiceModel(db);\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n {\n key: { name: 1 },\n },\n {\n key: { status: 1 },\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndexes([\n {\n key: { invoiceNumber: 1 },\n unique: true,\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create unique index.\");\n }\n }\n\n async function add(value: TInvoice, session?: ClientSession) {\n try {\n value = createInvoice(value);\n await collection.insertOne(value, { session });\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Invoice already exists.\");\n }\n\n throw new InternalServerError(\n \"Internal server error, failed to add invoice.\"\n );\n }\n }\n\n async function getByDueDate(\n id: string | ObjectId,\n dueDate: Date,\n status?: TInvoice[\"status\"]\n ) {\n try {\n id = new ObjectId(id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const query: Record<string, any> = {\n \"metadata.orgId\": id,\n dueDate,\n };\n\n if (status) {\n query.status = status;\n }\n\n try {\n return await collection.findOne<TInvoice>(query);\n } catch (error) {\n throw new InternalServerError(\"Failed to get invoices by due date.\");\n }\n }\n\n async function getByNumber(number: string) {\n try {\n return await collection.findOne<TInvoice>({ invoiceNumber: number });\n } catch (error) {\n throw new InternalServerError(\"Failed to get invoice by invoice number.\");\n }\n }\n\n async function getByTransactionId(id: string) {\n try {\n return await collection.findOne<TInvoice>({\n \"metadata.transactionId\": id,\n });\n } catch (error) {\n throw new InternalServerError(\"Failed to get invoice by transaction ID.\");\n }\n }\n\n async function getBySubscriptionId(\n { page, search, limit, sort, id } = {} as {\n page?: number;\n search?: string;\n limit?: number;\n sort?: Record<string, any>;\n id?: string | ObjectId;\n }\n ) {\n try {\n try {\n id = new ObjectId(id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n\n const query: Record<string, any> = {\n \"metadata.subscriptionId\": id,\n };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n page = page && page > 0 ? page - 1 : 0;\n limit = limit && limit > 0 ? limit : 10;\n sort = sort || { _id: -1 };\n\n const items = await collection\n .aggregate([\n {\n $match: query,\n },\n {\n $sort: sort,\n },\n {\n $skip: page * limit,\n },\n {\n $limit: limit,\n },\n ])\n .toArray();\n const count = await collection.countDocuments(query);\n return paginate(items, page, limit, count);\n } catch (error) {\n throw new InternalServerError(\n \"Failed to get invoices by subscription ID.\"\n );\n }\n }\n\n async function getOverdueInvoices(BATCH_SIZE = 100) {\n const today = new Date();\n const startOfDay = new Date(today.setUTCHours(0, 0, 0, 0)); // Start of today (UTC)\n const endOfDay = new Date(today.setUTCHours(23, 59, 59, 999)); // End of today (UTC)\n\n try {\n return await collection\n .find<TInvoice>({\n status: \"pending\",\n $or: [\n {\n dueDate: {\n $gte: startOfDay,\n $lte: endOfDay,\n }, // Due Today\n },\n {\n dueDate: { $lt: startOfDay }, // Overdue (Past due)\n },\n ],\n })\n .sort({ nextBillingDate: 1 }) // Process the oldest first\n .limit(BATCH_SIZE)\n .toArray();\n } catch (error) {\n throw new InternalServerError(\"Failed to get overdue invoices.\");\n }\n }\n\n async function updateStatusByInvoiceNumber(\n invoiceNumber: string,\n status: TInvoice[\"status\"],\n session?: ClientSession\n ) {\n try {\n await collection.updateOne(\n { invoiceNumber },\n { $set: { status } },\n { session }\n );\n } catch (error) {\n throw new InternalServerError(\"Failed to update invoice status.\");\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n add,\n getByDueDate,\n updateStatusByInvoiceNumber,\n getOverdueInvoices,\n getBySubscriptionId,\n getByNumber,\n getByTransactionId,\n };\n}\n","import { z } from \"zod\";\nimport { ObjectId, Collection, Db } from \"mongodb\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\n\n// Helper function to validate and convert _id\nfunction toObjectId(value?: string | ObjectId): ObjectId {\n if (typeof value === \"string\") {\n if (!/^[a-fA-F0-9]{24}$/.test(value)) {\n throw new BadRequestError(`Invalid ObjectId format: ${value}`);\n }\n return new ObjectId(value);\n }\n return value instanceof ObjectId ? value : new ObjectId();\n}\n\n// Invoice Status\nconst TInvoiceStatus = z.enum([\"pending\", \"paid\", \"overdue\", \"cancelled\"]);\ntype TInvoiceStatus = z.infer<typeof TInvoiceStatus>;\n\n// Invoice Type\nconst TInvoiceType = z.enum([\n \"organization-subscription\",\n \"affiliate-subscription\",\n \"one-time-payment\",\n \"other\",\n]);\ntype TInvoiceType = z.infer<typeof TInvoiceType>;\n\n// Invoice Item\nconst TInvoiceItem = z.object({\n description: z.string({ required_error: \"Item description is required.\" }),\n unitPrice: z.number().min(0, { message: \"Unit price must be at least 0.\" }),\n quantity: z\n .number()\n .int({ message: \"Quantity must be an integer.\" })\n .min(1, { message: \"Quantity must be at least 1.\" }),\n seats: z\n .number()\n .int({ message: \"Seats must be an integer.\" })\n .min(1, { message: \"Seats must be at least 1.\" })\n .optional(),\n total: z.number().min(0, { message: \"Total amount must be at least 0.\" }),\n});\ntype TInvoiceItem = z.infer<typeof TInvoiceItem>;\n\n// Metadata\nconst TInvoiceMetadata = z\n .object({\n transactionId: z.string().optional(),\n userId: z.union([z.string().length(24), z.instanceof(ObjectId)]).optional(),\n orgId: z.union([z.string().length(24), z.instanceof(ObjectId)]).optional(),\n billingCycle: z\n .enum([\"monthly\", \"yearly\", \"quarterly\"], {\n errorMap: () => ({\n message: \"Billing cycle must be monthly, yearly, or quarterly.\",\n }),\n })\n .optional(),\n subscriptionId: z\n .union([z.string().length(24), z.instanceof(ObjectId)])\n .optional(),\n currency: z.string().default(\"PHP\").optional(),\n description: z.string().optional(),\n })\n .default({})\n .optional()\n .transform((val) => {\n if (val && typeof val.subscriptionId === \"string\") {\n val.subscriptionId = new ObjectId(val.subscriptionId);\n }\n\n if (val && typeof val.orgId === \"string\") {\n val.orgId = new ObjectId(val.orgId);\n }\n\n if (val && typeof val.userId === \"string\") {\n val.userId = new ObjectId(val.userId);\n }\n\n return val;\n });\ntype TInvoiceMetadata = z.infer<typeof TInvoiceMetadata>;\n\n// Invoice Schema with _id Validation\nconst TInvoice = z.object({\n _id: z\n .union([\n z.string().length(24, {\n message: \"Invalid ObjectId: Must be a 24-character hex string.\",\n }),\n z.instanceof(ObjectId, { message: \"Invalid ObjectId instance.\" }),\n ])\n .optional()\n .transform((val) => (val ? toObjectId(val) : undefined)),\n invoiceNumber: z.string({ required_error: \"Invoice number is required.\" }),\n type: TInvoiceType.default(\"other\"),\n amount: z.number().min(0, { message: \"Invoice amount must be at least 0.\" }),\n dueDate: z.date({ required_error: \"Due date is required.\" }),\n status: TInvoiceStatus.default(\"pending\"),\n items: z\n .array(TInvoiceItem)\n .min(1, { message: \"At least one item is required in the invoice.\" }),\n metadata: TInvoiceMetadata,\n createdAt: z\n .date()\n .default(() => new Date())\n .optional(),\n updatedAt: z.date().optional(),\n});\nexport type TInvoice = z.infer<typeof TInvoice>;\n\n// Composable Function for Creating Invoice Object\nexport function useInvoiceModel(db: Db) {\n const collection: Collection<TInvoice> = db.collection<TInvoice>(\"invoices\");\n\n function createInvoice(data: TInvoice): TInvoice {\n try {\n data.createdAt = new Date();\n return TInvoice.parse(data);\n } catch (error) {\n if (error instanceof z.ZodError) {\n error.issues.forEach((issue) => {\n console.error(\n `Path: ${issue.path.join(\".\")}, Error: ${issue.message}`\n );\n });\n\n throw new BadRequestError(\n `Invoice validation failed: ${error.issues\n .map((issue) => `[${issue.path.join(\".\")}] ${issue.message}`)\n .join(\", \")}`\n );\n }\n\n throw new BadRequestError(\"An unexpected error occurred.\");\n }\n }\n\n return { createInvoice, collection };\n}\n","import {\n useAtlas,\n useCache,\n makeCacheKey,\n logger,\n} from \"@eeplatform/nodejs-utils\";\nimport { useCounterModel } from \"../models/counter.model\";\nimport { ClientSession } from \"mongodb\";\n\nexport function useCounterRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new Error(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"counters\";\n const { collection, createCounter } = useCounterModel(db);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n {\n key: { type: 1 },\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndexes([\n {\n key: { type: 1 },\n unique: true,\n name: \"unique_type\",\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create counter unique index.\");\n }\n }\n\n async function add(type: string) {\n try {\n const value = createCounter({ type });\n await collection.insertOne(value);\n delCachedData();\n } catch (error) {\n throw new Error(\"Failed to add counter.\");\n }\n }\n\n async function incrementByType(type: string, session?: ClientSession) {\n try {\n const res = await collection.updateOne(\n { type },\n { $inc: { count: 1 } },\n { session }\n );\n delCachedData();\n } catch (error) {\n throw new Error(`Failed to increment ${type} counter.`);\n }\n }\n\n async function getByType(type: string) {\n const cacheKey = makeCacheKey(namespace_collection, { type });\n\n try {\n // Check cache first\n const cached = await getCache<any>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByType counter: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne({ type });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for counter by type: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for counter by type: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new Error(\"Failed to get counter.\");\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n add,\n getByType,\n incrementByType,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { ObjectId, Db, Collection } from \"mongodb\";\nimport { z } from \"zod\";\n\n// Counter Schema\nconst TCounter = z.object({\n _id: z\n .union([\n z.string().length(24, \"Invalid ObjectId hex string\"),\n z.instanceof(ObjectId),\n ])\n .transform((val) => (typeof val === \"string\" ? new ObjectId(val) : val))\n .optional(),\n count: z.number().int().min(0).default(0),\n type: z.string(),\n createdAt: z\n .date()\n .optional()\n .default(() => new Date()),\n updatedAt: z.date().optional(),\n deletedAt: z.date().optional(),\n});\nexport type TCounter = z.infer<typeof TCounter>;\n\n// Counter Model Composable\nexport function useCounterModel(db: Db) {\n const collection: Collection<TCounter> = db.collection<TCounter>(\"counters\");\n\n function createCounter(value: Pick<TCounter, \"type\">) {\n try {\n return TCounter.parse(value);\n } catch (error: any) {\n throw new BadRequestError(error.issues[0].message);\n }\n }\n\n function validateCounter(data: unknown) {\n return TCounter.safeParse(data);\n }\n\n return {\n createCounter,\n validateCounter,\n collection,\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n logger,\n paginate,\n useAtlas,\n} from \"@eeplatform/nodejs-utils\";\nimport { TPayment, usePaymentModel } from \"../models/payment.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function usePaymentRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new Error(\"Unable to connect to server.\");\n }\n\n const { collection, createPayment } = usePaymentModel(db);\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n {\n key: { name: 1 },\n },\n {\n key: { invoiceId: 1 },\n },\n {\n key: { status: 1 },\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndexes([\n {\n key: { paymentNumber: 1 },\n unique: true,\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create unique index.\");\n }\n }\n\n async function add(value: TPayment, session?: ClientSession) {\n try {\n value = createPayment(value);\n await collection.insertOne(value, { session });\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Payment already exists.\");\n }\n\n throw new InternalServerError(\n \"Internal server error, failed to add payment.\"\n );\n }\n }\n\n async function getPayments({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"completed\",\n type = \"\",\n id = \"\",\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { status };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n if (type) {\n query.type = type;\n }\n\n if (id) {\n try {\n query[\"metadata.subscriptionId\"] = new ObjectId(id);\n } catch (error) {\n throw new BadRequestError(\"Invalid subscription ID.\");\n }\n }\n\n try {\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n\n return paginate(items, page, limit, length);\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function getByInvoiceId(invoiceId: string) {\n if (!invoiceId) {\n throw new BadRequestError(\"Invalid invoice ID.\");\n }\n\n try {\n return await collection.findOne({ invoiceId });\n } catch (error) {\n throw new InternalServerError(\n \"Internal server error. Failed to get payment.\"\n );\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n add,\n getPayments,\n getByInvoiceId,\n };\n}\n","import {\n useAtlas,\n useCache,\n makeCacheKey,\n logger,\n} from \"@eeplatform/nodejs-utils\";\nimport { TPrice, TPriceType, usePriceModel } from \"../models/price.model\";\nimport { ClientSession } from \"mongodb\";\n\nexport function usePriceRepo() {\n const db = useAtlas.getDb();\n if (!db) {\n throw new Error(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"prices\";\n const { collection, createPrice } = usePriceModel(db);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n {\n key: { name: 1, type: 1 },\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndexes([\n {\n key: { type: 1, name: 1 },\n unique: true,\n name: \"unique_type\",\n },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create price unique index.\");\n }\n }\n\n async function add(value: Pick<TPrice, \"type\" | \"name\" | \"value\">) {\n try {\n value = createPrice(value);\n await collection.insertOne(value);\n delCachedData();\n } catch (error) {\n throw new Error(\"Failed to add price.\");\n }\n }\n\n async function setSaleValueByType(\n value: Pick<TPrice, \"type\" | \"saleValue\" | \"saleExpiry\">,\n session?: ClientSession\n ) {\n try {\n await collection.updateOne(\n { type: value.type },\n { $set: { saleValue: value.saleValue, saleExpiry: value.saleExpiry } },\n { session }\n );\n delCachedData();\n } catch (error) {\n throw new Error(`Failed to set ${value.type} sale price.`);\n }\n }\n\n async function getByNameType(name: string, type: TPriceType) {\n const cacheKey = makeCacheKey(namespace_collection, { name, type });\n\n try {\n // Check cache first\n const cached = await getCache<any>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getByNameType price: ${cacheKey}`,\n });\n return cached;\n }\n\n const data = await collection.findOne({ name, type });\n\n if (data) {\n setCache(cacheKey, data, 300, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for price by name and type: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for price by name and type: ${err.message}`,\n });\n });\n }\n\n return data;\n } catch (error) {\n throw new Error(\"Failed to get price.\");\n }\n }\n\n return {\n createIndex,\n createUniqueIndex,\n add,\n getByNameType,\n setSaleValueByType,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { ObjectId, Db, Collection } from \"mongodb\";\nimport { z } from \"zod\";\n\n// Payment Method\nconst TPriceType = z.enum([\n \"monthly-subscription\",\n \"yearly-subscription\",\n \"one-time-payment\",\n \"other\",\n]);\nexport type TPriceType = z.infer<typeof TPriceType>;\n\n// Priceer Schema\nconst TPrice = z.object({\n _id: z\n .union([\n z.string().length(24, \"Invalid ObjectId hex string\"),\n z.instanceof(ObjectId),\n ])\n .optional()\n .transform((val) => (typeof val === \"string\" ? new ObjectId(val) : val)),\n value: z.number().int().min(0).default(0),\n saleValue: z.number().int().min(0).default(0).optional(),\n saleExpiry: z.date().optional(),\n name: z.string(),\n type: TPriceType.optional().default(\"other\"),\n createdAt: z\n .date()\n .default(() => new Date())\n .optional(),\n updatedAt: z.date().optional(),\n deletedAt: z.date().optional(),\n});\nexport type TPrice = z.infer<typeof TPrice>;\n\n// Price Model Composable\nexport function usePriceModel(db: Db) {\n const collection: Collection<TPrice> = db.collection<TPrice>(\"prices\");\n\n function createPrice(value: Pick<TPrice, \"type\" | \"name\" | \"value\">) {\n try {\n return TPrice.parse(value);\n } catch (error: any) {\n throw new BadRequestError(error.issues[0].message);\n }\n }\n\n function validatePrice(data: unknown) {\n return TPrice.safeParse(data);\n }\n\n return {\n createPrice,\n validatePrice,\n collection,\n };\n}\n","import axios from \"axios\";\nimport {\n PAYPAL_API_URL,\n PAYPAL_CLIENT_ID,\n PAYPAL_CLIENT_SECRET,\n} from \"../config\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\n\nexport function usePaypalService() {\n async function getAccessToken() {\n try {\n const res = await axios.post(\n `${PAYPAL_API_URL}/v1/oauth2/token`,\n \"grant_type=client_credentials\",\n {\n auth: {\n username: PAYPAL_CLIENT_ID,\n password: PAYPAL_CLIENT_SECRET,\n },\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n }\n );\n return res.data.access_token;\n } catch (error) {\n throw new BadRequestError(\n \"Failed to get PayPal access token. Please check your credentials and try again. \" +\n String(error)\n );\n }\n }\n\n type TInvoiceData = {\n invoiceNumber?: string; // optional, will be generated if not provided\n invoiceDate?: string; // optional, defaults to current date\n invoiceDueDate?: string; // optional, defaults to 10 days from invoice date\n customerEmail: string;\n customerName?: string;\n quantity: number; // number of seats\n ratePerSeat: number; // price per user\n currency: string; // e.g. \"USD\"\n items?: Array<Record<string, any>>;\n note?: string;\n };\n\n async function createInvoice(data: TInvoiceData) {\n // Due date is 7 days after invoice date if not provided by default\n\n const invoicePayload = {\n detail: {\n invoice_number: data.invoiceNumber ?? `GW-${Date.now()}`,\n invoice_date:\n data.invoiceDate || new Date().toISOString().split(\"T\")[0],\n payment_term: {\n due_date:\n data.invoiceDueDate ??\n new Date(Date.now() + 7 * 24 * 60 * 60 * 1000)\n .toISOString()\n .split(\"T\")[0],\n },\n currency_code: data.currency,\n note: \"Please pay within 7 day to avoid organization subscription will be suspension.\",\n },\n invoicer: {\n name: {\n full_name: data.customerName,\n },\n website: \"www.goweekdays.com\",\n },\n primary_recipients: [\n {\n billing_info: {\n name: {\n full_name: data.customerName || \"GoWeekdays Customer\",\n },\n email_address: data.customerEmail,\n },\n },\n ],\n items: data.items?.length\n ? data.items.map((i: any) => {\n return {\n name: \"Per Seat Charge\",\n description: \"Monthly subscription fee per user\",\n quantity: i.quantity,\n unit_amount: {\n currency_code: data.currency,\n value: (i.unitPrice * i.quantity).toFixed(2),\n },\n unit_of_measure: \"QUANTITY\",\n };\n })\n : [\n {\n name: \"Per Seat Charge\",\n description: \"Monthly subscription fee per user\",\n quantity: data.quantity,\n unit_amount: {\n currency_code: data.currency,\n value: (data.ratePerSeat * data.quantity).toFixed(2),\n },\n unit_of_measure: \"QUANTITY\",\n },\n ],\n configuration: {\n allow_tip: true,\n tax_calculated_after_discount: true,\n tax_inclusive: false,\n },\n amount: {\n breakdown: {\n total_amount: {\n label: \"Total seats charge\",\n amount: {\n currency_code: data.currency,\n value: (data.ratePerSeat * data.quantity).toFixed(2),\n },\n },\n },\n },\n };\n\n try {\n const accessToken = await getAccessToken();\n\n const createDraft = await axios.post(\n `${PAYPAL_API_URL}/v2/invoicing/invoices`,\n invoicePayload,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n const invoiceDraft = (createDraft.data.href as string) ?? \"\";\n\n const invoiceId = (invoiceDraft.split(\"/\").pop() as string) ?? \"\";\n\n await axios.post(\n `${PAYPAL_API_URL}/v2/invoicing/invoices/${invoiceId}/send`,\n {\n subject: \"GoWeekdays Monthly Invoice\",\n send_to_recipient: true,\n send_to_invoicer: false,\n },\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n return invoiceId;\n } catch (error: any) {\n console.error(\n \"Error creating and sending PayPal invoice:\",\n error.response.data.details\n );\n throw new BadRequestError(\n \"Failed to create and send invoice. Please try again later. \" +\n String(error)\n );\n }\n }\n\n async function getInvoiceById(invoiceId: string) {\n try {\n const accessToken = await getAccessToken();\n const response = await axios.get(\n `${PAYPAL_API_URL}/v2/invoicing/invoices/${invoiceId}`,\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.data;\n } catch (error) {\n throw new BadRequestError(\n \"Failed to retrieve invoice. Please check the invoice ID and try again. \" +\n String(error)\n );\n }\n }\n\n return {\n createInvoice,\n getInvoiceById,\n };\n}\n","import Joi from \"joi\";\nimport { useSubscriptionRepo } from \"../repositories/subscription.repository\";\nimport type { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { useSubscriptionService } from \"../services/subscription.service\";\nimport { useSubscriptionSchema } from \"../validations/subscription.schema\";\n\nexport function useSubscriptionController() {\n const {\n add: _add,\n getSubscriptions: _getSubscriptions,\n getByAffiliateUserId: _getByAffiliateUserId,\n getByOrgId: _getByOrgId,\n getById: _getById,\n updatePromoCodeById: _updatePromoCodeById,\n updateStatusById: _updateStatusById,\n updatePaymentMethodById: _updatePaymentMethodById,\n addBillingContactById: _addBillingContactById,\n updateBillingContactByAddedAt: _updateBillingContactByAddedAt,\n deleteBillingContactByAddedAt: _deleteBillingContactByAddedAt,\n } = useSubscriptionRepo();\n\n const {\n getByUserId: _getByUserId,\n getStatusByUser: _getStatusByUser,\n createAffiliateSubscription: _createAffiliateSubscription,\n createOrgSubscription: _createOrgSubscription,\n updateSubscriptionSeats: _updateSubscriptionSeats,\n processSubscriptionPayment: _processSubscriptionPayment,\n subscribe: _subscribe,\n } = useSubscriptionService();\n\n async function subscribe(req: Request, res: Response, next: NextFunction) {\n const value = req.body;\n\n const validation = Joi.object({\n user: Joi.string().hex().required(),\n transactionId: Joi.string().optional().allow(\"\", null),\n promoCode: Joi.string().optional().allow(\"\", null),\n seats: Joi.number().min(1).required(),\n perSeatPrice: Joi.number().min(0).required(),\n currency: Joi.string().required(),\n org: Joi.object({\n name: Joi.string().required(),\n email: Joi.string().email().required(),\n contact: Joi.string().optional().allow(\"\", null),\n busInst: Joi.string().optional().allow(\"\", null),\n type: Joi.string().valid(\"personal\", \"business\").required(),\n }),\n });\n\n const { error } = validation.validate(value);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const id = await _subscribe(value);\n res.json({ message: \"Successfully subscribed.\", id });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function add(req: Request, res: Response, next: NextFunction) {\n const value = req.body;\n\n const validation = Joi.object({\n user: Joi.string().required(),\n subscriptionId: Joi.string().required(),\n });\n\n const { error } = validation.validate(value);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const value = req.body;\n const id = await _add(value);\n res.json({ message: \"Successfully added subscription.\", id });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByUserId(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id as string;\n\n const validation = Joi.string().required();\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const subscription = await _getByUserId(id);\n res.json(subscription);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByAffiliateUserId(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = req.params.id as string;\n\n const validation = Joi.string().required();\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const subscription = await _getByAffiliateUserId(id);\n res.json(subscription);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByOrgId(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id as string;\n\n const validation = Joi.string().required();\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const subscription = await _getByOrgId(id);\n res.json(subscription);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getById(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id as string;\n\n const validation = Joi.string().required();\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const subscription = await _getById(id);\n res.json(subscription);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getSubscriptions(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const status = (req.query.status as string) ?? \"\";\n const search = (req.query.search as string) ?? \"\";\n const page = Number(req.query.page) ?? 1;\n\n const validation = Joi.object({\n status: Joi.string().required(),\n search: Joi.string().optional().allow(\"\", null),\n page: Joi.number().required(),\n });\n\n const { error } = validation.validate({ status, search, page });\n\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const subscriptions = await _getSubscriptions({ status, search, page });\n res.json(subscriptions);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getSubscriptionStatus(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = req.params.id as string;\n\n const validation = Joi.string().required();\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const status = await _getStatusByUser(id);\n res.json({ status });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n const { schema: subscriptionSchema } = useSubscriptionSchema();\n\n async function createAffiliateSubscription(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const value = req.body;\n\n value.user = req.headers[\"user\"] as string;\n\n const { error } = subscriptionSchema.validate(value);\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const id = await _createAffiliateSubscription(value);\n res.json({ message: \"Successfully added subscription.\", id });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function createOrgSubscription(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const value = req.body;\n\n value.user = req.headers[\"user\"] as string;\n\n const { error } = subscriptionSchema.validate(value);\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const _res = await _createOrgSubscription(value);\n res.json(_res);\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function updateSubscriptionSeats(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const subscriptionId = (req.params.id as string) ?? \"\";\n const value = req.body;\n\n const { error } = Joi.object({\n transactionId: Joi.string().optional().allow(\"\", null),\n subscriptionId: Joi.string().required(),\n seats: Joi.number().required(),\n promoCode: Joi.string().optional().allow(\"\", null),\n amount: Joi.number().min(0).optional(),\n }).validate({ subscriptionId, ...value });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const _res = await _updateSubscriptionSeats({ subscriptionId, ...value });\n res.json(_res);\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function updatePromoCodeById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const subscriptionId = (req.params.id as string) ?? \"\";\n const promoCode = req.body.promoCode;\n\n const { error } = Joi.object({\n subscriptionId: Joi.string().required(),\n promoCode: Joi.string().optional().allow(\"\", null),\n }).validate({ subscriptionId, promoCode });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _updatePromoCodeById(subscriptionId, promoCode);\n res.json({ message: \"Promo code updated successfully.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function updateStatusById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const subscriptionId = (req.params.id as string) ?? \"\";\n const status = req.body.status;\n\n const { error } = Joi.object({\n subscriptionId: Joi.string().required(),\n status: Joi.string().optional().allow(\"\", null),\n }).validate({ subscriptionId, status });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _updateStatusById(subscriptionId, status);\n res.json({ message: \"Promo code updated successfully.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function addBillingContactById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const subscriptionId = (req.params.id as string) ?? \"\";\n const email = req.body.email;\n\n const { error } = Joi.object({\n subscriptionId: Joi.string().required(),\n email: Joi.string().email().required(),\n }).validate({ subscriptionId, email });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _addBillingContactById(subscriptionId, email);\n res.json({ message: \"Successfully added billing contact.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function updateBillingContactByAddedAt(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.params.id as string) ?? \"\";\n const addedAt = (req.params.addedAt as string) ?? \"\";\n const email = req.body.email;\n\n const { error } = Joi.object({\n id: Joi.string().hex().required(),\n addedAt: Joi.string().isoDate().required(),\n email: Joi.string().email().required(),\n }).validate({ id, addedAt, email });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _updateBillingContactByAddedAt(id, addedAt, email);\n res.json({ message: \"Successfully updated billing contact.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function deleteBillingContactByAddedAt(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.params.id as string) ?? \"\";\n const addedAt = (req.params.addedAt as string) ?? \"\";\n\n const { error } = Joi.object({\n id: Joi.string().hex().required(),\n addedAt: Joi.string().isoDate().required(),\n }).validate({ id, addedAt });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _deleteBillingContactByAddedAt(id, addedAt);\n res.json({ message: \"Successfully deleted billing contact.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function updatePaymentMethodById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const subscriptionId = (req.params.id as string) ?? \"\";\n const paymentMethodId = req.body.paymentMethodId;\n\n const { error } = Joi.object({\n subscriptionId: Joi.string().required(),\n paymentMethodId: Joi.string().optional().allow(\"\", null),\n }).validate({ subscriptionId, paymentMethodId });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _updatePaymentMethodById(subscriptionId, paymentMethodId);\n res.json({\n message: \"Successfully updated subscription payment method.\",\n });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n async function processSubscriptionPayment(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.params.id as string) ?? \"\";\n const invoiceNumber = (req.body.invoice as string) ?? \"\";\n\n const { error } = Joi.object({\n id: Joi.string().hex().required(),\n invoiceNumber: Joi.string().required(),\n }).validate({ id, invoiceNumber });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const payment = await _processSubscriptionPayment(invoiceNumber, id);\n res.json(payment);\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n return {\n subscribe,\n add,\n getByUserId,\n getByOrgId,\n getById,\n getByAffiliateUserId,\n getSubscriptions,\n getSubscriptionStatus,\n createAffiliateSubscription,\n createOrgSubscription,\n updateSubscriptionSeats,\n updatePromoCodeById,\n updateStatusById,\n updatePaymentMethodById,\n addBillingContactById,\n updateBillingContactByAddedAt,\n deleteBillingContactByAddedAt,\n processSubscriptionPayment,\n };\n}\n","import Joi from \"joi\";\n\nexport function useSubscriptionSchema() {\n const schema = Joi.object({\n user: Joi.string().required().min(0),\n amount: Joi.number().min(0).required(),\n customer_id: Joi.string().required(),\n payment_method_id: Joi.string().required(),\n payment_method_type: Joi.string().required(),\n payment_method_channel: Joi.string().required(),\n payment_method_month_expiry: Joi.string().optional().allow(null, \"\"),\n payment_method_year_expiry: Joi.string().optional().allow(null, \"\"),\n payment_method_cvv: Joi.string().optional().allow(null, \"\"),\n currency: Joi.string().optional().allow(\"\", null),\n seats: Joi.number().optional().min(0).allow(null),\n organization: Joi.object({\n name: Joi.string().required(),\n description: Joi.string().optional().allow(\"\", null),\n type: Joi.string().allow(\"personal\", \"business\").required(),\n email: Joi.string().email().required(),\n contact: Joi.string().required(),\n busInst: Joi.string().optional().allow(null, \"\"),\n })\n .optional()\n .allow({}),\n billingAddress: Joi.object({\n type: Joi.string().required(),\n country: Joi.string().required(),\n address: Joi.string().required(),\n continuedAddress: Joi.string().optional().allow(null, \"\"),\n city: Joi.string().required(),\n province: Joi.string().required(),\n postalCode: Joi.string().required(),\n taxId: Joi.string().optional().allow(null, \"\"),\n }).required(),\n promoCode: Joi.string().optional().allow(\"\", null),\n });\n\n return {\n schema,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { ObjectId } from \"mongodb\";\n\nexport type TPaymentMethod = {\n _id?: ObjectId;\n user?: ObjectId | string;\n org?: ObjectId | string;\n name: string;\n description?: string;\n type: string;\n number: string;\n month_expiry?: string;\n year_expiry?: string;\n cvv?: string;\n paymentId: string;\n customerId?: string;\n status?: string;\n createdAt?: string;\n deletedAt?: string;\n};\n\nexport function MPaymentMethod(value: TPaymentMethod): TPaymentMethod {\n if (value.user) {\n try {\n value.user = new ObjectId(value.user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n }\n\n if (value.org) {\n try {\n value.org = new ObjectId(value.org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n }\n\n return {\n _id: value._id ?? new ObjectId(),\n user: value.user ?? \"\",\n org: value.org ?? \"\",\n name: value.name,\n description: value.description,\n type: value.type,\n paymentId: value.paymentId ?? \"\",\n customerId: value.customerId ?? \"\",\n number: value.number,\n month_expiry: value.month_expiry ?? \"\",\n year_expiry: value.year_expiry ?? \"\",\n cvv: value.cvv ?? \"\",\n status: value.status ?? \"active\",\n createdAt: value.createdAt ?? new Date().toISOString(),\n deletedAt: value.deletedAt ?? \"\",\n };\n}\n","import {\n BadRequestError,\n InternalServerError,\n logger,\n useAtlas,\n} from \"@eeplatform/nodejs-utils\";\nimport { MPaymentMethod, TPaymentMethod } from \"../models/payment-method.model\";\nimport { ClientSession, ObjectId } from \"mongodb\";\n\nexport function usePaymentMethodRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new BadRequestError(\"Unable to connect to server.\");\n }\n\n const collection = db.collection(\"payment-methods\");\n\n async function createIndex() {\n try {\n await collection.createIndexes([\n { key: { user: 1 } },\n { key: { org: 1 } },\n ]);\n } catch (error) {\n throw new BadRequestError(\"Failed to create index on payment method.\");\n }\n }\n\n async function createUniqueIndex() {\n try {\n await collection.createIndexes([\n {\n key: {\n user: 1,\n org: 1,\n type: 1,\n name: 1,\n number: 1,\n },\n unique: true,\n },\n ]);\n } catch (error) {\n throw new BadRequestError(\n \"Failed to create unique index on payment method.\"\n );\n }\n }\n\n async function add(value: TPaymentMethod, session?: ClientSession) {\n try {\n value = MPaymentMethod(value);\n await collection.insertOne(value, { session });\n return \"Successfully added payment method.\";\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n\n const isDuplicated = error.message.includes(\"duplicate\");\n\n if (isDuplicated) {\n throw new BadRequestError(\"Payment method already exist.\");\n }\n\n throw new InternalServerError(\"Failed to add payment method.\");\n }\n }\n\n function getByUser(user: string | ObjectId) {\n try {\n user = new ObjectId(user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n try {\n return collection\n .aggregate([\n { $match: { user, org: \"\" } },\n {\n $project: {\n _id: 1,\n name: 1,\n type: 1,\n number: 1,\n paymentId: 1,\n customerId: 1,\n status: 1,\n },\n },\n ])\n .toArray();\n } catch (error) {\n throw new BadRequestError(\"Failed to get payment methods.\");\n }\n }\n\n function getByOrg(org: string | ObjectId) {\n try {\n org = new ObjectId(org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n\n try {\n return collection\n .aggregate([\n { $match: { org } },\n {\n $project: {\n _id: 1,\n name: 1,\n type: 1,\n number: 1,\n paymentId: 1,\n customerId: 1,\n status: 1,\n },\n },\n ])\n .toArray();\n } catch (error) {\n throw new BadRequestError(\"Failed to get payment methods.\");\n }\n }\n\n async function getByPaymentMethodId(paymentMethodId: string | ObjectId) {\n if (!paymentMethodId) {\n throw new BadRequestError(\"Invalid payment method ID.\");\n }\n\n try {\n return await collection.findOne<TPaymentMethod>({ paymentMethodId });\n } catch (error) {\n throw new BadRequestError(\"Failed to retrieve payment method.\");\n }\n }\n\n async function deleteById(_id: string | ObjectId) {\n try {\n _id = new ObjectId(_id);\n } catch (error) {\n throw new BadRequestError(\"Invalid payment method ID.\");\n }\n\n try {\n await collection.updateOne(\n { _id },\n { $set: { status: \"deleted\", deletedAt: new Date() } }\n );\n return \"Successfully deleted payment method.\";\n } catch (error) {\n throw new BadRequestError(\"Failed to delete payment method.\");\n }\n }\n\n return {\n createIndex,\n add,\n getByUser,\n getByOrg,\n deleteById,\n createUniqueIndex,\n getByPaymentMethodId,\n };\n}\n","import { BadRequestError, useAtlas } from \"@eeplatform/nodejs-utils\";\nimport { useUserRepo } from \"../repositories/user.repository\";\nimport { useXenditService } from \"./xendit.service\";\nimport { usePaymentMethodRepo } from \"../repositories/payment-method.repository\";\nimport { useOrgRepo } from \"../repositories/organization.repository\";\n\nexport function usePaymentMethodService() {\n const { linkPaymentMethodEWallet, linkPaymentMethodCard } =\n useXenditService();\n const { getUserById } = useUserRepo();\n const { add } = usePaymentMethodRepo();\n const { getById: getOrgById } = useOrgRepo();\n\n // Define card masking rules\n const cardRules = {\n Visa: { length: 16, visibleDigits: 4 },\n MasterCard: { length: 16, visibleDigits: 4 },\n \"American Express\": { length: 15, visibleDigits: 5 },\n Discover: { length: 16, visibleDigits: 4 },\n \"Diners Club\": { length: 14, visibleDigits: 4 },\n JCB: { length: 16, visibleDigits: 4 },\n UnionPay: { length: 19, visibleDigits: 4 },\n Maestro: { length: 19, visibleDigits: 4 },\n };\n\n type TCardRule =\n | \"Visa\"\n | \"MasterCard\"\n | \"American Express\"\n | \"Discover\"\n | \"Diners Club\"\n | \"JCB\"\n | \"UnionPay\"\n | \"Maestro\";\n\n // Detect card type based on starting digits\n const detectCardType = (cardNumber: string) => {\n const patterns = {\n Visa: /^4/,\n MasterCard: /^(5[1-5]|222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[01]\\d|2720)/,\n \"American Express\": /^3[47]/,\n Discover: /^(6011|622(12[6-9]|1[3-9]\\d|[2-8]\\d\\d|92[0-5])|64[4-9]|65)/,\n \"Diners Club\": /^3(0[0-5]|[68])/,\n JCB: /^35/,\n UnionPay: /^62/,\n Maestro: /^(50|5[6-9]|6\\d)/,\n };\n\n for (const [type, regex] of Object.entries(patterns)) {\n if (regex.test(cardNumber)) return type;\n }\n\n return \"Unknown\";\n };\n\n // Function to mask the card number\n const maskCardNumber = (cardNumber: string) => {\n const cardType = detectCardType(cardNumber);\n const rule = cardRules[cardType as TCardRule] || { visibleDigits: 4 }; // Default to 4 visible digits\n\n const visibleDigits = rule.visibleDigits;\n const maskLength = cardNumber.length - visibleDigits;\n\n if (maskLength <= 0) return cardNumber; // Edge case\n\n // Replace the first part with \"*\"\n const maskedPart = \"*\".repeat(maskLength);\n const visiblePart = cardNumber.slice(maskLength);\n\n return `${maskedPart}${visiblePart}`;\n };\n\n async function linkEWallet({\n customer_id = \"\",\n type = \"GCASH\",\n success_return_url = \"\",\n failure_return_url = \"\",\n cancel_return_url = \"\",\n } = {}) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n try {\n const paymentMethod = await linkPaymentMethodEWallet({\n customerId: customer_id,\n type,\n success_return_url,\n failure_return_url,\n cancel_return_url,\n });\n\n return {\n paymentMethod: paymentMethod.id,\n actions: paymentMethod.actions,\n };\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n async function linkCard({\n user = \"\",\n type = \"\",\n success_return_url = \"\",\n failure_return_url = \"\",\n card_number = \"\",\n expiry_month = \"\",\n expiry_year = \"\",\n cvv = \"\",\n cardholder_name = \"\",\n currency = \"PHP\",\n } = {}) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n try {\n const _user = await getUserById(user);\n if (!_user) {\n throw new BadRequestError(\"User not found.\");\n }\n\n if (!_user._id) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n\n const result = await linkPaymentMethodCard({\n card_number,\n expiry_month,\n expiry_year,\n cvv,\n cardholder_name,\n currency,\n success_return_url,\n failure_return_url,\n });\n\n await add(\n {\n user: _user._id,\n type,\n status: \"active\",\n paymentId: result.id,\n name: result.type,\n number: maskCardNumber(card_number),\n },\n session\n );\n\n await session?.commitTransaction();\n\n return result;\n } catch (error) {\n await session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n return {\n linkEWallet,\n linkCard,\n };\n}\n","import { usePaymentMethodService } from \"../services/payment-method.service\";\nimport { Request, Response, NextFunction } from \"express\";\nimport Joi from \"joi\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { usePaymentMethodRepo } from \"../repositories/payment-method.repository\";\nimport { useXenditService } from \"../services/xendit.service\";\nimport {\n DirectDebitSchema,\n EWalletPaymentSchema,\n CardPaymentSchema,\n} from \"../models/payment.model\";\n\nexport function usePaymentMethodController() {\n const { linkEWallet: _linkEWallet, linkCard: _linkCard } =\n usePaymentMethodService();\n const {\n cardLinkOnly,\n directDebitLinkOnly,\n eWalletLinkOnly,\n getPaymentMethodById: _getPaymentMethodById,\n getPaymentMethodsByCustomerId: _getPaymentMethodsByCustomerId,\n updatePaymentMethodStatusById: _updatePaymentMethodStatusById,\n } = useXenditService();\n\n async function linkEWallet(req: Request, res: Response, next: NextFunction) {\n const type = (req.body.type as string) ?? \"\";\n const customer_id = (req.body.customer_id as string) ?? \"\";\n const success_return_url = (req.body.success_return_url as string) ?? \"\";\n const failure_return_url = (req.body.failure_return_url as string) ?? \"\";\n const cancel_return_url = (req.body.cancel_return_url as string) ?? \"\";\n\n const validation = Joi.object({\n customer_id: Joi.string().required(),\n type: Joi.string()\n .valid(\"GCASH\", \"PAYMAYA\", \"SHOPEEPAY\", \"GRABPAY\")\n .required(),\n success_return_url: Joi.string().uri().required(),\n failure_return_url: Joi.string().uri().required(),\n cancel_return_url: Joi.string().uri().required(),\n });\n\n const { error } = validation.validate({\n customer_id,\n type,\n success_return_url,\n failure_return_url,\n cancel_return_url,\n });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const result = await _linkEWallet({\n customer_id,\n type,\n success_return_url,\n failure_return_url,\n cancel_return_url,\n });\n res.json(result);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function linkCard(req: Request, res: Response, next: NextFunction) {\n const cardNumber = (req.body.cardNumber as string) ?? \"\";\n const expiryMonth = (req.body.expiryMonth as string) ?? \"\";\n const expiryYear = (req.body.expiryYear as string) ?? \"\";\n const cvv = (req.body.cvv as string) ?? \"\";\n const cardholderName = (req.body.cardholderName as string) ?? \"\";\n const currency = (req.body.currency as string) ?? \"\";\n const success_return_url = (req.body.success_return_url as string) ?? \"\";\n const failure_return_url = (req.body.failure_return_url as string) ?? \"\";\n const cardType = (req.body.cardType as string) ?? \"\";\n const user = (req.headers[\"user\"] as string) ?? \"\";\n\n const validation = Joi.object({\n cardNumber: Joi.string().required(),\n expiryMonth: Joi.string().required(),\n expiryYear: Joi.string().required(),\n cvv: Joi.string().required(),\n cardholderName: Joi.string().required(),\n currency: Joi.string().optional().allow(\"\", null),\n success_return_url: Joi.string().uri().required(),\n failure_return_url: Joi.string().uri().required(),\n cardType: Joi.string().required(),\n user: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({\n user,\n cardType,\n cardNumber,\n expiryMonth,\n expiryYear,\n cvv,\n cardholderName,\n currency,\n success_return_url,\n failure_return_url,\n });\n\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const result = await _linkCard({\n type: cardType,\n user,\n card_number: cardNumber,\n expiry_month: expiryMonth,\n expiry_year: expiryYear,\n cvv,\n cardholder_name: cardholderName,\n currency,\n success_return_url,\n failure_return_url,\n });\n res.json(result);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n const { getByUser: _getByUser, getByOrg: _getByOrg } = usePaymentMethodRepo();\n\n async function getByUser(req: Request, res: Response, next: NextFunction) {\n const user = (req.params.user as string) ?? \"\";\n\n const validation = Joi.object({\n user: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({ user });\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const result = await _getByUser(user);\n res.json(result);\n } catch (error) {\n next(error);\n }\n }\n\n async function getByOrg(req: Request, res: Response, next: NextFunction) {\n const org = (req.params.org as string) ?? \"\";\n\n const validation = Joi.object({\n org: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({ org });\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const result = await _getByOrg(org);\n res.json(result);\n } catch (error) {\n next(error);\n }\n }\n\n async function getPaymentMethodById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.params.id as string) ?? \"\";\n\n const validation = Joi.object({\n id: Joi.string().required(),\n });\n\n const { error } = validation.validate({ id });\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const result = await _getPaymentMethodById(id);\n res.json(result);\n } catch (error) {\n next(error);\n }\n }\n\n async function linkOnly(req: Request, res: Response, next: NextFunction) {\n const type = (req.body.type as string) ?? \"\";\n if (type === \"CARD\") {\n try {\n CardPaymentSchema.parse(req.body);\n } catch (error: any) {\n next(new BadRequestError(error.issues[0].message));\n return;\n }\n\n try {\n const paymentMethod = await cardLinkOnly(req.body);\n res.json(paymentMethod);\n return;\n } catch (error: any) {\n next(error);\n return;\n }\n }\n\n if (type === \"EWALLET\") {\n try {\n EWalletPaymentSchema.parse(req.body);\n } catch (error: any) {\n next(new BadRequestError(error.issues[0].message));\n return;\n }\n\n try {\n const paymentMethod = await eWalletLinkOnly(req.body);\n res.json(paymentMethod);\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n if (type === \"DIRECT_DEBIT\") {\n try {\n DirectDebitSchema.parse(req.body);\n } catch (error: any) {\n next(new BadRequestError(error.issues[0].message));\n return;\n }\n\n try {\n const paymentMethod = await directDebitLinkOnly(req.body);\n res.json(paymentMethod);\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n next(new BadRequestError(\"Invalid type\"));\n return;\n }\n\n async function getPaymentMethodsByCustomerId(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.params.id as string) ?? \"\";\n\n const validation = Joi.object({\n id: Joi.string().required(),\n });\n\n const { error } = validation.validate({ id });\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const result = await _getPaymentMethodsByCustomerId(id);\n res.json(result);\n } catch (error) {\n next(error);\n }\n }\n\n async function updatePaymentMethodStatusById(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = (req.params.id as string) ?? \"\";\n const status = (req.body.status as string) ?? \"\";\n\n const validation = Joi.object({\n id: Joi.string().required(),\n status: Joi.string().valid(\"ACTIVE\", \"INACTIVE\").required(),\n });\n\n const { error } = validation.validate({ id, status });\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const result = await _updatePaymentMethodStatusById(id, status);\n res.json(result);\n } catch (error) {\n next(error);\n }\n }\n\n return {\n linkEWallet,\n linkCard,\n getByUser,\n getByOrg,\n linkOnly,\n getPaymentMethodById,\n getPaymentMethodsByCustomerId,\n updatePaymentMethodStatusById,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError, NotFoundError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { useAddressRepo } from \"../repositories/address.repository\";\n\nexport function useAddressController() {\n const {\n add: _add,\n getByUserId: _getByUserId,\n getByOrgId: _getByOrgId,\n updateById: _updateById,\n } = useAddressRepo();\n\n async function add(req: Request, res: Response, next: NextFunction) {\n const value = req.body;\n\n const validation = Joi.object({\n type: Joi.string().required(),\n user: Joi.string().hex().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n country: Joi.string().required(),\n address: Joi.string().required(),\n continuedAddress: Joi.string().optional().allow(\"\", null),\n city: Joi.string().required(),\n province: Joi.string().required(),\n postalCode: Joi.string().required(),\n taxId: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate(value);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const value = req.body;\n const id = await _add(value);\n res.json({ message: \"Successfully added subscription.\", id });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function updateById(req: Request, res: Response, next: NextFunction) {\n const id = (req.params.id as string) ?? \"\";\n const value = req.body;\n\n const validation = Joi.object({\n id: Joi.string().hex().required(),\n country: Joi.string().required(),\n address: Joi.string().required(),\n continuedAddress: Joi.string().optional().allow(\"\", null),\n city: Joi.string().required(),\n province: Joi.string().required(),\n postalCode: Joi.string().required(),\n taxId: Joi.string().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ id, ...value });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _updateById(id, value);\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByUserId(req: Request, res: Response, next: NextFunction) {\n const user = req.params.user as string;\n\n const validation = Joi.string().hex().required();\n const { error } = validation.validate(user);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const address = await _getByUserId(user);\n if (!address) {\n next(new NotFoundError(\"Address not found.\"));\n return;\n }\n\n res.json(address);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByOrgId(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id as string;\n\n const validation = Joi.string().hex().required();\n const { error } = validation.validate(id);\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const address = await _getByOrgId(id);\n if (!address) {\n next(new NotFoundError(\"Address not found.\"));\n return;\n }\n\n res.json(address);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n return {\n add,\n getByUserId,\n getByOrgId,\n updateById,\n };\n}\n","import { NotFoundError, useAtlas } from \"@eeplatform/nodejs-utils\";\nimport { useMemberRepo } from \"../repositories/member.repository\";\nimport { useOrgRepo } from \"../repositories/organization.repository\";\nimport { useRoleRepo } from \"../repositories/role.repository\";\nimport { useUserRepo } from \"../repositories/user.repository\";\n\nexport function useOrgService() {\n const { add: addOrg } = useOrgRepo();\n const { addRole } = useRoleRepo();\n const { add: addMember } = useMemberRepo();\n const { getUserById } = useUserRepo();\n\n async function createOrg({ user = \"\", name = \"\", description = \"\" } = {}) {\n const session = useAtlas.getClient()?.startSession();\n session?.startTransaction();\n\n try {\n // Get user\n const _user = await getUserById(user);\n\n if (!_user) {\n throw new NotFoundError(\"User not found.\");\n }\n\n // Create organization\n const org = await addOrg(\n {\n name,\n description,\n },\n session\n );\n\n // Create roles\n const role = await addRole(\n {\n org: org,\n name: \"Owner\",\n description: \"Owner of the organization\",\n permissions: [\"all\"],\n },\n session\n );\n\n // Create member\n\n await addMember(\n {\n name: `${_user.firstName} ${_user.lastName}`,\n org,\n orgName: name,\n user,\n role,\n type: \"organization\",\n },\n session\n );\n\n // Commit transaction\n session?.commitTransaction();\n\n return \"Organization created successfully.\";\n } catch (error) {\n // Rollback transaction\n session?.abortTransaction();\n throw error;\n } finally {\n session?.endSession();\n }\n }\n\n return {\n createOrg,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { useOrgService } from \"../services/organization.service\";\nimport { useMemberRepo } from \"../repositories/member.repository\";\nimport { useOrgRepo } from \"../repositories/organization.repository\";\n\nexport function useOrgController() {\n const { createOrg: _createOrg } = useOrgService();\n const { getOrgsByMembership } = useMemberRepo();\n const {\n getByName: _getByName,\n getAll: getAllOrg,\n getById: _getById,\n } = useOrgRepo();\n\n async function createOrg(req: Request, res: Response, next: NextFunction) {\n const value = req.body;\n\n const validation = Joi.object({\n name: Joi.string().required(),\n type: Joi.string().required(),\n email: Joi.string().email().required(),\n contact: Joi.string().required(),\n description: Joi.string().required(),\n user: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate(value);\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const message = await _createOrg(value);\n\n res.json({ message });\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getOrgsByUserId(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const page =\n typeof req.query.page === \"string\" ? Number(req.query.page) : 1;\n const limit =\n typeof req.query.limit === \"string\" ? Number(req.query.limit) : 10;\n const search = (req.query.search as string) ?? \"\";\n\n const user = (req.params.user as string) ?? \"\";\n\n const isPageNumber = isFinite(page);\n if (!isPageNumber) {\n next(new BadRequestError(\"Invalid page number.\"));\n return;\n }\n\n const isLimitNumber = isFinite(limit);\n\n if (!isLimitNumber) {\n next(new BadRequestError(\"Invalid limit number.\"));\n return;\n }\n\n const validation = Joi.object({\n user: Joi.string().hex().required(),\n page: Joi.number().min(1).optional().allow(\"\", null),\n limit: Joi.number().min(1).optional().allow(\"\", null),\n search: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ user, page, limit, search });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const orgs = await getOrgsByMembership({ user, page, limit, search });\n res.json(orgs);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getAll(req: Request, res: Response, next: NextFunction) {\n const query = req.query;\n\n const validation = Joi.object({\n page: Joi.number().min(1).optional().allow(\"\", null),\n limit: Joi.number().min(1).optional().allow(\"\", null),\n search: Joi.string().optional().allow(\"\", null),\n status: Joi.string()\n .valid(\"active\", \"suspended\", \"inactive\", \"deleted\")\n .optional(),\n });\n\n const { error } = validation.validate(query);\n\n const page =\n typeof req.query.page === \"string\" ? Number(req.query.page) : 1;\n const limit =\n typeof req.query.limit === \"string\" ? Number(req.query.limit) : 10;\n const search = (req.query.search as string) ?? \"\";\n const status = (req.query.status as string) ?? \"active\";\n\n const isPageNumber = isFinite(page);\n if (!isPageNumber) {\n next(new BadRequestError(\"Invalid page number.\"));\n return;\n }\n\n const isLimitNumber = isFinite(limit);\n\n if (!isLimitNumber) {\n next(new BadRequestError(\"Invalid limit number.\"));\n return;\n }\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const orgs = await getAllOrg({ page, limit, search, status });\n res.json(orgs);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByName(req: Request, res: Response, next: NextFunction) {\n const name = req.params.name;\n\n const validation = Joi.object({\n name: Joi.string().required(),\n });\n\n const { error } = validation.validate({ name });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const org = await _getByName(name);\n res.json(org);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getById(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id;\n\n const validation = Joi.object({\n id: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({ id });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const org = await _getById(id);\n res.json(org);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n return {\n createOrg,\n getOrgsByUserId,\n getByName,\n getAll,\n getById,\n };\n}\n","import Joi from \"joi\";\nimport { useMemberRepo } from \"../repositories/member.repository\";\nimport { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\n\nexport function useMemberController() {\n const {\n getByUserId: _getByUserId,\n getAll: _getAll,\n getOrgsByMembership: _getOrgsByMembership,\n updateStatusByUserId: _updateStatusByUserId,\n getByUserType: _getByUserType,\n } = useMemberRepo();\n\n async function getByUserId(req: Request, res: Response, next: NextFunction) {\n const userId = req.params.id as string;\n\n const validation = Joi.object({\n id: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({ id: userId });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const member = await _getByUserId(userId);\n if (!member) {\n res.status(404).json({ message: \"Member not found.\" });\n return;\n }\n\n res.json(member);\n } catch (error) {\n next(error);\n }\n }\n\n async function getByUserType(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const validation = Joi.object({\n org: Joi.string().hex().optional().allow(\"\", null),\n user: Joi.string().hex().required(),\n type: Joi.string().required(),\n });\n\n const { error } = validation.validate({ ...req.params, ...req.query });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n const orgId = req.query.org as string;\n const userId = req.params.user as string;\n const type = req.params.type as string;\n\n try {\n const member = await _getByUserType(userId, type, orgId);\n if (!member) {\n res.status(404).json({ message: \"Member not found.\" });\n return;\n }\n\n res.json(member);\n } catch (error) {\n next(error);\n }\n }\n\n async function getAll(req: Request, res: Response, next: NextFunction) {\n const limit = Number(req.query.limit) ?? 10;\n const search = (req.query.search as string) ?? \"\";\n const page = Number(req.query.page) ?? 1;\n const user = (req.query.user as string) ?? \"\";\n const org = (req.query.org as string) ?? \"\";\n const type = (req.query.type as string) ?? \"main\";\n const status = (req.query.status as string) ?? \"active\";\n\n const validation = Joi.object({\n limit: Joi.number().min(10).max(50).required(),\n search: Joi.string().optional().allow(\"\", null),\n page: Joi.number().required(),\n user: Joi.string().hex().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n type: Joi.string().required(),\n status: Joi.string().required(),\n });\n\n const { error } = validation.validate({\n search,\n page,\n user,\n org,\n type,\n limit,\n status,\n });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const items = await _getAll({\n search,\n page,\n user,\n org,\n type,\n limit,\n status,\n });\n\n res.json(items);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getOrgsByMembership(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const limit = Number(req.query.limit) ?? 10;\n const search = (req.query.search as string) ?? \"\";\n const page = Number(req.query.page) ?? 1;\n const user = (req.query.user as string) ?? \"\";\n\n const validation = Joi.object({\n limit: Joi.number().min(10).max(50).required(),\n search: Joi.string().optional().allow(\"\", null),\n page: Joi.number().required(),\n user: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({\n search,\n page,\n user,\n limit,\n });\n\n if (error) {\n next(new BadRequestError(error.message));\n }\n\n try {\n const items = await _getOrgsByMembership({\n search,\n page,\n user,\n limit,\n });\n\n res.json(items);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function updateStatusByUserId(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const validation = Joi.object({\n id: Joi.string().hex().required(),\n status: Joi.string().valid(\"active\", \"suspended\", \"deleted\").required(),\n });\n\n const { error } = validation.validate(req.params);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n const id = req.params.id as string;\n const status = req.params.status as string;\n\n try {\n const message = await _updateStatusByUserId(id, status);\n res.json({ message });\n } catch (error) {\n next(error);\n }\n }\n\n return {\n getByUserId,\n getAll,\n getOrgsByMembership,\n updateStatusByUserId,\n getByUserType,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { usePromoCodeRepo } from \"../repositories/promo-code.repository\";\nimport {\n AppError,\n BadRequestError,\n InternalServerError,\n NotFoundError,\n} from \"@eeplatform/nodejs-utils\";\nimport Joi, { valid } from \"joi\";\nimport { schema } from \"../validations/promo-code.schema\";\n\nexport function usePromoCodeController() {\n const {\n add: _add,\n getByCode: _getByCode,\n getPromoCodes: _getPromoCodes,\n getById: _getById,\n } = usePromoCodeRepo();\n\n async function add(req: Request, res: Response, next: NextFunction) {\n const data = req.body;\n\n const { error } = schema.validate(data);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await _add(data);\n res.json({ message: \"Successfully added promo code.\" });\n return;\n } catch (error: any) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(error));\n }\n }\n }\n\n async function getByCode(req: Request, res: Response, next: NextFunction) {\n const code = req.query.code as string;\n const type = req.query.type as string;\n const assigned =\n req.query.assigned === \"true\"\n ? true\n : req.query.assigned === \"false\"\n ? false\n : null;\n\n const validation = Joi.object({\n code: Joi.string().trim().required(),\n type: Joi.string().optional(),\n // true or false\n assigned: Joi.boolean().optional().allow(null, \"\"),\n });\n\n const { error } = validation.validate({ code, type, assigned });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const promoCode = await _getByCode(code, type, assigned);\n if (!promoCode) {\n next(new NotFoundError(\"Promo code not found.\"));\n return;\n }\n res.json(promoCode);\n return;\n } catch (error: any) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(error));\n }\n }\n }\n\n async function getById(req: Request, res: Response, next: NextFunction) {\n const id = req.params.id as string;\n\n const validation = Joi.object({\n id: Joi.string().hex().required(),\n });\n\n const { error } = validation.validate({ id });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const promoCode = await _getById(id);\n if (!promoCode) {\n next(new NotFoundError(\"Promo code not found.\"));\n return;\n }\n res.json(promoCode);\n return;\n } catch (error: any) {\n if (error instanceof AppError) {\n next(error);\n } else {\n next(new InternalServerError(error));\n }\n }\n }\n\n async function getPromoCodes(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const page = req.query.page ? Number(req.query.page) : 1;\n const limit = req.query.limit ? Number(req.query.limit) : 10;\n const search = req.query.search as string;\n const status = req.query.status as string;\n\n const validation = Joi.object({\n page: Joi.number().required(),\n limit: Joi.number().integer().optional().min(10).max(100),\n search: Joi.string().optional().allow(\"\"),\n status: Joi.string().required(),\n });\n\n const { error } = validation.validate({ page, limit, search, status });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const promoCodes = await _getPromoCodes({\n page,\n limit,\n search,\n status,\n });\n res.json(promoCodes);\n return;\n } catch (error: any) {\n next(error);\n }\n }\n\n return {\n add,\n getByCode,\n getPromoCodes,\n getById,\n };\n}\n","import { ObjectId } from \"mongodb\";\n\nexport type TOrderMetadata = {\n subscriptionId?: ObjectId | string;\n cycle?: number;\n seats?: number;\n promoCode?: string;\n};\n\nexport type TOrder = {\n _id?: ObjectId;\n payment?: string;\n user?: ObjectId | string;\n org?: ObjectId | string;\n type: string;\n amount: number;\n currency: string;\n description?: string;\n metadata?: TOrderMetadata;\n status?: string;\n createdAt?: string;\n updatedAt?: string;\n deletedAt?: string;\n};\n\nimport { schema } from \"../validations/order.schema\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\n\nexport function MOrder(value: TOrder): TOrder {\n const { error } = schema.validate(value);\n if (error) {\n throw new BadRequestError(error.message);\n }\n\n if (value._id) {\n try {\n value._id = new ObjectId(value._id);\n } catch (error) {\n throw new BadRequestError(\"Invalid ID.\");\n }\n }\n\n if (value.user) {\n try {\n value.user = new ObjectId(value.user);\n } catch (error) {\n throw new BadRequestError(\"Invalid user ID.\");\n }\n }\n\n if (value.org) {\n try {\n value.org = new ObjectId(value.org);\n } catch (error) {\n throw new BadRequestError(\"Invalid org ID.\");\n }\n }\n\n if (value.metadata?.subscriptionId) {\n try {\n value.metadata.subscriptionId = new ObjectId(\n value.metadata.subscriptionId\n );\n } catch (error) {\n throw new BadRequestError(\"Invalid subscription ID.\");\n }\n }\n\n return {\n _id: value._id,\n payment: value.payment,\n user: value.user ?? \"\",\n org: value.org ?? \"\",\n type: value.type,\n amount: value.amount,\n currency: value.currency,\n description: value.description ?? \"\",\n metadata: value.metadata ?? {},\n status: value.status ?? \"succeeded\",\n createdAt: new Date().toISOString(),\n updatedAt: value.updatedAt ?? \"\",\n deletedAt: value.deletedAt ?? \"\",\n };\n}\n","import Joi from \"joi\";\n\nexport const schema = Joi.object({\n _id: Joi.string().hex().optional().allow(\"\", null),\n payment: Joi.string().required(),\n user: Joi.string().hex().optional().allow(\"\", null),\n org: Joi.string().hex().optional().allow(\"\", null),\n type: Joi.string().required(),\n amount: Joi.number().positive().min(0).required(),\n currency: Joi.string().required(),\n description: Joi.string().optional().allow(\"\", null),\n metadata: Joi.object({\n subscriptionId: Joi.string().hex().optional().allow(\"\", null),\n cycle: Joi.number().optional().allow(\"\", null),\n seats: Joi.number().optional().allow(\"\", null),\n promoCode: Joi.string().optional().allow(\"\", null),\n })\n .optional()\n .allow(\"\", null),\n status: Joi.string().optional().allow(\"\", null),\n createdAt: Joi.string().optional().allow(\"\", null),\n updatedAt: Joi.string().optional().allow(\"\", null),\n deletedAt: Joi.string().optional().allow(\"\", null),\n});\n","import {\n AppError,\n BadRequestError,\n InternalServerError,\n logger,\n makeCacheKey,\n paginate,\n useAtlas,\n useCache,\n} from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { MOrder, TOrder } from \"../models/order.model\";\nimport { ObjectId, ClientSession } from \"mongodb\";\n\nexport function useOrderRepo() {\n const db = useAtlas.getDb();\n\n if (!db) {\n throw new InternalServerError(\"Unable to connect to server.\");\n }\n\n const namespace_collection = \"orders\";\n const collection = db.collection(namespace_collection);\n const { getCache, setCache, delNamespace } = useCache();\n\n function delCachedData() {\n delNamespace(namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache namespace cleared for ${namespace_collection}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to clear cache namespace for ${namespace_collection}: ${err.message}`,\n });\n });\n }\n\n function createIndex() {\n try {\n collection.createIndexes([\n { key: { \"metadata.subscriptionId\": 1 } },\n { key: { status: 1 } },\n { key: { type: 1 } },\n ]);\n } catch (error) {\n throw new Error(\"Failed to create index for promo code.\");\n }\n }\n\n function add(value: TOrder, session?: ClientSession) {\n try {\n value = MOrder(value);\n collection.insertOne(value, { session });\n delCachedData();\n } catch (error: any) {\n logger.log({ level: \"error\", message: `${error}` });\n if (error instanceof AppError) {\n throw error;\n }\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n async function getOrders({\n search = \"\",\n page = 1,\n limit = 10,\n sort = {},\n status = \"active\",\n type = \"\",\n id = \"\",\n } = {}) {\n page = page > 0 ? page - 1 : 0;\n\n const query: Record<string, any> = { status };\n\n sort = Object.keys(sort).length > 0 ? sort : { _id: -1 };\n\n if (search) {\n query.$text = { $search: search };\n }\n\n if (type) {\n query.type = type;\n }\n\n if (id) {\n try {\n query[\"metadata.subscriptionId\"] = new ObjectId(id);\n } catch (error) {\n throw new BadRequestError(\"Invalid subscription ID.\");\n }\n }\n\n const cacheKey = makeCacheKey(namespace_collection, {\n search,\n page,\n limit,\n sort: JSON.stringify(sort),\n status,\n type,\n id,\n });\n\n try {\n // Check cache first\n const cached = await getCache<Record<string, any>>(cacheKey);\n if (cached) {\n logger.log({\n level: \"info\",\n message: `Cache hit for getOrders: ${cacheKey}`,\n });\n return cached;\n }\n\n const items = await collection\n .aggregate([\n { $match: query },\n { $sort: sort },\n { $skip: page * limit },\n { $limit: limit },\n ])\n .toArray();\n const length = await collection.countDocuments(query);\n const data = paginate(items, page, limit, length);\n\n setCache(cacheKey, data, 600, namespace_collection)\n .then(() => {\n logger.log({\n level: \"info\",\n message: `Cache set for getOrders: ${cacheKey}`,\n });\n })\n .catch((err) => {\n logger.log({\n level: \"error\",\n message: `Failed to set cache for getOrders: ${err.message}`,\n });\n });\n\n return data;\n } catch (error) {\n logger.log({ level: \"error\", message: `${error}` });\n throw new InternalServerError(\"Internal server error.\");\n }\n }\n\n return {\n createIndex,\n add,\n getOrders,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { useOrderRepo } from \"../repositories/order.repository\";\n\nexport function useOrderController() {\n const { getOrders: _getOrders } = useOrderRepo();\n\n async function getOrders(req: Request, res: Response, next: NextFunction) {\n const page = (req.query.page as string) ?? 1;\n const limit = (req.query.limit as string) ?? 10;\n const search = (req.query.search as string) ?? \"\";\n const status = (req.query.status as string) ?? \"succeeded\";\n const id = (req.query.id as string) ?? \"\";\n\n const validation = Joi.object({\n page: Joi.number().required(),\n limit: Joi.number().required().min(10),\n search: Joi.string().optional().allow(\"\", null),\n status: Joi.string().optional().allow(\"\", null),\n id: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ page, limit, search, status, id });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const orders = await _getOrders({\n page: parseInt(page),\n limit: parseInt(limit),\n search,\n status,\n id,\n });\n res.json(orders);\n return;\n } catch (error: any) {\n next(error);\n }\n }\n\n return {\n getOrders,\n };\n}\n","import {\n BadRequestError,\n logger,\n NotFoundError,\n useAtlas,\n} from \"@eeplatform/nodejs-utils\";\nimport { useInvoiceRepo } from \"../repositories/invoice.repository\";\nimport { useSubscriptionRepo } from \"../repositories/subscription.repository\";\nimport { TPayment } from \"../models/payment.model\";\nimport { usePaymentRepo } from \"../repositories/payment.repository\";\nimport { usePaypalService } from \"./paypal.service\";\n\nexport function useInvoiceService() {\n const {\n getOverdueInvoices,\n updateStatusByInvoiceNumber,\n getByTransactionId,\n } = useInvoiceRepo();\n const {\n getById,\n processSuccessfulPayment,\n updateMaxSeatsById,\n updateStatusById,\n } = useSubscriptionRepo();\n const { add: addPayment } = usePaymentRepo();\n\n const { getInvoiceById } = usePaypalService();\n\n async function processOverDueInvoices(BATCH_SIZE = 100, MAX_RETRIES = 7) {\n while (true) {\n const overdueInvoices = await getOverdueInvoices(BATCH_SIZE);\n\n if (!overdueInvoices.length) {\n logger.log({\n level: \"info\",\n message: \"No overdue invoices found.\",\n });\n break;\n }\n\n await Promise.allSettled(\n overdueInvoices.map(async (invoice) => {\n const session = useAtlas.getClient()?.startSession();\n\n if (!session) {\n logger.log({\n level: \"error\",\n message: \"Failed to start session.\",\n });\n return;\n }\n\n if (!invoice._id) {\n logger.log({\n level: \"error\",\n message: \"Invoice ID is missing.\",\n });\n return;\n }\n\n if (!invoice.metadata?.subscriptionId) {\n logger.log({\n level: \"error\",\n message: \"Subscription ID is missing.\",\n });\n return;\n }\n\n const subscription = await getById(\n invoice.metadata.subscriptionId\n ).catch(() => null);\n\n if (!subscription) {\n logger.log({\n level: \"error\",\n message: \"Subscription not found.\",\n });\n return;\n }\n\n if (!subscription._id) {\n logger.log({\n level: \"error\",\n message: \"Subscription ID is missing.\",\n });\n return;\n }\n\n try {\n session.startTransaction();\n\n if (!invoice.metadata?.currency) {\n throw new Error(\"Currency is missing.\");\n }\n\n if (!invoice.metadata.transactionId) {\n throw new Error(\"Transaction ID is missing.\");\n }\n\n const paypalInvoice = await getInvoiceById(\n invoice.metadata.transactionId\n );\n\n const isOverdue =\n paypalInvoice.status === \"SENT\" &&\n new Date(paypalInvoice.detail.payment_term.due_date) < new Date();\n\n if (!isOverdue) {\n await updateStatusById(\n subscription._id.toString(),\n \"suspended\",\n session\n );\n\n await session.commitTransaction();\n return;\n }\n\n const isPaid = paypalInvoice.status === \"PAID\";\n\n if (isPaid && subscription.status !== \"active\") {\n await updateStatusById(\n subscription._id.toString(),\n \"active\",\n session\n );\n await updateStatusByInvoiceNumber(\n invoice.invoiceNumber,\n \"paid\",\n session\n );\n\n await processSuccessfulPayment(\n {\n _id: subscription._id,\n nextBillingDate: subscription.nextBillingDate,\n },\n session\n );\n\n const paymentData: TPayment = {\n invoiceId: invoice.invoiceNumber,\n amount: invoice.amount,\n status: \"completed\",\n paymentMethod: \"PAYPAL\",\n metadata: {\n userId: String(subscription.user || \"\"),\n orgId: String(subscription.org || \"\"),\n currency: subscription.currency,\n payment: invoice.metadata.transactionId,\n subscriptionId: subscription._id?.toString(),\n },\n };\n\n if (!paymentData.metadata.userId) {\n delete paymentData.metadata.userId;\n }\n\n if (!paymentData.metadata.orgId) {\n delete paymentData.metadata.orgId;\n }\n\n await addPayment(paymentData, session);\n\n if (!subscription.paidSeats) {\n throw new Error(\"Subscription paid seats is missing.\");\n }\n\n await updateMaxSeatsById(\n {\n _id: subscription._id.toString(),\n seats: subscription.paidSeats,\n },\n session\n );\n\n await session.commitTransaction();\n return;\n }\n } catch (error) {\n logger.log({\n level: \"error\",\n message: String(error),\n });\n\n // ❌ Abort the payment transaction if an error occurs\n await session.abortTransaction();\n } finally {\n session.endSession();\n }\n })\n );\n\n logger.log({\n level: \"info\",\n message: \"Successfully processed overdue invoices.\",\n });\n }\n }\n\n async function paypalPaidInvoiceWebhookHandler(invoiceId: string) {\n if (!invoiceId) {\n throw new BadRequestError(\"Invoice ID is required.\");\n }\n\n const session = useAtlas.getClient()?.startSession();\n\n if (!session) {\n logger.log({\n level: \"error\",\n message: \"Failed to start session.\",\n });\n return;\n }\n\n session.startTransaction();\n\n try {\n const invoice = await getByTransactionId(invoiceId);\n if (!invoice) {\n throw new NotFoundError(\"Invoice not found.\");\n }\n\n if (!invoice.metadata?.subscriptionId) {\n throw new BadRequestError(\n \"Subscription ID is missing in invoice metadata.\"\n );\n }\n\n const subscription = await getById(invoice.metadata.subscriptionId);\n\n if (!subscription) {\n throw new NotFoundError(\"Subscription not found.\");\n }\n\n if (!subscription._id) {\n throw new BadRequestError(\"Subscription ID is missing.\");\n }\n\n if (subscription.status !== \"active\") {\n await updateStatusById(subscription._id.toString(), \"active\", session);\n await processSuccessfulPayment(\n {\n _id: subscription._id,\n nextBillingDate: new Date(),\n },\n session\n );\n }\n\n await updateStatusByInvoiceNumber(invoice.invoiceNumber, \"paid\", session);\n\n const paymentData: TPayment = {\n invoiceId: invoice.invoiceNumber,\n amount: invoice.amount,\n status: \"completed\",\n paymentMethod: \"PAYPAL\",\n metadata: {\n userId: String(subscription.user || \"\"),\n orgId: String(subscription.org || \"\"),\n currency: subscription.currency,\n payment: invoice.metadata.transactionId,\n subscriptionId: subscription._id?.toString(),\n },\n };\n\n if (!paymentData.metadata.userId) {\n delete paymentData.metadata.userId;\n }\n\n if (!paymentData.metadata.orgId) {\n delete paymentData.metadata.orgId;\n }\n\n await addPayment(paymentData, session);\n\n if (!subscription.paidSeats) {\n throw new Error(\"Subscription paid seats is missing.\");\n }\n\n await updateMaxSeatsById(\n {\n _id: subscription._id.toString(),\n seats: subscription.paidSeats,\n },\n session\n );\n\n await session.commitTransaction();\n\n return \"Payment processed successfully.\";\n } catch (error) {\n session.abortTransaction();\n logger.log({\n level: \"error\",\n message: String(error),\n });\n throw error;\n } finally {\n session.endSession();\n }\n }\n\n return {\n processOverDueInvoices,\n paypalPaidInvoiceWebhookHandler,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError, NotFoundError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { useInvoiceRepo } from \"../repositories/invoice.repository\";\nimport { TInvoice } from \"../models/invoice.model\";\nimport { useInvoiceService } from \"../services/invoice.service\";\n\nexport function useInvoiceController() {\n const {\n getBySubscriptionId: _getBySubscriptionId,\n getByNumber: _getByNumber,\n getByDueDate: _getByDueDate,\n } = useInvoiceRepo();\n\n async function getBySubscriptionId(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const id = req.params.id as string;\n const page = req.query.page ? Number(req.query.page) : 1;\n const limit = req.query.limit ? Number(req.query.limit) : 10;\n const search = (req.query.search as string) ?? \"\";\n\n const validation = Joi.object({\n id: Joi.string().required(),\n page: Joi.number().integer().min(1).default(1),\n limit: Joi.number().integer().min(1).default(10),\n search: Joi.string().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({\n id,\n page,\n limit,\n search,\n });\n\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const data = await _getBySubscriptionId({\n id,\n page,\n limit,\n search,\n });\n\n res.json(data);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByNumber(req: Request, res: Response, next: NextFunction) {\n const number = req.params.number as string;\n\n const validation = Joi.string().required();\n const { error } = validation.validate(number);\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const invoice = await _getByNumber(number);\n if (!invoice) {\n throw new NotFoundError(\"Invoice not found.\");\n }\n res.json(invoice);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n async function getByDueDateStatus(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const date = req.params.date as string;\n const status = req.params.status as TInvoice[\"status\"];\n const id = req.params.id as string;\n\n const validation = Joi.object({\n id: Joi.string().required(),\n date: Joi.string().required(),\n status: Joi.string().required(),\n });\n\n const { error } = validation.validate({ id, date, status });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const invoice = await _getByDueDate(id, new Date(date), status);\n if (!invoice) {\n throw new NotFoundError(\"Invoice not found.\");\n }\n res.json(invoice);\n return;\n } catch (error) {\n next(error);\n }\n }\n\n const { paypalPaidInvoiceWebhookHandler } = useInvoiceService();\n\n async function paidInvoiceWebhookHandler(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const invoiceId = (req.body.resource.id as string) ?? \"\";\n const status = (req.body.resource.status as string) ?? \"\";\n\n const validation = Joi.object({\n invoiceId: Joi.string().required(),\n });\n\n const { error } = validation.validate({ invoiceId, status });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n await paypalPaidInvoiceWebhookHandler(invoiceId);\n res.status(200).json({ message: \"Webhook processed successfully.\" });\n return;\n } catch (error) {\n next(error);\n return;\n }\n }\n\n return {\n getBySubscriptionId,\n getByNumber,\n getByDueDateStatus,\n paidInvoiceWebhookHandler,\n };\n}\n","import { Request, Response, NextFunction } from \"express\";\nimport { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport Joi from \"joi\";\nimport { usePaymentRepo } from \"../repositories/payment.repository\";\n\nexport function usePaymentController() {\n const { getPayments: _getPayments } = usePaymentRepo();\n\n async function getPayments(req: Request, res: Response, next: NextFunction) {\n const page = (req.query.page as string) ?? 1;\n const limit = (req.query.limit as string) ?? 10;\n const search = (req.query.search as string) ?? \"\";\n const status = (req.query.status as string) ?? \"succeeded\";\n const id = (req.query.id as string) ?? \"\";\n\n const validation = Joi.object({\n page: Joi.number().required(),\n limit: Joi.number().required().min(10),\n search: Joi.string().optional().allow(\"\", null),\n status: Joi.string().optional().allow(\"\", null),\n id: Joi.string().hex().optional().allow(\"\", null),\n });\n\n const { error } = validation.validate({ page, limit, search, status, id });\n if (error) {\n next(new BadRequestError(error.message));\n return;\n }\n\n try {\n const orders = await _getPayments({\n page: parseInt(page),\n limit: parseInt(limit),\n search,\n status,\n id,\n });\n res.json(orders);\n return;\n } catch (error: any) {\n next(error);\n }\n }\n\n return {\n getPayments,\n };\n}\n","import { BadRequestError } from \"@eeplatform/nodejs-utils\";\nimport { TPriceType } from \"../models/price.model\";\nimport { usePriceRepo } from \"../repositories/price.repository\";\nimport { Request, Response, NextFunction } from \"express\";\n\nexport function usePriceController() {\n const { getByNameType: _getByNameType } = usePriceRepo();\n\n async function getByNameType(\n req: Request,\n res: Response,\n next: NextFunction\n ) {\n const name = req.query.name as string;\n const type = req.query.type as string;\n\n if (!name || !type) {\n res.status(400).json({ message: \"Name and type are required\" });\n return;\n }\n\n try {\n const price = await _getByNameType(name, type as TPriceType);\n if (!price) {\n throw new BadRequestError(\"Price not found\");\n }\n\n res.json(price);\n } catch (error) {\n next(error);\n }\n }\n\n return {\n getByNameType,\n };\n}\n"],"mappings":"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","names":["util","util","stream","self","charset","extension","iterator","iterator","iterator","iterator","isNaN","concatty","slicy","bind","Empty","bind","bind","bind","undefined","doEval","bind","stringToPath","getBaseIntrinsic","require_shams","toStringTag","util","http","https","crypto","FormData","append","defaults","url","self","useColors","util","stream","useColors","fd","require_debug","url","URL","http","https","isFunction","noop","self","isString","isBuffer","exports","spread","BadRequestError","ObjectId","BadRequestError","logger","BadRequestError","InternalServerError","useAtlas","ObjectId","ObjectId","useAtlas","InternalServerError","logger","BadRequestError","paginate","useCache","makeCacheKey","ObjectId","BadRequestError","InternalServerError","logger","makeCacheKey","paginate","useAtlas","useCache","BadRequestError","ObjectId","schema","error","ObjectId","useAtlas","useCache","logger","InternalServerError","BadRequestError","makeCacheKey","paginate","BadRequestError","res","filePath","emailContent","logger","InternalServerError","useAtlas","AppError","BadRequestError","InternalServerError","Joi","Joi","BadRequestError","error","AppError","InternalServerError","ObjectId","InternalServerError","logger","makeCacheKey","useAtlas","useCache","ObjectId","BadRequestError","InternalServerError","NotFoundError","logger","makeCacheKey","useAtlas","useCache","BadRequestError","InternalServerError","logger","makeCacheKey","useAtlas","useCache","ObjectId","useAtlas","InternalServerError","useCache","logger","BadRequestError","makeCacheKey","prototype","descriptors","filter","hasOwnProperty","config","filter","FormData","prototype","toString","encode","url","isFormData","isFileList","transitional","filter","self","prototype","config","config","validateStatus","url","util","url","stream","stream","followRedirects","stream","proxyFromEnv","config","util","transitional","origin","url","config","merge","config","config","transitional","signal","stream","iterator","done","res","config","url","config","schema","validators","config","transitional","url","config","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","mergeConfig","AppError","BadRequestError","logger","ObjectId","Joi","z","ObjectId","z","axios","z","BadRequestError","logger","ObjectId","schema","Joi","AppError","ObjectId","BadRequestError","InternalServerError","useAtlas","paginate","logger","makeCacheKey","useCache","ObjectId","ObjectId","useAtlas","InternalServerError","useCache","logger","BadRequestError","makeCacheKey","paginate","useAtlas","BadRequestError","ObjectId","InternalServerError","NotFoundError","makeCacheKey","useCache","logger","AppError","BadRequestError","InternalServerError","Joi","Joi","BadRequestError","error","AppError","InternalServerError","AppError","BadRequestError","InternalServerError","NotFoundError","BadRequestError","AppError","InternalServerError","NotFoundError","refreshToken","Joi","AppError","BadRequestError","InternalServerError","Joi","BadRequestError","error","AppError","InternalServerError","refreshToken","logger","useS3","useAtlas","useS3","useAtlas","logger","AppError","BadRequestError","InternalServerError","Joi","error","Joi","BadRequestError","Joi","BadRequestError","error","ObjectId","ObjectId","BadRequestError","InternalServerError","logger","makeCacheKey","paginate","useAtlas","useCache","ObjectId","Joi","BadRequestError","Joi","BadRequestError","error","BadRequestError","Joi","ObjectId","schema","value","BadRequestError","logger","makeCacheKey","paginate","useAtlas","useCache","ObjectId","Joi","useAtlas","BadRequestError","useCache","logger","makeCacheKey","paginate","schema","error","AppError","BadRequestError","logger","useAtlas","AppError","BadRequestError","InternalServerError","logger","makeCacheKey","paginate","useAtlas","useCache","BadRequestError","Joi","ObjectId","schema","error","ObjectId","useAtlas","useCache","logger","AppError","BadRequestError","makeCacheKey","paginate","InternalServerError","BadRequestError","useAtlas","useCache","makeCacheKey","logger","BadRequestError","Joi","ObjectId","ObjectId","useAtlas","BadRequestError","useCache","logger","makeCacheKey","BadRequestError","InternalServerError","logger","makeCacheKey","paginate","useAtlas","useCache","Joi","BadRequestError","Joi","ObjectId","useAtlas","InternalServerError","useCache","logger","BadRequestError","schema","makeCacheKey","error","paginate","Joi","BadRequestError","InternalServerError","logger","paginate","useAtlas","z","ObjectId","BadRequestError","ObjectId","useAtlas","logger","BadRequestError","InternalServerError","paginate","useAtlas","useCache","makeCacheKey","logger","BadRequestError","ObjectId","z","useAtlas","useCache","logger","makeCacheKey","BadRequestError","InternalServerError","logger","paginate","useAtlas","ObjectId","useAtlas","logger","BadRequestError","InternalServerError","paginate","useAtlas","useCache","makeCacheKey","logger","BadRequestError","ObjectId","z","useAtlas","useCache","logger","makeCacheKey","BadRequestError","useAtlas","BadRequestError","logger","Joi","schema","error","AppError","Joi","BadRequestError","Joi","schema","Joi","BadRequestError","error","value","BadRequestError","ObjectId","BadRequestError","InternalServerError","logger","useAtlas","ObjectId","useAtlas","BadRequestError","logger","InternalServerError","BadRequestError","useAtlas","useAtlas","BadRequestError","Joi","BadRequestError","Joi","BadRequestError","error","BadRequestError","NotFoundError","Joi","Joi","BadRequestError","value","error","NotFoundError","NotFoundError","useAtlas","useAtlas","NotFoundError","BadRequestError","Joi","Joi","BadRequestError","error","Joi","BadRequestError","Joi","error","AppError","BadRequestError","InternalServerError","NotFoundError","Joi","BadRequestError","error","AppError","InternalServerError","Joi","NotFoundError","ObjectId","Joi","schema","BadRequestError","schema","ObjectId","error","AppError","BadRequestError","InternalServerError","logger","makeCacheKey","paginate","useAtlas","useCache","ObjectId","useAtlas","InternalServerError","useCache","logger","AppError","BadRequestError","makeCacheKey","paginate","BadRequestError","Joi","Joi","BadRequestError","error","BadRequestError","logger","NotFoundError","useAtlas","logger","useAtlas","BadRequestError","NotFoundError","BadRequestError","NotFoundError","Joi","Joi","BadRequestError","error","NotFoundError","BadRequestError","Joi","Joi","BadRequestError","error","BadRequestError","BadRequestError"]}