15456 lines
443 KiB
JavaScript
15456 lines
443 KiB
JavaScript
"use strict";
|
|
var __create = Object.create;
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getProtoOf = Object.getPrototypeOf;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __commonJS = (cb, mod) => function __require() {
|
|
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
};
|
|
var __export = (target, all3) => {
|
|
for (var name in all3)
|
|
__defProp(target, name, { get: all3[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
// file that has been converted to a CommonJS file using a Babel-
|
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
mod
|
|
));
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// node_modules/delayed-stream/lib/delayed_stream.js
|
|
var require_delayed_stream = __commonJS({
|
|
"node_modules/delayed-stream/lib/delayed_stream.js"(exports2, module2) {
|
|
var Stream = require("stream").Stream;
|
|
var util3 = require("util");
|
|
module2.exports = DelayedStream;
|
|
function DelayedStream() {
|
|
this.source = null;
|
|
this.dataSize = 0;
|
|
this.maxDataSize = 1024 * 1024;
|
|
this.pauseStream = true;
|
|
this._maxDataSizeExceeded = false;
|
|
this._released = false;
|
|
this._bufferedEvents = [];
|
|
}
|
|
util3.inherits(DelayedStream, Stream);
|
|
DelayedStream.create = function(source, options) {
|
|
var delayedStream = new this();
|
|
options = options || {};
|
|
for (var option in options) {
|
|
delayedStream[option] = options[option];
|
|
}
|
|
delayedStream.source = source;
|
|
var realEmit = source.emit;
|
|
source.emit = function() {
|
|
delayedStream._handleEmit(arguments);
|
|
return realEmit.apply(source, arguments);
|
|
};
|
|
source.on("error", function() {
|
|
});
|
|
if (delayedStream.pauseStream) {
|
|
source.pause();
|
|
}
|
|
return delayedStream;
|
|
};
|
|
Object.defineProperty(DelayedStream.prototype, "readable", {
|
|
configurable: true,
|
|
enumerable: true,
|
|
get: function() {
|
|
return this.source.readable;
|
|
}
|
|
});
|
|
DelayedStream.prototype.setEncoding = function() {
|
|
return this.source.setEncoding.apply(this.source, arguments);
|
|
};
|
|
DelayedStream.prototype.resume = function() {
|
|
if (!this._released) {
|
|
this.release();
|
|
}
|
|
this.source.resume();
|
|
};
|
|
DelayedStream.prototype.pause = function() {
|
|
this.source.pause();
|
|
};
|
|
DelayedStream.prototype.release = function() {
|
|
this._released = true;
|
|
this._bufferedEvents.forEach(function(args) {
|
|
this.emit.apply(this, args);
|
|
}.bind(this));
|
|
this._bufferedEvents = [];
|
|
};
|
|
DelayedStream.prototype.pipe = function() {
|
|
var r = Stream.prototype.pipe.apply(this, arguments);
|
|
this.resume();
|
|
return r;
|
|
};
|
|
DelayedStream.prototype._handleEmit = function(args) {
|
|
if (this._released) {
|
|
this.emit.apply(this, args);
|
|
return;
|
|
}
|
|
if (args[0] === "data") {
|
|
this.dataSize += args[1].length;
|
|
this._checkIfMaxDataSizeExceeded();
|
|
}
|
|
this._bufferedEvents.push(args);
|
|
};
|
|
DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {
|
|
if (this._maxDataSizeExceeded) {
|
|
return;
|
|
}
|
|
if (this.dataSize <= this.maxDataSize) {
|
|
return;
|
|
}
|
|
this._maxDataSizeExceeded = true;
|
|
var message = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded.";
|
|
this.emit("error", new Error(message));
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/combined-stream/lib/combined_stream.js
|
|
var require_combined_stream = __commonJS({
|
|
"node_modules/combined-stream/lib/combined_stream.js"(exports2, module2) {
|
|
var util3 = require("util");
|
|
var Stream = require("stream").Stream;
|
|
var DelayedStream = require_delayed_stream();
|
|
module2.exports = CombinedStream;
|
|
function CombinedStream() {
|
|
this.writable = false;
|
|
this.readable = true;
|
|
this.dataSize = 0;
|
|
this.maxDataSize = 2 * 1024 * 1024;
|
|
this.pauseStreams = true;
|
|
this._released = false;
|
|
this._streams = [];
|
|
this._currentStream = null;
|
|
this._insideLoop = false;
|
|
this._pendingNext = false;
|
|
}
|
|
util3.inherits(CombinedStream, Stream);
|
|
CombinedStream.create = function(options) {
|
|
var combinedStream = new this();
|
|
options = options || {};
|
|
for (var option in options) {
|
|
combinedStream[option] = options[option];
|
|
}
|
|
return combinedStream;
|
|
};
|
|
CombinedStream.isStreamLike = function(stream4) {
|
|
return typeof stream4 !== "function" && typeof stream4 !== "string" && typeof stream4 !== "boolean" && typeof stream4 !== "number" && !Buffer.isBuffer(stream4);
|
|
};
|
|
CombinedStream.prototype.append = function(stream4) {
|
|
var isStreamLike = CombinedStream.isStreamLike(stream4);
|
|
if (isStreamLike) {
|
|
if (!(stream4 instanceof DelayedStream)) {
|
|
var newStream = DelayedStream.create(stream4, {
|
|
maxDataSize: Infinity,
|
|
pauseStream: this.pauseStreams
|
|
});
|
|
stream4.on("data", this._checkDataSize.bind(this));
|
|
stream4 = newStream;
|
|
}
|
|
this._handleErrors(stream4);
|
|
if (this.pauseStreams) {
|
|
stream4.pause();
|
|
}
|
|
}
|
|
this._streams.push(stream4);
|
|
return this;
|
|
};
|
|
CombinedStream.prototype.pipe = function(dest, options) {
|
|
Stream.prototype.pipe.call(this, dest, options);
|
|
this.resume();
|
|
return dest;
|
|
};
|
|
CombinedStream.prototype._getNext = function() {
|
|
this._currentStream = null;
|
|
if (this._insideLoop) {
|
|
this._pendingNext = true;
|
|
return;
|
|
}
|
|
this._insideLoop = true;
|
|
try {
|
|
do {
|
|
this._pendingNext = false;
|
|
this._realGetNext();
|
|
} while (this._pendingNext);
|
|
} finally {
|
|
this._insideLoop = false;
|
|
}
|
|
};
|
|
CombinedStream.prototype._realGetNext = function() {
|
|
var stream4 = this._streams.shift();
|
|
if (typeof stream4 == "undefined") {
|
|
this.end();
|
|
return;
|
|
}
|
|
if (typeof stream4 !== "function") {
|
|
this._pipeNext(stream4);
|
|
return;
|
|
}
|
|
var getStream = stream4;
|
|
getStream(function(stream5) {
|
|
var isStreamLike = CombinedStream.isStreamLike(stream5);
|
|
if (isStreamLike) {
|
|
stream5.on("data", this._checkDataSize.bind(this));
|
|
this._handleErrors(stream5);
|
|
}
|
|
this._pipeNext(stream5);
|
|
}.bind(this));
|
|
};
|
|
CombinedStream.prototype._pipeNext = function(stream4) {
|
|
this._currentStream = stream4;
|
|
var isStreamLike = CombinedStream.isStreamLike(stream4);
|
|
if (isStreamLike) {
|
|
stream4.on("end", this._getNext.bind(this));
|
|
stream4.pipe(this, { end: false });
|
|
return;
|
|
}
|
|
var value = stream4;
|
|
this.write(value);
|
|
this._getNext();
|
|
};
|
|
CombinedStream.prototype._handleErrors = function(stream4) {
|
|
var self2 = this;
|
|
stream4.on("error", function(err) {
|
|
self2._emitError(err);
|
|
});
|
|
};
|
|
CombinedStream.prototype.write = function(data) {
|
|
this.emit("data", data);
|
|
};
|
|
CombinedStream.prototype.pause = function() {
|
|
if (!this.pauseStreams) {
|
|
return;
|
|
}
|
|
if (this.pauseStreams && this._currentStream && typeof this._currentStream.pause == "function") this._currentStream.pause();
|
|
this.emit("pause");
|
|
};
|
|
CombinedStream.prototype.resume = function() {
|
|
if (!this._released) {
|
|
this._released = true;
|
|
this.writable = true;
|
|
this._getNext();
|
|
}
|
|
if (this.pauseStreams && this._currentStream && typeof this._currentStream.resume == "function") this._currentStream.resume();
|
|
this.emit("resume");
|
|
};
|
|
CombinedStream.prototype.end = function() {
|
|
this._reset();
|
|
this.emit("end");
|
|
};
|
|
CombinedStream.prototype.destroy = function() {
|
|
this._reset();
|
|
this.emit("close");
|
|
};
|
|
CombinedStream.prototype._reset = function() {
|
|
this.writable = false;
|
|
this._streams = [];
|
|
this._currentStream = null;
|
|
};
|
|
CombinedStream.prototype._checkDataSize = function() {
|
|
this._updateDataSize();
|
|
if (this.dataSize <= this.maxDataSize) {
|
|
return;
|
|
}
|
|
var message = "DelayedStream#maxDataSize of " + this.maxDataSize + " bytes exceeded.";
|
|
this._emitError(new Error(message));
|
|
};
|
|
CombinedStream.prototype._updateDataSize = function() {
|
|
this.dataSize = 0;
|
|
var self2 = this;
|
|
this._streams.forEach(function(stream4) {
|
|
if (!stream4.dataSize) {
|
|
return;
|
|
}
|
|
self2.dataSize += stream4.dataSize;
|
|
});
|
|
if (this._currentStream && this._currentStream.dataSize) {
|
|
this.dataSize += this._currentStream.dataSize;
|
|
}
|
|
};
|
|
CombinedStream.prototype._emitError = function(err) {
|
|
this._reset();
|
|
this.emit("error", err);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/mime-db/db.json
|
|
var require_db = __commonJS({
|
|
"node_modules/mime-db/db.json"(exports2, module2) {
|
|
module2.exports = {
|
|
"application/1d-interleaved-parityfec": {
|
|
source: "iana"
|
|
},
|
|
"application/3gpdash-qoe-report+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/3gpp-ims+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/3gpphal+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/3gpphalforms+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/a2l": {
|
|
source: "iana"
|
|
},
|
|
"application/ace+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/activemessage": {
|
|
source: "iana"
|
|
},
|
|
"application/activity+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-costmap+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-costmapfilter+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-directory+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-endpointcost+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-endpointcostparams+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-endpointprop+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-endpointpropparams+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-error+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-networkmap+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-networkmapfilter+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-updatestreamcontrol+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/alto-updatestreamparams+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/aml": {
|
|
source: "iana"
|
|
},
|
|
"application/andrew-inset": {
|
|
source: "iana",
|
|
extensions: ["ez"]
|
|
},
|
|
"application/applefile": {
|
|
source: "iana"
|
|
},
|
|
"application/applixware": {
|
|
source: "apache",
|
|
extensions: ["aw"]
|
|
},
|
|
"application/at+jwt": {
|
|
source: "iana"
|
|
},
|
|
"application/atf": {
|
|
source: "iana"
|
|
},
|
|
"application/atfx": {
|
|
source: "iana"
|
|
},
|
|
"application/atom+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["atom"]
|
|
},
|
|
"application/atomcat+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["atomcat"]
|
|
},
|
|
"application/atomdeleted+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["atomdeleted"]
|
|
},
|
|
"application/atomicmail": {
|
|
source: "iana"
|
|
},
|
|
"application/atomsvc+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["atomsvc"]
|
|
},
|
|
"application/atsc-dwd+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["dwd"]
|
|
},
|
|
"application/atsc-dynamic-event-message": {
|
|
source: "iana"
|
|
},
|
|
"application/atsc-held+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["held"]
|
|
},
|
|
"application/atsc-rdt+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/atsc-rsat+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rsat"]
|
|
},
|
|
"application/atxml": {
|
|
source: "iana"
|
|
},
|
|
"application/auth-policy+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/bacnet-xdd+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/batch-smtp": {
|
|
source: "iana"
|
|
},
|
|
"application/bdoc": {
|
|
compressible: false,
|
|
extensions: ["bdoc"]
|
|
},
|
|
"application/beep+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/calendar+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/calendar+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xcs"]
|
|
},
|
|
"application/call-completion": {
|
|
source: "iana"
|
|
},
|
|
"application/cals-1840": {
|
|
source: "iana"
|
|
},
|
|
"application/captive+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/cbor-seq": {
|
|
source: "iana"
|
|
},
|
|
"application/cccex": {
|
|
source: "iana"
|
|
},
|
|
"application/ccmp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/ccxml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ccxml"]
|
|
},
|
|
"application/cdfx+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["cdfx"]
|
|
},
|
|
"application/cdmi-capability": {
|
|
source: "iana",
|
|
extensions: ["cdmia"]
|
|
},
|
|
"application/cdmi-container": {
|
|
source: "iana",
|
|
extensions: ["cdmic"]
|
|
},
|
|
"application/cdmi-domain": {
|
|
source: "iana",
|
|
extensions: ["cdmid"]
|
|
},
|
|
"application/cdmi-object": {
|
|
source: "iana",
|
|
extensions: ["cdmio"]
|
|
},
|
|
"application/cdmi-queue": {
|
|
source: "iana",
|
|
extensions: ["cdmiq"]
|
|
},
|
|
"application/cdni": {
|
|
source: "iana"
|
|
},
|
|
"application/cea": {
|
|
source: "iana"
|
|
},
|
|
"application/cea-2018+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cellml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cfw": {
|
|
source: "iana"
|
|
},
|
|
"application/city+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/clr": {
|
|
source: "iana"
|
|
},
|
|
"application/clue+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/clue_info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cms": {
|
|
source: "iana"
|
|
},
|
|
"application/cnrp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/coap-group+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/coap-payload": {
|
|
source: "iana"
|
|
},
|
|
"application/commonground": {
|
|
source: "iana"
|
|
},
|
|
"application/conference-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cose": {
|
|
source: "iana"
|
|
},
|
|
"application/cose-key": {
|
|
source: "iana"
|
|
},
|
|
"application/cose-key-set": {
|
|
source: "iana"
|
|
},
|
|
"application/cpl+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["cpl"]
|
|
},
|
|
"application/csrattrs": {
|
|
source: "iana"
|
|
},
|
|
"application/csta+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cstadata+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/csvm+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/cu-seeme": {
|
|
source: "apache",
|
|
extensions: ["cu"]
|
|
},
|
|
"application/cwt": {
|
|
source: "iana"
|
|
},
|
|
"application/cybercash": {
|
|
source: "iana"
|
|
},
|
|
"application/dart": {
|
|
compressible: true
|
|
},
|
|
"application/dash+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mpd"]
|
|
},
|
|
"application/dash-patch+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mpp"]
|
|
},
|
|
"application/dashdelta": {
|
|
source: "iana"
|
|
},
|
|
"application/davmount+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["davmount"]
|
|
},
|
|
"application/dca-rft": {
|
|
source: "iana"
|
|
},
|
|
"application/dcd": {
|
|
source: "iana"
|
|
},
|
|
"application/dec-dx": {
|
|
source: "iana"
|
|
},
|
|
"application/dialog-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/dicom": {
|
|
source: "iana"
|
|
},
|
|
"application/dicom+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/dicom+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/dii": {
|
|
source: "iana"
|
|
},
|
|
"application/dit": {
|
|
source: "iana"
|
|
},
|
|
"application/dns": {
|
|
source: "iana"
|
|
},
|
|
"application/dns+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/dns-message": {
|
|
source: "iana"
|
|
},
|
|
"application/docbook+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["dbk"]
|
|
},
|
|
"application/dots+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/dskpp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/dssc+der": {
|
|
source: "iana",
|
|
extensions: ["dssc"]
|
|
},
|
|
"application/dssc+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xdssc"]
|
|
},
|
|
"application/dvcs": {
|
|
source: "iana"
|
|
},
|
|
"application/ecmascript": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["es", "ecma"]
|
|
},
|
|
"application/edi-consent": {
|
|
source: "iana"
|
|
},
|
|
"application/edi-x12": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/edifact": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/efi": {
|
|
source: "iana"
|
|
},
|
|
"application/elm+json": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/elm+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.cap+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.comment+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.control+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.deviceinfo+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.ecall.msd": {
|
|
source: "iana"
|
|
},
|
|
"application/emergencycalldata.providerinfo+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.serviceinfo+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.subscriberinfo+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emergencycalldata.veds+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/emma+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["emma"]
|
|
},
|
|
"application/emotionml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["emotionml"]
|
|
},
|
|
"application/encaprtp": {
|
|
source: "iana"
|
|
},
|
|
"application/epp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/epub+zip": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["epub"]
|
|
},
|
|
"application/eshop": {
|
|
source: "iana"
|
|
},
|
|
"application/exi": {
|
|
source: "iana",
|
|
extensions: ["exi"]
|
|
},
|
|
"application/expect-ct-report+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/express": {
|
|
source: "iana",
|
|
extensions: ["exp"]
|
|
},
|
|
"application/fastinfoset": {
|
|
source: "iana"
|
|
},
|
|
"application/fastsoap": {
|
|
source: "iana"
|
|
},
|
|
"application/fdt+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["fdt"]
|
|
},
|
|
"application/fhir+json": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/fhir+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/fido.trusted-apps+json": {
|
|
compressible: true
|
|
},
|
|
"application/fits": {
|
|
source: "iana"
|
|
},
|
|
"application/flexfec": {
|
|
source: "iana"
|
|
},
|
|
"application/font-sfnt": {
|
|
source: "iana"
|
|
},
|
|
"application/font-tdpfr": {
|
|
source: "iana",
|
|
extensions: ["pfr"]
|
|
},
|
|
"application/font-woff": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/framework-attributes+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/geo+json": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["geojson"]
|
|
},
|
|
"application/geo+json-seq": {
|
|
source: "iana"
|
|
},
|
|
"application/geopackage+sqlite3": {
|
|
source: "iana"
|
|
},
|
|
"application/geoxacml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/gltf-buffer": {
|
|
source: "iana"
|
|
},
|
|
"application/gml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["gml"]
|
|
},
|
|
"application/gpx+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["gpx"]
|
|
},
|
|
"application/gxf": {
|
|
source: "apache",
|
|
extensions: ["gxf"]
|
|
},
|
|
"application/gzip": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["gz"]
|
|
},
|
|
"application/h224": {
|
|
source: "iana"
|
|
},
|
|
"application/held+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/hjson": {
|
|
extensions: ["hjson"]
|
|
},
|
|
"application/http": {
|
|
source: "iana"
|
|
},
|
|
"application/hyperstudio": {
|
|
source: "iana",
|
|
extensions: ["stk"]
|
|
},
|
|
"application/ibe-key-request+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/ibe-pkg-reply+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/ibe-pp-data": {
|
|
source: "iana"
|
|
},
|
|
"application/iges": {
|
|
source: "iana"
|
|
},
|
|
"application/im-iscomposing+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/index": {
|
|
source: "iana"
|
|
},
|
|
"application/index.cmd": {
|
|
source: "iana"
|
|
},
|
|
"application/index.obj": {
|
|
source: "iana"
|
|
},
|
|
"application/index.response": {
|
|
source: "iana"
|
|
},
|
|
"application/index.vnd": {
|
|
source: "iana"
|
|
},
|
|
"application/inkml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ink", "inkml"]
|
|
},
|
|
"application/iotp": {
|
|
source: "iana"
|
|
},
|
|
"application/ipfix": {
|
|
source: "iana",
|
|
extensions: ["ipfix"]
|
|
},
|
|
"application/ipp": {
|
|
source: "iana"
|
|
},
|
|
"application/isup": {
|
|
source: "iana"
|
|
},
|
|
"application/its+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["its"]
|
|
},
|
|
"application/java-archive": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["jar", "war", "ear"]
|
|
},
|
|
"application/java-serialized-object": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["ser"]
|
|
},
|
|
"application/java-vm": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["class"]
|
|
},
|
|
"application/javascript": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["js", "mjs"]
|
|
},
|
|
"application/jf2feed+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/jose": {
|
|
source: "iana"
|
|
},
|
|
"application/jose+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/jrd+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/jscalendar+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/json": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["json", "map"]
|
|
},
|
|
"application/json-patch+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/json-seq": {
|
|
source: "iana"
|
|
},
|
|
"application/json5": {
|
|
extensions: ["json5"]
|
|
},
|
|
"application/jsonml+json": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["jsonml"]
|
|
},
|
|
"application/jwk+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/jwk-set+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/jwt": {
|
|
source: "iana"
|
|
},
|
|
"application/kpml-request+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/kpml-response+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/ld+json": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["jsonld"]
|
|
},
|
|
"application/lgr+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["lgr"]
|
|
},
|
|
"application/link-format": {
|
|
source: "iana"
|
|
},
|
|
"application/load-control+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/lost+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["lostxml"]
|
|
},
|
|
"application/lostsync+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/lpf+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/lxf": {
|
|
source: "iana"
|
|
},
|
|
"application/mac-binhex40": {
|
|
source: "iana",
|
|
extensions: ["hqx"]
|
|
},
|
|
"application/mac-compactpro": {
|
|
source: "apache",
|
|
extensions: ["cpt"]
|
|
},
|
|
"application/macwriteii": {
|
|
source: "iana"
|
|
},
|
|
"application/mads+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mads"]
|
|
},
|
|
"application/manifest+json": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["webmanifest"]
|
|
},
|
|
"application/marc": {
|
|
source: "iana",
|
|
extensions: ["mrc"]
|
|
},
|
|
"application/marcxml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mrcx"]
|
|
},
|
|
"application/mathematica": {
|
|
source: "iana",
|
|
extensions: ["ma", "nb", "mb"]
|
|
},
|
|
"application/mathml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mathml"]
|
|
},
|
|
"application/mathml-content+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mathml-presentation+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-associated-procedure-description+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-deregister+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-envelope+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-msk+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-msk-response+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-protection-description+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-reception-report+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-register+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-register-response+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-schedule+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbms-user-service-description+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mbox": {
|
|
source: "iana",
|
|
extensions: ["mbox"]
|
|
},
|
|
"application/media-policy-dataset+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mpf"]
|
|
},
|
|
"application/media_control+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mediaservercontrol+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mscml"]
|
|
},
|
|
"application/merge-patch+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/metalink+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["metalink"]
|
|
},
|
|
"application/metalink4+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["meta4"]
|
|
},
|
|
"application/mets+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mets"]
|
|
},
|
|
"application/mf4": {
|
|
source: "iana"
|
|
},
|
|
"application/mikey": {
|
|
source: "iana"
|
|
},
|
|
"application/mipc": {
|
|
source: "iana"
|
|
},
|
|
"application/missing-blocks+cbor-seq": {
|
|
source: "iana"
|
|
},
|
|
"application/mmt-aei+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["maei"]
|
|
},
|
|
"application/mmt-usd+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["musd"]
|
|
},
|
|
"application/mods+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mods"]
|
|
},
|
|
"application/moss-keys": {
|
|
source: "iana"
|
|
},
|
|
"application/moss-signature": {
|
|
source: "iana"
|
|
},
|
|
"application/mosskey-data": {
|
|
source: "iana"
|
|
},
|
|
"application/mosskey-request": {
|
|
source: "iana"
|
|
},
|
|
"application/mp21": {
|
|
source: "iana",
|
|
extensions: ["m21", "mp21"]
|
|
},
|
|
"application/mp4": {
|
|
source: "iana",
|
|
extensions: ["mp4s", "m4p"]
|
|
},
|
|
"application/mpeg4-generic": {
|
|
source: "iana"
|
|
},
|
|
"application/mpeg4-iod": {
|
|
source: "iana"
|
|
},
|
|
"application/mpeg4-iod-xmt": {
|
|
source: "iana"
|
|
},
|
|
"application/mrb-consumer+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/mrb-publish+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/msc-ivr+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/msc-mixer+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/msword": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["doc", "dot"]
|
|
},
|
|
"application/mud+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/multipart-core": {
|
|
source: "iana"
|
|
},
|
|
"application/mxf": {
|
|
source: "iana",
|
|
extensions: ["mxf"]
|
|
},
|
|
"application/n-quads": {
|
|
source: "iana",
|
|
extensions: ["nq"]
|
|
},
|
|
"application/n-triples": {
|
|
source: "iana",
|
|
extensions: ["nt"]
|
|
},
|
|
"application/nasdata": {
|
|
source: "iana"
|
|
},
|
|
"application/news-checkgroups": {
|
|
source: "iana",
|
|
charset: "US-ASCII"
|
|
},
|
|
"application/news-groupinfo": {
|
|
source: "iana",
|
|
charset: "US-ASCII"
|
|
},
|
|
"application/news-transmission": {
|
|
source: "iana"
|
|
},
|
|
"application/nlsml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/node": {
|
|
source: "iana",
|
|
extensions: ["cjs"]
|
|
},
|
|
"application/nss": {
|
|
source: "iana"
|
|
},
|
|
"application/oauth-authz-req+jwt": {
|
|
source: "iana"
|
|
},
|
|
"application/oblivious-dns-message": {
|
|
source: "iana"
|
|
},
|
|
"application/ocsp-request": {
|
|
source: "iana"
|
|
},
|
|
"application/ocsp-response": {
|
|
source: "iana"
|
|
},
|
|
"application/octet-stream": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"]
|
|
},
|
|
"application/oda": {
|
|
source: "iana",
|
|
extensions: ["oda"]
|
|
},
|
|
"application/odm+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/odx": {
|
|
source: "iana"
|
|
},
|
|
"application/oebps-package+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["opf"]
|
|
},
|
|
"application/ogg": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["ogx"]
|
|
},
|
|
"application/omdoc+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["omdoc"]
|
|
},
|
|
"application/onenote": {
|
|
source: "apache",
|
|
extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"]
|
|
},
|
|
"application/opc-nodeset+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/oscore": {
|
|
source: "iana"
|
|
},
|
|
"application/oxps": {
|
|
source: "iana",
|
|
extensions: ["oxps"]
|
|
},
|
|
"application/p21": {
|
|
source: "iana"
|
|
},
|
|
"application/p21+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/p2p-overlay+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["relo"]
|
|
},
|
|
"application/parityfec": {
|
|
source: "iana"
|
|
},
|
|
"application/passport": {
|
|
source: "iana"
|
|
},
|
|
"application/patch-ops-error+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xer"]
|
|
},
|
|
"application/pdf": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["pdf"]
|
|
},
|
|
"application/pdx": {
|
|
source: "iana"
|
|
},
|
|
"application/pem-certificate-chain": {
|
|
source: "iana"
|
|
},
|
|
"application/pgp-encrypted": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["pgp"]
|
|
},
|
|
"application/pgp-keys": {
|
|
source: "iana",
|
|
extensions: ["asc"]
|
|
},
|
|
"application/pgp-signature": {
|
|
source: "iana",
|
|
extensions: ["asc", "sig"]
|
|
},
|
|
"application/pics-rules": {
|
|
source: "apache",
|
|
extensions: ["prf"]
|
|
},
|
|
"application/pidf+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/pidf-diff+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/pkcs10": {
|
|
source: "iana",
|
|
extensions: ["p10"]
|
|
},
|
|
"application/pkcs12": {
|
|
source: "iana"
|
|
},
|
|
"application/pkcs7-mime": {
|
|
source: "iana",
|
|
extensions: ["p7m", "p7c"]
|
|
},
|
|
"application/pkcs7-signature": {
|
|
source: "iana",
|
|
extensions: ["p7s"]
|
|
},
|
|
"application/pkcs8": {
|
|
source: "iana",
|
|
extensions: ["p8"]
|
|
},
|
|
"application/pkcs8-encrypted": {
|
|
source: "iana"
|
|
},
|
|
"application/pkix-attr-cert": {
|
|
source: "iana",
|
|
extensions: ["ac"]
|
|
},
|
|
"application/pkix-cert": {
|
|
source: "iana",
|
|
extensions: ["cer"]
|
|
},
|
|
"application/pkix-crl": {
|
|
source: "iana",
|
|
extensions: ["crl"]
|
|
},
|
|
"application/pkix-pkipath": {
|
|
source: "iana",
|
|
extensions: ["pkipath"]
|
|
},
|
|
"application/pkixcmp": {
|
|
source: "iana",
|
|
extensions: ["pki"]
|
|
},
|
|
"application/pls+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["pls"]
|
|
},
|
|
"application/poc-settings+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/postscript": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ai", "eps", "ps"]
|
|
},
|
|
"application/ppsp-tracker+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/problem+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/problem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/provenance+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["provx"]
|
|
},
|
|
"application/prs.alvestrand.titrax-sheet": {
|
|
source: "iana"
|
|
},
|
|
"application/prs.cww": {
|
|
source: "iana",
|
|
extensions: ["cww"]
|
|
},
|
|
"application/prs.cyn": {
|
|
source: "iana",
|
|
charset: "7-BIT"
|
|
},
|
|
"application/prs.hpub+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/prs.nprend": {
|
|
source: "iana"
|
|
},
|
|
"application/prs.plucker": {
|
|
source: "iana"
|
|
},
|
|
"application/prs.rdf-xml-crypt": {
|
|
source: "iana"
|
|
},
|
|
"application/prs.xsf+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/pskc+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["pskcxml"]
|
|
},
|
|
"application/pvd+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/qsig": {
|
|
source: "iana"
|
|
},
|
|
"application/raml+yaml": {
|
|
compressible: true,
|
|
extensions: ["raml"]
|
|
},
|
|
"application/raptorfec": {
|
|
source: "iana"
|
|
},
|
|
"application/rdap+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/rdf+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rdf", "owl"]
|
|
},
|
|
"application/reginfo+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rif"]
|
|
},
|
|
"application/relax-ng-compact-syntax": {
|
|
source: "iana",
|
|
extensions: ["rnc"]
|
|
},
|
|
"application/remote-printing": {
|
|
source: "iana"
|
|
},
|
|
"application/reputon+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/resource-lists+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rl"]
|
|
},
|
|
"application/resource-lists-diff+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rld"]
|
|
},
|
|
"application/rfc+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/riscos": {
|
|
source: "iana"
|
|
},
|
|
"application/rlmi+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/rls-services+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rs"]
|
|
},
|
|
"application/route-apd+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rapd"]
|
|
},
|
|
"application/route-s-tsid+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["sls"]
|
|
},
|
|
"application/route-usd+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rusd"]
|
|
},
|
|
"application/rpki-ghostbusters": {
|
|
source: "iana",
|
|
extensions: ["gbr"]
|
|
},
|
|
"application/rpki-manifest": {
|
|
source: "iana",
|
|
extensions: ["mft"]
|
|
},
|
|
"application/rpki-publication": {
|
|
source: "iana"
|
|
},
|
|
"application/rpki-roa": {
|
|
source: "iana",
|
|
extensions: ["roa"]
|
|
},
|
|
"application/rpki-updown": {
|
|
source: "iana"
|
|
},
|
|
"application/rsd+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["rsd"]
|
|
},
|
|
"application/rss+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["rss"]
|
|
},
|
|
"application/rtf": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rtf"]
|
|
},
|
|
"application/rtploopback": {
|
|
source: "iana"
|
|
},
|
|
"application/rtx": {
|
|
source: "iana"
|
|
},
|
|
"application/samlassertion+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/samlmetadata+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sarif+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sarif-external-properties+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sbe": {
|
|
source: "iana"
|
|
},
|
|
"application/sbml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["sbml"]
|
|
},
|
|
"application/scaip+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/scim+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/scvp-cv-request": {
|
|
source: "iana",
|
|
extensions: ["scq"]
|
|
},
|
|
"application/scvp-cv-response": {
|
|
source: "iana",
|
|
extensions: ["scs"]
|
|
},
|
|
"application/scvp-vp-request": {
|
|
source: "iana",
|
|
extensions: ["spq"]
|
|
},
|
|
"application/scvp-vp-response": {
|
|
source: "iana",
|
|
extensions: ["spp"]
|
|
},
|
|
"application/sdp": {
|
|
source: "iana",
|
|
extensions: ["sdp"]
|
|
},
|
|
"application/secevent+jwt": {
|
|
source: "iana"
|
|
},
|
|
"application/senml+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/senml+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/senml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["senmlx"]
|
|
},
|
|
"application/senml-etch+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/senml-etch+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/senml-exi": {
|
|
source: "iana"
|
|
},
|
|
"application/sensml+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/sensml+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sensml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["sensmlx"]
|
|
},
|
|
"application/sensml-exi": {
|
|
source: "iana"
|
|
},
|
|
"application/sep+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sep-exi": {
|
|
source: "iana"
|
|
},
|
|
"application/session-info": {
|
|
source: "iana"
|
|
},
|
|
"application/set-payment": {
|
|
source: "iana"
|
|
},
|
|
"application/set-payment-initiation": {
|
|
source: "iana",
|
|
extensions: ["setpay"]
|
|
},
|
|
"application/set-registration": {
|
|
source: "iana"
|
|
},
|
|
"application/set-registration-initiation": {
|
|
source: "iana",
|
|
extensions: ["setreg"]
|
|
},
|
|
"application/sgml": {
|
|
source: "iana"
|
|
},
|
|
"application/sgml-open-catalog": {
|
|
source: "iana"
|
|
},
|
|
"application/shf+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["shf"]
|
|
},
|
|
"application/sieve": {
|
|
source: "iana",
|
|
extensions: ["siv", "sieve"]
|
|
},
|
|
"application/simple-filter+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/simple-message-summary": {
|
|
source: "iana"
|
|
},
|
|
"application/simplesymbolcontainer": {
|
|
source: "iana"
|
|
},
|
|
"application/sipc": {
|
|
source: "iana"
|
|
},
|
|
"application/slate": {
|
|
source: "iana"
|
|
},
|
|
"application/smil": {
|
|
source: "iana"
|
|
},
|
|
"application/smil+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["smi", "smil"]
|
|
},
|
|
"application/smpte336m": {
|
|
source: "iana"
|
|
},
|
|
"application/soap+fastinfoset": {
|
|
source: "iana"
|
|
},
|
|
"application/soap+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sparql-query": {
|
|
source: "iana",
|
|
extensions: ["rq"]
|
|
},
|
|
"application/sparql-results+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["srx"]
|
|
},
|
|
"application/spdx+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/spirits-event+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/sql": {
|
|
source: "iana"
|
|
},
|
|
"application/srgs": {
|
|
source: "iana",
|
|
extensions: ["gram"]
|
|
},
|
|
"application/srgs+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["grxml"]
|
|
},
|
|
"application/sru+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["sru"]
|
|
},
|
|
"application/ssdl+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["ssdl"]
|
|
},
|
|
"application/ssml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ssml"]
|
|
},
|
|
"application/stix+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/swid+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["swidtag"]
|
|
},
|
|
"application/tamp-apex-update": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-apex-update-confirm": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-community-update": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-community-update-confirm": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-error": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-sequence-adjust": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-sequence-adjust-confirm": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-status-query": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-status-response": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-update": {
|
|
source: "iana"
|
|
},
|
|
"application/tamp-update-confirm": {
|
|
source: "iana"
|
|
},
|
|
"application/tar": {
|
|
compressible: true
|
|
},
|
|
"application/taxii+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/td+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/tei+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["tei", "teicorpus"]
|
|
},
|
|
"application/tetra_isi": {
|
|
source: "iana"
|
|
},
|
|
"application/thraud+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["tfi"]
|
|
},
|
|
"application/timestamp-query": {
|
|
source: "iana"
|
|
},
|
|
"application/timestamp-reply": {
|
|
source: "iana"
|
|
},
|
|
"application/timestamped-data": {
|
|
source: "iana",
|
|
extensions: ["tsd"]
|
|
},
|
|
"application/tlsrpt+gzip": {
|
|
source: "iana"
|
|
},
|
|
"application/tlsrpt+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/tnauthlist": {
|
|
source: "iana"
|
|
},
|
|
"application/token-introspection+jwt": {
|
|
source: "iana"
|
|
},
|
|
"application/toml": {
|
|
compressible: true,
|
|
extensions: ["toml"]
|
|
},
|
|
"application/trickle-ice-sdpfrag": {
|
|
source: "iana"
|
|
},
|
|
"application/trig": {
|
|
source: "iana",
|
|
extensions: ["trig"]
|
|
},
|
|
"application/ttml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ttml"]
|
|
},
|
|
"application/tve-trigger": {
|
|
source: "iana"
|
|
},
|
|
"application/tzif": {
|
|
source: "iana"
|
|
},
|
|
"application/tzif-leap": {
|
|
source: "iana"
|
|
},
|
|
"application/ubjson": {
|
|
compressible: false,
|
|
extensions: ["ubj"]
|
|
},
|
|
"application/ulpfec": {
|
|
source: "iana"
|
|
},
|
|
"application/urc-grpsheet+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/urc-ressheet+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rsheet"]
|
|
},
|
|
"application/urc-targetdesc+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["td"]
|
|
},
|
|
"application/urc-uisocketdesc+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vcard+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vcard+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vemmi": {
|
|
source: "iana"
|
|
},
|
|
"application/vividence.scriptfile": {
|
|
source: "apache"
|
|
},
|
|
"application/vnd.1000minds.decision-model+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["1km"]
|
|
},
|
|
"application/vnd.3gpp-prose+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp-prose-pc3ch+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp-v2x-local-service-information": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.5gnas": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.access-transfer-events+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.bsf+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.gmop+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.gtpc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.interworking-data": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.lpp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.mc-signalling-ear": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.mcdata-affiliation-command+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcdata-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcdata-payload": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.mcdata-service-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcdata-signalling": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.mcdata-ue-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcdata-user-profile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-affiliation-command+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-floor-request+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-location-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-mbms-usage-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-service-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-signed+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-ue-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-ue-init-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcptt-user-profile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-affiliation-command+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-affiliation-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-location-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-mbms-usage-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-service-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-transmission-request+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-ue-config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mcvideo-user-profile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.mid-call+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.ngap": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.pfcp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.pic-bw-large": {
|
|
source: "iana",
|
|
extensions: ["plb"]
|
|
},
|
|
"application/vnd.3gpp.pic-bw-small": {
|
|
source: "iana",
|
|
extensions: ["psb"]
|
|
},
|
|
"application/vnd.3gpp.pic-bw-var": {
|
|
source: "iana",
|
|
extensions: ["pvb"]
|
|
},
|
|
"application/vnd.3gpp.s1ap": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.sms": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp.sms+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.srvcc-ext+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.srvcc-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.state-and-event-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp.ussd+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp2.bcmcsinfo+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.3gpp2.sms": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3gpp2.tcap": {
|
|
source: "iana",
|
|
extensions: ["tcap"]
|
|
},
|
|
"application/vnd.3lightssoftware.imagescal": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.3m.post-it-notes": {
|
|
source: "iana",
|
|
extensions: ["pwn"]
|
|
},
|
|
"application/vnd.accpac.simply.aso": {
|
|
source: "iana",
|
|
extensions: ["aso"]
|
|
},
|
|
"application/vnd.accpac.simply.imp": {
|
|
source: "iana",
|
|
extensions: ["imp"]
|
|
},
|
|
"application/vnd.acucobol": {
|
|
source: "iana",
|
|
extensions: ["acu"]
|
|
},
|
|
"application/vnd.acucorp": {
|
|
source: "iana",
|
|
extensions: ["atc", "acutc"]
|
|
},
|
|
"application/vnd.adobe.air-application-installer-package+zip": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["air"]
|
|
},
|
|
"application/vnd.adobe.flash.movie": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.adobe.formscentral.fcdt": {
|
|
source: "iana",
|
|
extensions: ["fcdt"]
|
|
},
|
|
"application/vnd.adobe.fxp": {
|
|
source: "iana",
|
|
extensions: ["fxp", "fxpl"]
|
|
},
|
|
"application/vnd.adobe.partial-upload": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.adobe.xdp+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xdp"]
|
|
},
|
|
"application/vnd.adobe.xfdf": {
|
|
source: "iana",
|
|
extensions: ["xfdf"]
|
|
},
|
|
"application/vnd.aether.imp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.afplinedata": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.afplinedata-pagedef": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.cmoca-cmresource": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.foca-charset": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.foca-codedfont": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.foca-codepage": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca-cmtable": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca-formdef": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca-mediummap": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca-objectcontainer": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca-overlay": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.afpc.modca-pagesegment": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.age": {
|
|
source: "iana",
|
|
extensions: ["age"]
|
|
},
|
|
"application/vnd.ah-barcode": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ahead.space": {
|
|
source: "iana",
|
|
extensions: ["ahead"]
|
|
},
|
|
"application/vnd.airzip.filesecure.azf": {
|
|
source: "iana",
|
|
extensions: ["azf"]
|
|
},
|
|
"application/vnd.airzip.filesecure.azs": {
|
|
source: "iana",
|
|
extensions: ["azs"]
|
|
},
|
|
"application/vnd.amadeus+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.amazon.ebook": {
|
|
source: "apache",
|
|
extensions: ["azw"]
|
|
},
|
|
"application/vnd.amazon.mobi8-ebook": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.americandynamics.acc": {
|
|
source: "iana",
|
|
extensions: ["acc"]
|
|
},
|
|
"application/vnd.amiga.ami": {
|
|
source: "iana",
|
|
extensions: ["ami"]
|
|
},
|
|
"application/vnd.amundsen.maze+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.android.ota": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.android.package-archive": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["apk"]
|
|
},
|
|
"application/vnd.anki": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.anser-web-certificate-issue-initiation": {
|
|
source: "iana",
|
|
extensions: ["cii"]
|
|
},
|
|
"application/vnd.anser-web-funds-transfer-initiation": {
|
|
source: "apache",
|
|
extensions: ["fti"]
|
|
},
|
|
"application/vnd.antix.game-component": {
|
|
source: "iana",
|
|
extensions: ["atx"]
|
|
},
|
|
"application/vnd.apache.arrow.file": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.apache.arrow.stream": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.apache.thrift.binary": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.apache.thrift.compact": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.apache.thrift.json": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.api+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.aplextor.warrp+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.apothekende.reservation+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.apple.installer+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mpkg"]
|
|
},
|
|
"application/vnd.apple.keynote": {
|
|
source: "iana",
|
|
extensions: ["key"]
|
|
},
|
|
"application/vnd.apple.mpegurl": {
|
|
source: "iana",
|
|
extensions: ["m3u8"]
|
|
},
|
|
"application/vnd.apple.numbers": {
|
|
source: "iana",
|
|
extensions: ["numbers"]
|
|
},
|
|
"application/vnd.apple.pages": {
|
|
source: "iana",
|
|
extensions: ["pages"]
|
|
},
|
|
"application/vnd.apple.pkpass": {
|
|
compressible: false,
|
|
extensions: ["pkpass"]
|
|
},
|
|
"application/vnd.arastra.swi": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.aristanetworks.swi": {
|
|
source: "iana",
|
|
extensions: ["swi"]
|
|
},
|
|
"application/vnd.artisan+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.artsquare": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.astraea-software.iota": {
|
|
source: "iana",
|
|
extensions: ["iota"]
|
|
},
|
|
"application/vnd.audiograph": {
|
|
source: "iana",
|
|
extensions: ["aep"]
|
|
},
|
|
"application/vnd.autopackage": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.avalon+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.avistar+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.balsamiq.bmml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["bmml"]
|
|
},
|
|
"application/vnd.balsamiq.bmpr": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.banana-accounting": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.bbf.usp.error": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.bbf.usp.msg": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.bbf.usp.msg+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.bekitzur-stech+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.bint.med-content": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.biopax.rdf+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.blink-idb-value-wrapper": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.blueice.multipass": {
|
|
source: "iana",
|
|
extensions: ["mpm"]
|
|
},
|
|
"application/vnd.bluetooth.ep.oob": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.bluetooth.le.oob": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.bmi": {
|
|
source: "iana",
|
|
extensions: ["bmi"]
|
|
},
|
|
"application/vnd.bpf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.bpf3": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.businessobjects": {
|
|
source: "iana",
|
|
extensions: ["rep"]
|
|
},
|
|
"application/vnd.byu.uapi+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.cab-jscript": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.canon-cpdl": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.canon-lips": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.capasystems-pg+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.cendio.thinlinc.clientconf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.century-systems.tcp_stream": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.chemdraw+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["cdxml"]
|
|
},
|
|
"application/vnd.chess-pgn": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.chipnuts.karaoke-mmd": {
|
|
source: "iana",
|
|
extensions: ["mmd"]
|
|
},
|
|
"application/vnd.ciedi": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cinderella": {
|
|
source: "iana",
|
|
extensions: ["cdy"]
|
|
},
|
|
"application/vnd.cirpack.isdn-ext": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.citationstyles.style+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["csl"]
|
|
},
|
|
"application/vnd.claymore": {
|
|
source: "iana",
|
|
extensions: ["cla"]
|
|
},
|
|
"application/vnd.cloanto.rp9": {
|
|
source: "iana",
|
|
extensions: ["rp9"]
|
|
},
|
|
"application/vnd.clonk.c4group": {
|
|
source: "iana",
|
|
extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"]
|
|
},
|
|
"application/vnd.cluetrust.cartomobile-config": {
|
|
source: "iana",
|
|
extensions: ["c11amc"]
|
|
},
|
|
"application/vnd.cluetrust.cartomobile-config-pkg": {
|
|
source: "iana",
|
|
extensions: ["c11amz"]
|
|
},
|
|
"application/vnd.coffeescript": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collabio.xodocuments.document": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collabio.xodocuments.document-template": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collabio.xodocuments.presentation": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collabio.xodocuments.presentation-template": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collabio.xodocuments.spreadsheet": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collabio.xodocuments.spreadsheet-template": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.collection+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.collection.doc+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.collection.next+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.comicbook+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.comicbook-rar": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.commerce-battelle": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.commonspace": {
|
|
source: "iana",
|
|
extensions: ["csp"]
|
|
},
|
|
"application/vnd.contact.cmsg": {
|
|
source: "iana",
|
|
extensions: ["cdbcmsg"]
|
|
},
|
|
"application/vnd.coreos.ignition+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.cosmocaller": {
|
|
source: "iana",
|
|
extensions: ["cmc"]
|
|
},
|
|
"application/vnd.crick.clicker": {
|
|
source: "iana",
|
|
extensions: ["clkx"]
|
|
},
|
|
"application/vnd.crick.clicker.keyboard": {
|
|
source: "iana",
|
|
extensions: ["clkk"]
|
|
},
|
|
"application/vnd.crick.clicker.palette": {
|
|
source: "iana",
|
|
extensions: ["clkp"]
|
|
},
|
|
"application/vnd.crick.clicker.template": {
|
|
source: "iana",
|
|
extensions: ["clkt"]
|
|
},
|
|
"application/vnd.crick.clicker.wordbank": {
|
|
source: "iana",
|
|
extensions: ["clkw"]
|
|
},
|
|
"application/vnd.criticaltools.wbs+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["wbs"]
|
|
},
|
|
"application/vnd.cryptii.pipe+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.crypto-shade-file": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cryptomator.encrypted": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cryptomator.vault": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ctc-posml": {
|
|
source: "iana",
|
|
extensions: ["pml"]
|
|
},
|
|
"application/vnd.ctct.ws+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.cups-pdf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cups-postscript": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cups-ppd": {
|
|
source: "iana",
|
|
extensions: ["ppd"]
|
|
},
|
|
"application/vnd.cups-raster": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cups-raw": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.curl": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.curl.car": {
|
|
source: "apache",
|
|
extensions: ["car"]
|
|
},
|
|
"application/vnd.curl.pcurl": {
|
|
source: "apache",
|
|
extensions: ["pcurl"]
|
|
},
|
|
"application/vnd.cyan.dean.root+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.cybank": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.cyclonedx+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.cyclonedx+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.d2l.coursepackage1p0+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.d3m-dataset": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.d3m-problem": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dart": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["dart"]
|
|
},
|
|
"application/vnd.data-vision.rdz": {
|
|
source: "iana",
|
|
extensions: ["rdz"]
|
|
},
|
|
"application/vnd.datapackage+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dataresource+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dbf": {
|
|
source: "iana",
|
|
extensions: ["dbf"]
|
|
},
|
|
"application/vnd.debian.binary-package": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dece.data": {
|
|
source: "iana",
|
|
extensions: ["uvf", "uvvf", "uvd", "uvvd"]
|
|
},
|
|
"application/vnd.dece.ttml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["uvt", "uvvt"]
|
|
},
|
|
"application/vnd.dece.unspecified": {
|
|
source: "iana",
|
|
extensions: ["uvx", "uvvx"]
|
|
},
|
|
"application/vnd.dece.zip": {
|
|
source: "iana",
|
|
extensions: ["uvz", "uvvz"]
|
|
},
|
|
"application/vnd.denovo.fcselayout-link": {
|
|
source: "iana",
|
|
extensions: ["fe_launch"]
|
|
},
|
|
"application/vnd.desmume.movie": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dir-bi.plate-dl-nosuffix": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dm.delegation+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dna": {
|
|
source: "iana",
|
|
extensions: ["dna"]
|
|
},
|
|
"application/vnd.document+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dolby.mlp": {
|
|
source: "apache",
|
|
extensions: ["mlp"]
|
|
},
|
|
"application/vnd.dolby.mobile.1": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dolby.mobile.2": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.doremir.scorecloud-binary-document": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dpgraph": {
|
|
source: "iana",
|
|
extensions: ["dpg"]
|
|
},
|
|
"application/vnd.dreamfactory": {
|
|
source: "iana",
|
|
extensions: ["dfac"]
|
|
},
|
|
"application/vnd.drive+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ds-keypoint": {
|
|
source: "apache",
|
|
extensions: ["kpxx"]
|
|
},
|
|
"application/vnd.dtg.local": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dtg.local.flash": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dtg.local.html": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.ait": {
|
|
source: "iana",
|
|
extensions: ["ait"]
|
|
},
|
|
"application/vnd.dvb.dvbisl+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.dvbj": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.esgcontainer": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.ipdcdftnotifaccess": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.ipdcesgaccess": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.ipdcesgaccess2": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.ipdcesgpdd": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.ipdcroaming": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.iptv.alfec-base": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.iptv.alfec-enhancement": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.notif-aggregate-root+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.notif-container+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.notif-generic+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.notif-ia-msglist+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.notif-ia-registration-request+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.notif-ia-registration-response+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.notif-init+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.dvb.pfr": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dvb.service": {
|
|
source: "iana",
|
|
extensions: ["svc"]
|
|
},
|
|
"application/vnd.dxr": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.dynageo": {
|
|
source: "iana",
|
|
extensions: ["geo"]
|
|
},
|
|
"application/vnd.dzr": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.easykaraoke.cdgdownload": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ecdis-update": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ecip.rlp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.eclipse.ditto+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ecowin.chart": {
|
|
source: "iana",
|
|
extensions: ["mag"]
|
|
},
|
|
"application/vnd.ecowin.filerequest": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ecowin.fileupdate": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ecowin.series": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ecowin.seriesrequest": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ecowin.seriesupdate": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.efi.img": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.efi.iso": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.emclient.accessrequest+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.enliven": {
|
|
source: "iana",
|
|
extensions: ["nml"]
|
|
},
|
|
"application/vnd.enphase.envoy": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.eprints.data+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.epson.esf": {
|
|
source: "iana",
|
|
extensions: ["esf"]
|
|
},
|
|
"application/vnd.epson.msf": {
|
|
source: "iana",
|
|
extensions: ["msf"]
|
|
},
|
|
"application/vnd.epson.quickanime": {
|
|
source: "iana",
|
|
extensions: ["qam"]
|
|
},
|
|
"application/vnd.epson.salt": {
|
|
source: "iana",
|
|
extensions: ["slt"]
|
|
},
|
|
"application/vnd.epson.ssf": {
|
|
source: "iana",
|
|
extensions: ["ssf"]
|
|
},
|
|
"application/vnd.ericsson.quickcall": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.espass-espass+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.eszigno3+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["es3", "et3"]
|
|
},
|
|
"application/vnd.etsi.aoc+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.asic-e+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.etsi.asic-s+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.etsi.cug+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvcommand+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvdiscovery+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvprofile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvsad-bc+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvsad-cod+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvsad-npvr+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvservice+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvsync+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.iptvueprofile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.mcid+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.mheg5": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.etsi.overload-control-policy-dataset+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.pstn+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.sci+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.simservs+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.timestamp-token": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.etsi.tsl+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.etsi.tsl.der": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.eu.kasparian.car+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.eudora.data": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.evolv.ecig.profile": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.evolv.ecig.settings": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.evolv.ecig.theme": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.exstream-empower+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.exstream-package": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ezpix-album": {
|
|
source: "iana",
|
|
extensions: ["ez2"]
|
|
},
|
|
"application/vnd.ezpix-package": {
|
|
source: "iana",
|
|
extensions: ["ez3"]
|
|
},
|
|
"application/vnd.f-secure.mobile": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.familysearch.gedcom+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.fastcopy-disk-image": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fdf": {
|
|
source: "iana",
|
|
extensions: ["fdf"]
|
|
},
|
|
"application/vnd.fdsn.mseed": {
|
|
source: "iana",
|
|
extensions: ["mseed"]
|
|
},
|
|
"application/vnd.fdsn.seed": {
|
|
source: "iana",
|
|
extensions: ["seed", "dataless"]
|
|
},
|
|
"application/vnd.ffsns": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ficlab.flb+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.filmit.zfc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fints": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.firemonkeys.cloudcell": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.flographit": {
|
|
source: "iana",
|
|
extensions: ["gph"]
|
|
},
|
|
"application/vnd.fluxtime.clip": {
|
|
source: "iana",
|
|
extensions: ["ftc"]
|
|
},
|
|
"application/vnd.font-fontforge-sfd": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.framemaker": {
|
|
source: "iana",
|
|
extensions: ["fm", "frame", "maker", "book"]
|
|
},
|
|
"application/vnd.frogans.fnc": {
|
|
source: "iana",
|
|
extensions: ["fnc"]
|
|
},
|
|
"application/vnd.frogans.ltf": {
|
|
source: "iana",
|
|
extensions: ["ltf"]
|
|
},
|
|
"application/vnd.fsc.weblaunch": {
|
|
source: "iana",
|
|
extensions: ["fsc"]
|
|
},
|
|
"application/vnd.fujifilm.fb.docuworks": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fujifilm.fb.docuworks.binder": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fujifilm.fb.docuworks.container": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fujifilm.fb.jfi+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.fujitsu.oasys": {
|
|
source: "iana",
|
|
extensions: ["oas"]
|
|
},
|
|
"application/vnd.fujitsu.oasys2": {
|
|
source: "iana",
|
|
extensions: ["oa2"]
|
|
},
|
|
"application/vnd.fujitsu.oasys3": {
|
|
source: "iana",
|
|
extensions: ["oa3"]
|
|
},
|
|
"application/vnd.fujitsu.oasysgp": {
|
|
source: "iana",
|
|
extensions: ["fg5"]
|
|
},
|
|
"application/vnd.fujitsu.oasysprs": {
|
|
source: "iana",
|
|
extensions: ["bh2"]
|
|
},
|
|
"application/vnd.fujixerox.art-ex": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fujixerox.art4": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fujixerox.ddd": {
|
|
source: "iana",
|
|
extensions: ["ddd"]
|
|
},
|
|
"application/vnd.fujixerox.docuworks": {
|
|
source: "iana",
|
|
extensions: ["xdw"]
|
|
},
|
|
"application/vnd.fujixerox.docuworks.binder": {
|
|
source: "iana",
|
|
extensions: ["xbd"]
|
|
},
|
|
"application/vnd.fujixerox.docuworks.container": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fujixerox.hbpl": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.fut-misnet": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.futoin+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.futoin+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.fuzzysheet": {
|
|
source: "iana",
|
|
extensions: ["fzs"]
|
|
},
|
|
"application/vnd.genomatix.tuxedo": {
|
|
source: "iana",
|
|
extensions: ["txd"]
|
|
},
|
|
"application/vnd.gentics.grd+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.geo+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.geocube+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.geogebra.file": {
|
|
source: "iana",
|
|
extensions: ["ggb"]
|
|
},
|
|
"application/vnd.geogebra.slides": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.geogebra.tool": {
|
|
source: "iana",
|
|
extensions: ["ggt"]
|
|
},
|
|
"application/vnd.geometry-explorer": {
|
|
source: "iana",
|
|
extensions: ["gex", "gre"]
|
|
},
|
|
"application/vnd.geonext": {
|
|
source: "iana",
|
|
extensions: ["gxt"]
|
|
},
|
|
"application/vnd.geoplan": {
|
|
source: "iana",
|
|
extensions: ["g2w"]
|
|
},
|
|
"application/vnd.geospace": {
|
|
source: "iana",
|
|
extensions: ["g3w"]
|
|
},
|
|
"application/vnd.gerber": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.globalplatform.card-content-mgt": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.globalplatform.card-content-mgt-response": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.gmx": {
|
|
source: "iana",
|
|
extensions: ["gmx"]
|
|
},
|
|
"application/vnd.google-apps.document": {
|
|
compressible: false,
|
|
extensions: ["gdoc"]
|
|
},
|
|
"application/vnd.google-apps.presentation": {
|
|
compressible: false,
|
|
extensions: ["gslides"]
|
|
},
|
|
"application/vnd.google-apps.spreadsheet": {
|
|
compressible: false,
|
|
extensions: ["gsheet"]
|
|
},
|
|
"application/vnd.google-earth.kml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["kml"]
|
|
},
|
|
"application/vnd.google-earth.kmz": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["kmz"]
|
|
},
|
|
"application/vnd.gov.sk.e-form+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.gov.sk.e-form+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.gov.sk.xmldatacontainer+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.grafeq": {
|
|
source: "iana",
|
|
extensions: ["gqf", "gqs"]
|
|
},
|
|
"application/vnd.gridmp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.groove-account": {
|
|
source: "iana",
|
|
extensions: ["gac"]
|
|
},
|
|
"application/vnd.groove-help": {
|
|
source: "iana",
|
|
extensions: ["ghf"]
|
|
},
|
|
"application/vnd.groove-identity-message": {
|
|
source: "iana",
|
|
extensions: ["gim"]
|
|
},
|
|
"application/vnd.groove-injector": {
|
|
source: "iana",
|
|
extensions: ["grv"]
|
|
},
|
|
"application/vnd.groove-tool-message": {
|
|
source: "iana",
|
|
extensions: ["gtm"]
|
|
},
|
|
"application/vnd.groove-tool-template": {
|
|
source: "iana",
|
|
extensions: ["tpl"]
|
|
},
|
|
"application/vnd.groove-vcard": {
|
|
source: "iana",
|
|
extensions: ["vcg"]
|
|
},
|
|
"application/vnd.hal+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hal+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["hal"]
|
|
},
|
|
"application/vnd.handheld-entertainment+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["zmm"]
|
|
},
|
|
"application/vnd.hbci": {
|
|
source: "iana",
|
|
extensions: ["hbci"]
|
|
},
|
|
"application/vnd.hc+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hcl-bireports": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.hdt": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.heroku+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hhe.lesson-player": {
|
|
source: "iana",
|
|
extensions: ["les"]
|
|
},
|
|
"application/vnd.hl7cda+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hl7v2+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hp-hpgl": {
|
|
source: "iana",
|
|
extensions: ["hpgl"]
|
|
},
|
|
"application/vnd.hp-hpid": {
|
|
source: "iana",
|
|
extensions: ["hpid"]
|
|
},
|
|
"application/vnd.hp-hps": {
|
|
source: "iana",
|
|
extensions: ["hps"]
|
|
},
|
|
"application/vnd.hp-jlyt": {
|
|
source: "iana",
|
|
extensions: ["jlt"]
|
|
},
|
|
"application/vnd.hp-pcl": {
|
|
source: "iana",
|
|
extensions: ["pcl"]
|
|
},
|
|
"application/vnd.hp-pclxl": {
|
|
source: "iana",
|
|
extensions: ["pclxl"]
|
|
},
|
|
"application/vnd.httphone": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.hydrostatix.sof-data": {
|
|
source: "iana",
|
|
extensions: ["sfd-hdstx"]
|
|
},
|
|
"application/vnd.hyper+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hyper-item+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hyperdrive+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.hzn-3d-crossword": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ibm.afplinedata": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ibm.electronic-media": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ibm.minipay": {
|
|
source: "iana",
|
|
extensions: ["mpy"]
|
|
},
|
|
"application/vnd.ibm.modcap": {
|
|
source: "iana",
|
|
extensions: ["afp", "listafp", "list3820"]
|
|
},
|
|
"application/vnd.ibm.rights-management": {
|
|
source: "iana",
|
|
extensions: ["irm"]
|
|
},
|
|
"application/vnd.ibm.secure-container": {
|
|
source: "iana",
|
|
extensions: ["sc"]
|
|
},
|
|
"application/vnd.iccprofile": {
|
|
source: "iana",
|
|
extensions: ["icc", "icm"]
|
|
},
|
|
"application/vnd.ieee.1905": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.igloader": {
|
|
source: "iana",
|
|
extensions: ["igl"]
|
|
},
|
|
"application/vnd.imagemeter.folder+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.imagemeter.image+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.immervision-ivp": {
|
|
source: "iana",
|
|
extensions: ["ivp"]
|
|
},
|
|
"application/vnd.immervision-ivu": {
|
|
source: "iana",
|
|
extensions: ["ivu"]
|
|
},
|
|
"application/vnd.ims.imsccv1p1": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ims.imsccv1p2": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ims.imsccv1p3": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ims.lis.v2.result+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ims.lti.v2.toolconsumerprofile+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ims.lti.v2.toolproxy+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ims.lti.v2.toolproxy.id+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ims.lti.v2.toolsettings+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ims.lti.v2.toolsettings.simple+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.informedcontrol.rms+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.informix-visionary": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.infotech.project": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.infotech.project+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.innopath.wamp.notification": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.insors.igm": {
|
|
source: "iana",
|
|
extensions: ["igm"]
|
|
},
|
|
"application/vnd.intercon.formnet": {
|
|
source: "iana",
|
|
extensions: ["xpw", "xpx"]
|
|
},
|
|
"application/vnd.intergeo": {
|
|
source: "iana",
|
|
extensions: ["i2g"]
|
|
},
|
|
"application/vnd.intertrust.digibox": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.intertrust.nncp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.intu.qbo": {
|
|
source: "iana",
|
|
extensions: ["qbo"]
|
|
},
|
|
"application/vnd.intu.qfx": {
|
|
source: "iana",
|
|
extensions: ["qfx"]
|
|
},
|
|
"application/vnd.iptc.g2.catalogitem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.iptc.g2.conceptitem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.iptc.g2.knowledgeitem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.iptc.g2.newsitem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.iptc.g2.newsmessage+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.iptc.g2.packageitem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.iptc.g2.planningitem+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ipunplugged.rcprofile": {
|
|
source: "iana",
|
|
extensions: ["rcprofile"]
|
|
},
|
|
"application/vnd.irepository.package+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["irp"]
|
|
},
|
|
"application/vnd.is-xpr": {
|
|
source: "iana",
|
|
extensions: ["xpr"]
|
|
},
|
|
"application/vnd.isac.fcs": {
|
|
source: "iana",
|
|
extensions: ["fcs"]
|
|
},
|
|
"application/vnd.iso11783-10+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.jam": {
|
|
source: "iana",
|
|
extensions: ["jam"]
|
|
},
|
|
"application/vnd.japannet-directory-service": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-jpnstore-wakeup": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-payment-wakeup": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-registration": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-registration-wakeup": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-setstore-wakeup": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-verification": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.japannet-verification-wakeup": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.jcp.javame.midlet-rms": {
|
|
source: "iana",
|
|
extensions: ["rms"]
|
|
},
|
|
"application/vnd.jisp": {
|
|
source: "iana",
|
|
extensions: ["jisp"]
|
|
},
|
|
"application/vnd.joost.joda-archive": {
|
|
source: "iana",
|
|
extensions: ["joda"]
|
|
},
|
|
"application/vnd.jsk.isdn-ngn": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.kahootz": {
|
|
source: "iana",
|
|
extensions: ["ktz", "ktr"]
|
|
},
|
|
"application/vnd.kde.karbon": {
|
|
source: "iana",
|
|
extensions: ["karbon"]
|
|
},
|
|
"application/vnd.kde.kchart": {
|
|
source: "iana",
|
|
extensions: ["chrt"]
|
|
},
|
|
"application/vnd.kde.kformula": {
|
|
source: "iana",
|
|
extensions: ["kfo"]
|
|
},
|
|
"application/vnd.kde.kivio": {
|
|
source: "iana",
|
|
extensions: ["flw"]
|
|
},
|
|
"application/vnd.kde.kontour": {
|
|
source: "iana",
|
|
extensions: ["kon"]
|
|
},
|
|
"application/vnd.kde.kpresenter": {
|
|
source: "iana",
|
|
extensions: ["kpr", "kpt"]
|
|
},
|
|
"application/vnd.kde.kspread": {
|
|
source: "iana",
|
|
extensions: ["ksp"]
|
|
},
|
|
"application/vnd.kde.kword": {
|
|
source: "iana",
|
|
extensions: ["kwd", "kwt"]
|
|
},
|
|
"application/vnd.kenameaapp": {
|
|
source: "iana",
|
|
extensions: ["htke"]
|
|
},
|
|
"application/vnd.kidspiration": {
|
|
source: "iana",
|
|
extensions: ["kia"]
|
|
},
|
|
"application/vnd.kinar": {
|
|
source: "iana",
|
|
extensions: ["kne", "knp"]
|
|
},
|
|
"application/vnd.koan": {
|
|
source: "iana",
|
|
extensions: ["skp", "skd", "skt", "skm"]
|
|
},
|
|
"application/vnd.kodak-descriptor": {
|
|
source: "iana",
|
|
extensions: ["sse"]
|
|
},
|
|
"application/vnd.las": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.las.las+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.las.las+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["lasxml"]
|
|
},
|
|
"application/vnd.laszip": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.leap+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.liberty-request+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.llamagraphics.life-balance.desktop": {
|
|
source: "iana",
|
|
extensions: ["lbd"]
|
|
},
|
|
"application/vnd.llamagraphics.life-balance.exchange+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["lbe"]
|
|
},
|
|
"application/vnd.logipipe.circuit+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.loom": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.lotus-1-2-3": {
|
|
source: "iana",
|
|
extensions: ["123"]
|
|
},
|
|
"application/vnd.lotus-approach": {
|
|
source: "iana",
|
|
extensions: ["apr"]
|
|
},
|
|
"application/vnd.lotus-freelance": {
|
|
source: "iana",
|
|
extensions: ["pre"]
|
|
},
|
|
"application/vnd.lotus-notes": {
|
|
source: "iana",
|
|
extensions: ["nsf"]
|
|
},
|
|
"application/vnd.lotus-organizer": {
|
|
source: "iana",
|
|
extensions: ["org"]
|
|
},
|
|
"application/vnd.lotus-screencam": {
|
|
source: "iana",
|
|
extensions: ["scm"]
|
|
},
|
|
"application/vnd.lotus-wordpro": {
|
|
source: "iana",
|
|
extensions: ["lwp"]
|
|
},
|
|
"application/vnd.macports.portpkg": {
|
|
source: "iana",
|
|
extensions: ["portpkg"]
|
|
},
|
|
"application/vnd.mapbox-vector-tile": {
|
|
source: "iana",
|
|
extensions: ["mvt"]
|
|
},
|
|
"application/vnd.marlin.drm.actiontoken+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.marlin.drm.conftoken+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.marlin.drm.license+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.marlin.drm.mdcf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mason+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.maxar.archive.3tz+zip": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"application/vnd.maxmind.maxmind-db": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mcd": {
|
|
source: "iana",
|
|
extensions: ["mcd"]
|
|
},
|
|
"application/vnd.medcalcdata": {
|
|
source: "iana",
|
|
extensions: ["mc1"]
|
|
},
|
|
"application/vnd.mediastation.cdkey": {
|
|
source: "iana",
|
|
extensions: ["cdkey"]
|
|
},
|
|
"application/vnd.meridian-slingshot": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mfer": {
|
|
source: "iana",
|
|
extensions: ["mwf"]
|
|
},
|
|
"application/vnd.mfmp": {
|
|
source: "iana",
|
|
extensions: ["mfm"]
|
|
},
|
|
"application/vnd.micro+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.micrografx.flo": {
|
|
source: "iana",
|
|
extensions: ["flo"]
|
|
},
|
|
"application/vnd.micrografx.igx": {
|
|
source: "iana",
|
|
extensions: ["igx"]
|
|
},
|
|
"application/vnd.microsoft.portable-executable": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.microsoft.windows.thumbnail-cache": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.miele+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.mif": {
|
|
source: "iana",
|
|
extensions: ["mif"]
|
|
},
|
|
"application/vnd.minisoft-hp3000-save": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mitsubishi.misty-guard.trustweb": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mobius.daf": {
|
|
source: "iana",
|
|
extensions: ["daf"]
|
|
},
|
|
"application/vnd.mobius.dis": {
|
|
source: "iana",
|
|
extensions: ["dis"]
|
|
},
|
|
"application/vnd.mobius.mbk": {
|
|
source: "iana",
|
|
extensions: ["mbk"]
|
|
},
|
|
"application/vnd.mobius.mqy": {
|
|
source: "iana",
|
|
extensions: ["mqy"]
|
|
},
|
|
"application/vnd.mobius.msl": {
|
|
source: "iana",
|
|
extensions: ["msl"]
|
|
},
|
|
"application/vnd.mobius.plc": {
|
|
source: "iana",
|
|
extensions: ["plc"]
|
|
},
|
|
"application/vnd.mobius.txf": {
|
|
source: "iana",
|
|
extensions: ["txf"]
|
|
},
|
|
"application/vnd.mophun.application": {
|
|
source: "iana",
|
|
extensions: ["mpn"]
|
|
},
|
|
"application/vnd.mophun.certificate": {
|
|
source: "iana",
|
|
extensions: ["mpc"]
|
|
},
|
|
"application/vnd.motorola.flexsuite": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.flexsuite.adsi": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.flexsuite.fis": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.flexsuite.gotap": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.flexsuite.kmr": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.flexsuite.ttc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.flexsuite.wem": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.motorola.iprm": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mozilla.xul+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xul"]
|
|
},
|
|
"application/vnd.ms-3mfdocument": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-artgalry": {
|
|
source: "iana",
|
|
extensions: ["cil"]
|
|
},
|
|
"application/vnd.ms-asf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-cab-compressed": {
|
|
source: "iana",
|
|
extensions: ["cab"]
|
|
},
|
|
"application/vnd.ms-color.iccprofile": {
|
|
source: "apache"
|
|
},
|
|
"application/vnd.ms-excel": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"]
|
|
},
|
|
"application/vnd.ms-excel.addin.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["xlam"]
|
|
},
|
|
"application/vnd.ms-excel.sheet.binary.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["xlsb"]
|
|
},
|
|
"application/vnd.ms-excel.sheet.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["xlsm"]
|
|
},
|
|
"application/vnd.ms-excel.template.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["xltm"]
|
|
},
|
|
"application/vnd.ms-fontobject": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["eot"]
|
|
},
|
|
"application/vnd.ms-htmlhelp": {
|
|
source: "iana",
|
|
extensions: ["chm"]
|
|
},
|
|
"application/vnd.ms-ims": {
|
|
source: "iana",
|
|
extensions: ["ims"]
|
|
},
|
|
"application/vnd.ms-lrm": {
|
|
source: "iana",
|
|
extensions: ["lrm"]
|
|
},
|
|
"application/vnd.ms-office.activex+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ms-officetheme": {
|
|
source: "iana",
|
|
extensions: ["thmx"]
|
|
},
|
|
"application/vnd.ms-opentype": {
|
|
source: "apache",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ms-outlook": {
|
|
compressible: false,
|
|
extensions: ["msg"]
|
|
},
|
|
"application/vnd.ms-package.obfuscated-opentype": {
|
|
source: "apache"
|
|
},
|
|
"application/vnd.ms-pki.seccat": {
|
|
source: "apache",
|
|
extensions: ["cat"]
|
|
},
|
|
"application/vnd.ms-pki.stl": {
|
|
source: "apache",
|
|
extensions: ["stl"]
|
|
},
|
|
"application/vnd.ms-playready.initiator+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ms-powerpoint": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["ppt", "pps", "pot"]
|
|
},
|
|
"application/vnd.ms-powerpoint.addin.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["ppam"]
|
|
},
|
|
"application/vnd.ms-powerpoint.presentation.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["pptm"]
|
|
},
|
|
"application/vnd.ms-powerpoint.slide.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["sldm"]
|
|
},
|
|
"application/vnd.ms-powerpoint.slideshow.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["ppsm"]
|
|
},
|
|
"application/vnd.ms-powerpoint.template.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["potm"]
|
|
},
|
|
"application/vnd.ms-printdevicecapabilities+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ms-printing.printticket+xml": {
|
|
source: "apache",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ms-printschematicket+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ms-project": {
|
|
source: "iana",
|
|
extensions: ["mpp", "mpt"]
|
|
},
|
|
"application/vnd.ms-tnef": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-windows.devicepairing": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-windows.nwprinting.oob": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-windows.printerpairing": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-windows.wsd.oob": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-wmdrm.lic-chlg-req": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-wmdrm.lic-resp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-wmdrm.meter-chlg-req": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-wmdrm.meter-resp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ms-word.document.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["docm"]
|
|
},
|
|
"application/vnd.ms-word.template.macroenabled.12": {
|
|
source: "iana",
|
|
extensions: ["dotm"]
|
|
},
|
|
"application/vnd.ms-works": {
|
|
source: "iana",
|
|
extensions: ["wps", "wks", "wcm", "wdb"]
|
|
},
|
|
"application/vnd.ms-wpl": {
|
|
source: "iana",
|
|
extensions: ["wpl"]
|
|
},
|
|
"application/vnd.ms-xpsdocument": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["xps"]
|
|
},
|
|
"application/vnd.msa-disk-image": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.mseq": {
|
|
source: "iana",
|
|
extensions: ["mseq"]
|
|
},
|
|
"application/vnd.msign": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.multiad.creator": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.multiad.creator.cif": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.music-niff": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.musician": {
|
|
source: "iana",
|
|
extensions: ["mus"]
|
|
},
|
|
"application/vnd.muvee.style": {
|
|
source: "iana",
|
|
extensions: ["msty"]
|
|
},
|
|
"application/vnd.mynfc": {
|
|
source: "iana",
|
|
extensions: ["taglet"]
|
|
},
|
|
"application/vnd.nacamar.ybrid+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.ncd.control": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ncd.reference": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nearst.inv+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.nebumind.line": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nervana": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.netfpx": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.neurolanguage.nlu": {
|
|
source: "iana",
|
|
extensions: ["nlu"]
|
|
},
|
|
"application/vnd.nimn": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nintendo.nitro.rom": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nintendo.snes.rom": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nitf": {
|
|
source: "iana",
|
|
extensions: ["ntf", "nitf"]
|
|
},
|
|
"application/vnd.noblenet-directory": {
|
|
source: "iana",
|
|
extensions: ["nnd"]
|
|
},
|
|
"application/vnd.noblenet-sealer": {
|
|
source: "iana",
|
|
extensions: ["nns"]
|
|
},
|
|
"application/vnd.noblenet-web": {
|
|
source: "iana",
|
|
extensions: ["nnw"]
|
|
},
|
|
"application/vnd.nokia.catalogs": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nokia.conml+wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nokia.conml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.nokia.iptv.config+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.nokia.isds-radio-presets": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nokia.landmark+wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nokia.landmark+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.nokia.landmarkcollection+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.nokia.n-gage.ac+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ac"]
|
|
},
|
|
"application/vnd.nokia.n-gage.data": {
|
|
source: "iana",
|
|
extensions: ["ngdat"]
|
|
},
|
|
"application/vnd.nokia.n-gage.symbian.install": {
|
|
source: "iana",
|
|
extensions: ["n-gage"]
|
|
},
|
|
"application/vnd.nokia.ncd": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nokia.pcd+wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.nokia.pcd+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.nokia.radio-preset": {
|
|
source: "iana",
|
|
extensions: ["rpst"]
|
|
},
|
|
"application/vnd.nokia.radio-presets": {
|
|
source: "iana",
|
|
extensions: ["rpss"]
|
|
},
|
|
"application/vnd.novadigm.edm": {
|
|
source: "iana",
|
|
extensions: ["edm"]
|
|
},
|
|
"application/vnd.novadigm.edx": {
|
|
source: "iana",
|
|
extensions: ["edx"]
|
|
},
|
|
"application/vnd.novadigm.ext": {
|
|
source: "iana",
|
|
extensions: ["ext"]
|
|
},
|
|
"application/vnd.ntt-local.content-share": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ntt-local.file-transfer": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ntt-local.ogw_remote-access": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ntt-local.sip-ta_remote": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ntt-local.sip-ta_tcp_stream": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oasis.opendocument.chart": {
|
|
source: "iana",
|
|
extensions: ["odc"]
|
|
},
|
|
"application/vnd.oasis.opendocument.chart-template": {
|
|
source: "iana",
|
|
extensions: ["otc"]
|
|
},
|
|
"application/vnd.oasis.opendocument.database": {
|
|
source: "iana",
|
|
extensions: ["odb"]
|
|
},
|
|
"application/vnd.oasis.opendocument.formula": {
|
|
source: "iana",
|
|
extensions: ["odf"]
|
|
},
|
|
"application/vnd.oasis.opendocument.formula-template": {
|
|
source: "iana",
|
|
extensions: ["odft"]
|
|
},
|
|
"application/vnd.oasis.opendocument.graphics": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["odg"]
|
|
},
|
|
"application/vnd.oasis.opendocument.graphics-template": {
|
|
source: "iana",
|
|
extensions: ["otg"]
|
|
},
|
|
"application/vnd.oasis.opendocument.image": {
|
|
source: "iana",
|
|
extensions: ["odi"]
|
|
},
|
|
"application/vnd.oasis.opendocument.image-template": {
|
|
source: "iana",
|
|
extensions: ["oti"]
|
|
},
|
|
"application/vnd.oasis.opendocument.presentation": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["odp"]
|
|
},
|
|
"application/vnd.oasis.opendocument.presentation-template": {
|
|
source: "iana",
|
|
extensions: ["otp"]
|
|
},
|
|
"application/vnd.oasis.opendocument.spreadsheet": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["ods"]
|
|
},
|
|
"application/vnd.oasis.opendocument.spreadsheet-template": {
|
|
source: "iana",
|
|
extensions: ["ots"]
|
|
},
|
|
"application/vnd.oasis.opendocument.text": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["odt"]
|
|
},
|
|
"application/vnd.oasis.opendocument.text-master": {
|
|
source: "iana",
|
|
extensions: ["odm"]
|
|
},
|
|
"application/vnd.oasis.opendocument.text-template": {
|
|
source: "iana",
|
|
extensions: ["ott"]
|
|
},
|
|
"application/vnd.oasis.opendocument.text-web": {
|
|
source: "iana",
|
|
extensions: ["oth"]
|
|
},
|
|
"application/vnd.obn": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ocf+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oci.image.manifest.v1+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oftn.l10n+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.contentaccessdownload+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.contentaccessstreaming+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.cspg-hexbinary": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oipf.dae.svg+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.dae.xhtml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.mippvcontrolmessage+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.pae.gem": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oipf.spdiscovery+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.spdlist+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.ueprofile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oipf.userprofile+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.olpc-sugar": {
|
|
source: "iana",
|
|
extensions: ["xo"]
|
|
},
|
|
"application/vnd.oma-scws-config": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma-scws-http-request": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma-scws-http-response": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.bcast.associated-procedure-parameter+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.drm-trigger+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.imd+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.ltkm": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.bcast.notification+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.provisioningtrigger": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.bcast.sgboot": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.bcast.sgdd+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.sgdu": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.bcast.simple-symbol-container": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.bcast.smartcard-trigger+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.sprov+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.bcast.stkm": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.cab-address-book+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.cab-feature-handler+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.cab-pcc+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.cab-subs-invite+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.cab-user-prefs+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.dcd": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.dcdc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.dd2+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["dd2"]
|
|
},
|
|
"application/vnd.oma.drm.risd+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.group-usage-list+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.lwm2m+cbor": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.lwm2m+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.lwm2m+tlv": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.pal+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.poc.detailed-progress-report+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.poc.final-report+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.poc.groups+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.poc.invocation-descriptor+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.poc.optimized-progress-report+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.push": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.oma.scidm.messages+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oma.xcap-directory+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.omads-email+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/vnd.omads-file+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/vnd.omads-folder+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/vnd.omaloc-supl-init": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.onepager": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.onepagertamp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.onepagertamx": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.onepagertat": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.onepagertatp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.onepagertatx": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.openblox.game+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["obgx"]
|
|
},
|
|
"application/vnd.openblox.game-binary": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.openeye.oeb": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.openofficeorg.extension": {
|
|
source: "apache",
|
|
extensions: ["oxt"]
|
|
},
|
|
"application/vnd.openstreetmap.data+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["osm"]
|
|
},
|
|
"application/vnd.opentimestamps.ots": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.custom-properties+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.customxmlproperties+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawing+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawingml.chart+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.extended-properties+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.comments+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["pptx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slide": {
|
|
source: "iana",
|
|
extensions: ["sldx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slide+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slideshow": {
|
|
source: "iana",
|
|
extensions: ["ppsx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.tags+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.template": {
|
|
source: "iana",
|
|
extensions: ["potx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["xlsx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.template": {
|
|
source: "iana",
|
|
extensions: ["xltx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.theme+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.themeoverride+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.vmldrawing": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["docx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.template": {
|
|
source: "iana",
|
|
extensions: ["dotx"]
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-package.core-properties+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.openxmlformats-package.relationships+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oracle.resource+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.orange.indata": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.osa.netdeploy": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.osgeo.mapguide.package": {
|
|
source: "iana",
|
|
extensions: ["mgp"]
|
|
},
|
|
"application/vnd.osgi.bundle": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.osgi.dp": {
|
|
source: "iana",
|
|
extensions: ["dp"]
|
|
},
|
|
"application/vnd.osgi.subsystem": {
|
|
source: "iana",
|
|
extensions: ["esa"]
|
|
},
|
|
"application/vnd.otps.ct-kip+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.oxli.countgraph": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.pagerduty+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.palm": {
|
|
source: "iana",
|
|
extensions: ["pdb", "pqa", "oprc"]
|
|
},
|
|
"application/vnd.panoply": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.paos.xml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.patentdive": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.patientecommsdoc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.pawaafile": {
|
|
source: "iana",
|
|
extensions: ["paw"]
|
|
},
|
|
"application/vnd.pcos": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.pg.format": {
|
|
source: "iana",
|
|
extensions: ["str"]
|
|
},
|
|
"application/vnd.pg.osasli": {
|
|
source: "iana",
|
|
extensions: ["ei6"]
|
|
},
|
|
"application/vnd.piaccess.application-licence": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.picsel": {
|
|
source: "iana",
|
|
extensions: ["efif"]
|
|
},
|
|
"application/vnd.pmi.widget": {
|
|
source: "iana",
|
|
extensions: ["wg"]
|
|
},
|
|
"application/vnd.poc.group-advertisement+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.pocketlearn": {
|
|
source: "iana",
|
|
extensions: ["plf"]
|
|
},
|
|
"application/vnd.powerbuilder6": {
|
|
source: "iana",
|
|
extensions: ["pbd"]
|
|
},
|
|
"application/vnd.powerbuilder6-s": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.powerbuilder7": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.powerbuilder7-s": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.powerbuilder75": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.powerbuilder75-s": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.preminet": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.previewsystems.box": {
|
|
source: "iana",
|
|
extensions: ["box"]
|
|
},
|
|
"application/vnd.proteus.magazine": {
|
|
source: "iana",
|
|
extensions: ["mgz"]
|
|
},
|
|
"application/vnd.psfs": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.publishare-delta-tree": {
|
|
source: "iana",
|
|
extensions: ["qps"]
|
|
},
|
|
"application/vnd.pvi.ptid1": {
|
|
source: "iana",
|
|
extensions: ["ptid"]
|
|
},
|
|
"application/vnd.pwg-multiplexed": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.pwg-xhtml-print+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.qualcomm.brew-app-res": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.quarantainenet": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.quark.quarkxpress": {
|
|
source: "iana",
|
|
extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"]
|
|
},
|
|
"application/vnd.quobject-quoxdocument": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.radisys.moml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-audit+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-audit-conf+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-audit-conn+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-audit-dialog+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-audit-stream+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-conf+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog-base+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog-fax-detect+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog-fax-sendrecv+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog-group+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog-speech+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.radisys.msml-dialog-transform+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.rainstor.data": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.rapid": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.rar": {
|
|
source: "iana",
|
|
extensions: ["rar"]
|
|
},
|
|
"application/vnd.realvnc.bed": {
|
|
source: "iana",
|
|
extensions: ["bed"]
|
|
},
|
|
"application/vnd.recordare.musicxml": {
|
|
source: "iana",
|
|
extensions: ["mxl"]
|
|
},
|
|
"application/vnd.recordare.musicxml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["musicxml"]
|
|
},
|
|
"application/vnd.renlearn.rlprint": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.resilient.logic": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.restful+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.rig.cryptonote": {
|
|
source: "iana",
|
|
extensions: ["cryptonote"]
|
|
},
|
|
"application/vnd.rim.cod": {
|
|
source: "apache",
|
|
extensions: ["cod"]
|
|
},
|
|
"application/vnd.rn-realmedia": {
|
|
source: "apache",
|
|
extensions: ["rm"]
|
|
},
|
|
"application/vnd.rn-realmedia-vbr": {
|
|
source: "apache",
|
|
extensions: ["rmvb"]
|
|
},
|
|
"application/vnd.route66.link66+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["link66"]
|
|
},
|
|
"application/vnd.rs-274x": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ruckus.download": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.s3sms": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sailingtracker.track": {
|
|
source: "iana",
|
|
extensions: ["st"]
|
|
},
|
|
"application/vnd.sar": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sbm.cid": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sbm.mid2": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.scribus": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.3df": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.csf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.doc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.eml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.mht": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.net": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.ppt": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.tiff": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealed.xls": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealedmedia.softseal.html": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sealedmedia.softseal.pdf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.seemail": {
|
|
source: "iana",
|
|
extensions: ["see"]
|
|
},
|
|
"application/vnd.seis+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.sema": {
|
|
source: "iana",
|
|
extensions: ["sema"]
|
|
},
|
|
"application/vnd.semd": {
|
|
source: "iana",
|
|
extensions: ["semd"]
|
|
},
|
|
"application/vnd.semf": {
|
|
source: "iana",
|
|
extensions: ["semf"]
|
|
},
|
|
"application/vnd.shade-save-file": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.shana.informed.formdata": {
|
|
source: "iana",
|
|
extensions: ["ifm"]
|
|
},
|
|
"application/vnd.shana.informed.formtemplate": {
|
|
source: "iana",
|
|
extensions: ["itp"]
|
|
},
|
|
"application/vnd.shana.informed.interchange": {
|
|
source: "iana",
|
|
extensions: ["iif"]
|
|
},
|
|
"application/vnd.shana.informed.package": {
|
|
source: "iana",
|
|
extensions: ["ipk"]
|
|
},
|
|
"application/vnd.shootproof+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.shopkick+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.shp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.shx": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sigrok.session": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.simtech-mindmapper": {
|
|
source: "iana",
|
|
extensions: ["twd", "twds"]
|
|
},
|
|
"application/vnd.siren+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.smaf": {
|
|
source: "iana",
|
|
extensions: ["mmf"]
|
|
},
|
|
"application/vnd.smart.notebook": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.smart.teacher": {
|
|
source: "iana",
|
|
extensions: ["teacher"]
|
|
},
|
|
"application/vnd.snesdev-page-table": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.software602.filler.form+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["fo"]
|
|
},
|
|
"application/vnd.software602.filler.form-xml-zip": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.solent.sdkm+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["sdkm", "sdkd"]
|
|
},
|
|
"application/vnd.spotfire.dxp": {
|
|
source: "iana",
|
|
extensions: ["dxp"]
|
|
},
|
|
"application/vnd.spotfire.sfs": {
|
|
source: "iana",
|
|
extensions: ["sfs"]
|
|
},
|
|
"application/vnd.sqlite3": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sss-cod": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sss-dtf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sss-ntf": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.stardivision.calc": {
|
|
source: "apache",
|
|
extensions: ["sdc"]
|
|
},
|
|
"application/vnd.stardivision.draw": {
|
|
source: "apache",
|
|
extensions: ["sda"]
|
|
},
|
|
"application/vnd.stardivision.impress": {
|
|
source: "apache",
|
|
extensions: ["sdd"]
|
|
},
|
|
"application/vnd.stardivision.math": {
|
|
source: "apache",
|
|
extensions: ["smf"]
|
|
},
|
|
"application/vnd.stardivision.writer": {
|
|
source: "apache",
|
|
extensions: ["sdw", "vor"]
|
|
},
|
|
"application/vnd.stardivision.writer-global": {
|
|
source: "apache",
|
|
extensions: ["sgl"]
|
|
},
|
|
"application/vnd.stepmania.package": {
|
|
source: "iana",
|
|
extensions: ["smzip"]
|
|
},
|
|
"application/vnd.stepmania.stepchart": {
|
|
source: "iana",
|
|
extensions: ["sm"]
|
|
},
|
|
"application/vnd.street-stream": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sun.wadl+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["wadl"]
|
|
},
|
|
"application/vnd.sun.xml.calc": {
|
|
source: "apache",
|
|
extensions: ["sxc"]
|
|
},
|
|
"application/vnd.sun.xml.calc.template": {
|
|
source: "apache",
|
|
extensions: ["stc"]
|
|
},
|
|
"application/vnd.sun.xml.draw": {
|
|
source: "apache",
|
|
extensions: ["sxd"]
|
|
},
|
|
"application/vnd.sun.xml.draw.template": {
|
|
source: "apache",
|
|
extensions: ["std"]
|
|
},
|
|
"application/vnd.sun.xml.impress": {
|
|
source: "apache",
|
|
extensions: ["sxi"]
|
|
},
|
|
"application/vnd.sun.xml.impress.template": {
|
|
source: "apache",
|
|
extensions: ["sti"]
|
|
},
|
|
"application/vnd.sun.xml.math": {
|
|
source: "apache",
|
|
extensions: ["sxm"]
|
|
},
|
|
"application/vnd.sun.xml.writer": {
|
|
source: "apache",
|
|
extensions: ["sxw"]
|
|
},
|
|
"application/vnd.sun.xml.writer.global": {
|
|
source: "apache",
|
|
extensions: ["sxg"]
|
|
},
|
|
"application/vnd.sun.xml.writer.template": {
|
|
source: "apache",
|
|
extensions: ["stw"]
|
|
},
|
|
"application/vnd.sus-calendar": {
|
|
source: "iana",
|
|
extensions: ["sus", "susp"]
|
|
},
|
|
"application/vnd.svd": {
|
|
source: "iana",
|
|
extensions: ["svd"]
|
|
},
|
|
"application/vnd.swiftview-ics": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.sycle+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.syft+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.symbian.install": {
|
|
source: "apache",
|
|
extensions: ["sis", "sisx"]
|
|
},
|
|
"application/vnd.syncml+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["xsm"]
|
|
},
|
|
"application/vnd.syncml.dm+wbxml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
extensions: ["bdm"]
|
|
},
|
|
"application/vnd.syncml.dm+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["xdm"]
|
|
},
|
|
"application/vnd.syncml.dm.notification": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.syncml.dmddf+wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.syncml.dmddf+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["ddf"]
|
|
},
|
|
"application/vnd.syncml.dmtnds+wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.syncml.dmtnds+xml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true
|
|
},
|
|
"application/vnd.syncml.ds.notification": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.tableschema+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.tao.intent-module-archive": {
|
|
source: "iana",
|
|
extensions: ["tao"]
|
|
},
|
|
"application/vnd.tcpdump.pcap": {
|
|
source: "iana",
|
|
extensions: ["pcap", "cap", "dmp"]
|
|
},
|
|
"application/vnd.think-cell.ppttc+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.tmd.mediaflex.api+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.tml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.tmobile-livetv": {
|
|
source: "iana",
|
|
extensions: ["tmo"]
|
|
},
|
|
"application/vnd.tri.onesource": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.trid.tpt": {
|
|
source: "iana",
|
|
extensions: ["tpt"]
|
|
},
|
|
"application/vnd.triscape.mxs": {
|
|
source: "iana",
|
|
extensions: ["mxs"]
|
|
},
|
|
"application/vnd.trueapp": {
|
|
source: "iana",
|
|
extensions: ["tra"]
|
|
},
|
|
"application/vnd.truedoc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ubisoft.webplayer": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ufdl": {
|
|
source: "iana",
|
|
extensions: ["ufd", "ufdl"]
|
|
},
|
|
"application/vnd.uiq.theme": {
|
|
source: "iana",
|
|
extensions: ["utz"]
|
|
},
|
|
"application/vnd.umajin": {
|
|
source: "iana",
|
|
extensions: ["umj"]
|
|
},
|
|
"application/vnd.unity": {
|
|
source: "iana",
|
|
extensions: ["unityweb"]
|
|
},
|
|
"application/vnd.uoml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["uoml"]
|
|
},
|
|
"application/vnd.uplanet.alert": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.alert-wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.bearer-choice": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.bearer-choice-wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.cacheop": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.cacheop-wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.channel": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.channel-wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.list": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.list-wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.listcmd": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.listcmd-wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uplanet.signal": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.uri-map": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.valve.source.material": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.vcx": {
|
|
source: "iana",
|
|
extensions: ["vcx"]
|
|
},
|
|
"application/vnd.vd-study": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.vectorworks": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.vel+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.verimatrix.vcas": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.veritone.aion+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.veryant.thin": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.ves.encrypted": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.vidsoft.vidconference": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.visio": {
|
|
source: "iana",
|
|
extensions: ["vsd", "vst", "vss", "vsw"]
|
|
},
|
|
"application/vnd.visionary": {
|
|
source: "iana",
|
|
extensions: ["vis"]
|
|
},
|
|
"application/vnd.vividence.scriptfile": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.vsf": {
|
|
source: "iana",
|
|
extensions: ["vsf"]
|
|
},
|
|
"application/vnd.wap.sic": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wap.slc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wap.wbxml": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
extensions: ["wbxml"]
|
|
},
|
|
"application/vnd.wap.wmlc": {
|
|
source: "iana",
|
|
extensions: ["wmlc"]
|
|
},
|
|
"application/vnd.wap.wmlscriptc": {
|
|
source: "iana",
|
|
extensions: ["wmlsc"]
|
|
},
|
|
"application/vnd.webturbo": {
|
|
source: "iana",
|
|
extensions: ["wtb"]
|
|
},
|
|
"application/vnd.wfa.dpp": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wfa.p2p": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wfa.wsc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.windows.devicepairing": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wmc": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wmf.bootstrap": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wolfram.mathematica": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wolfram.mathematica.package": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wolfram.player": {
|
|
source: "iana",
|
|
extensions: ["nbp"]
|
|
},
|
|
"application/vnd.wordperfect": {
|
|
source: "iana",
|
|
extensions: ["wpd"]
|
|
},
|
|
"application/vnd.wqd": {
|
|
source: "iana",
|
|
extensions: ["wqd"]
|
|
},
|
|
"application/vnd.wrq-hp3000-labelled": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wt.stf": {
|
|
source: "iana",
|
|
extensions: ["stf"]
|
|
},
|
|
"application/vnd.wv.csp+wbxml": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.wv.csp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.wv.ssp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.xacml+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.xara": {
|
|
source: "iana",
|
|
extensions: ["xar"]
|
|
},
|
|
"application/vnd.xfdl": {
|
|
source: "iana",
|
|
extensions: ["xfdl"]
|
|
},
|
|
"application/vnd.xfdl.webform": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.xmi+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vnd.xmpie.cpkg": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.xmpie.dpkg": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.xmpie.plan": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.xmpie.ppkg": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.xmpie.xlim": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.yamaha.hv-dic": {
|
|
source: "iana",
|
|
extensions: ["hvd"]
|
|
},
|
|
"application/vnd.yamaha.hv-script": {
|
|
source: "iana",
|
|
extensions: ["hvs"]
|
|
},
|
|
"application/vnd.yamaha.hv-voice": {
|
|
source: "iana",
|
|
extensions: ["hvp"]
|
|
},
|
|
"application/vnd.yamaha.openscoreformat": {
|
|
source: "iana",
|
|
extensions: ["osf"]
|
|
},
|
|
"application/vnd.yamaha.openscoreformat.osfpvg+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["osfpvg"]
|
|
},
|
|
"application/vnd.yamaha.remote-setup": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.yamaha.smaf-audio": {
|
|
source: "iana",
|
|
extensions: ["saf"]
|
|
},
|
|
"application/vnd.yamaha.smaf-phrase": {
|
|
source: "iana",
|
|
extensions: ["spf"]
|
|
},
|
|
"application/vnd.yamaha.through-ngn": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.yamaha.tunnel-udpencap": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.yaoweme": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.yellowriver-custom-menu": {
|
|
source: "iana",
|
|
extensions: ["cmp"]
|
|
},
|
|
"application/vnd.youtube.yt": {
|
|
source: "iana"
|
|
},
|
|
"application/vnd.zul": {
|
|
source: "iana",
|
|
extensions: ["zir", "zirz"]
|
|
},
|
|
"application/vnd.zzazz.deck+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["zaz"]
|
|
},
|
|
"application/voicexml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["vxml"]
|
|
},
|
|
"application/voucher-cms+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/vq-rtcpxr": {
|
|
source: "iana"
|
|
},
|
|
"application/wasm": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["wasm"]
|
|
},
|
|
"application/watcherinfo+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["wif"]
|
|
},
|
|
"application/webpush-options+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/whoispp-query": {
|
|
source: "iana"
|
|
},
|
|
"application/whoispp-response": {
|
|
source: "iana"
|
|
},
|
|
"application/widget": {
|
|
source: "iana",
|
|
extensions: ["wgt"]
|
|
},
|
|
"application/winhlp": {
|
|
source: "apache",
|
|
extensions: ["hlp"]
|
|
},
|
|
"application/wita": {
|
|
source: "iana"
|
|
},
|
|
"application/wordperfect5.1": {
|
|
source: "iana"
|
|
},
|
|
"application/wsdl+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["wsdl"]
|
|
},
|
|
"application/wspolicy+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["wspolicy"]
|
|
},
|
|
"application/x-7z-compressed": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["7z"]
|
|
},
|
|
"application/x-abiword": {
|
|
source: "apache",
|
|
extensions: ["abw"]
|
|
},
|
|
"application/x-ace-compressed": {
|
|
source: "apache",
|
|
extensions: ["ace"]
|
|
},
|
|
"application/x-amf": {
|
|
source: "apache"
|
|
},
|
|
"application/x-apple-diskimage": {
|
|
source: "apache",
|
|
extensions: ["dmg"]
|
|
},
|
|
"application/x-arj": {
|
|
compressible: false,
|
|
extensions: ["arj"]
|
|
},
|
|
"application/x-authorware-bin": {
|
|
source: "apache",
|
|
extensions: ["aab", "x32", "u32", "vox"]
|
|
},
|
|
"application/x-authorware-map": {
|
|
source: "apache",
|
|
extensions: ["aam"]
|
|
},
|
|
"application/x-authorware-seg": {
|
|
source: "apache",
|
|
extensions: ["aas"]
|
|
},
|
|
"application/x-bcpio": {
|
|
source: "apache",
|
|
extensions: ["bcpio"]
|
|
},
|
|
"application/x-bdoc": {
|
|
compressible: false,
|
|
extensions: ["bdoc"]
|
|
},
|
|
"application/x-bittorrent": {
|
|
source: "apache",
|
|
extensions: ["torrent"]
|
|
},
|
|
"application/x-blorb": {
|
|
source: "apache",
|
|
extensions: ["blb", "blorb"]
|
|
},
|
|
"application/x-bzip": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["bz"]
|
|
},
|
|
"application/x-bzip2": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["bz2", "boz"]
|
|
},
|
|
"application/x-cbr": {
|
|
source: "apache",
|
|
extensions: ["cbr", "cba", "cbt", "cbz", "cb7"]
|
|
},
|
|
"application/x-cdlink": {
|
|
source: "apache",
|
|
extensions: ["vcd"]
|
|
},
|
|
"application/x-cfs-compressed": {
|
|
source: "apache",
|
|
extensions: ["cfs"]
|
|
},
|
|
"application/x-chat": {
|
|
source: "apache",
|
|
extensions: ["chat"]
|
|
},
|
|
"application/x-chess-pgn": {
|
|
source: "apache",
|
|
extensions: ["pgn"]
|
|
},
|
|
"application/x-chrome-extension": {
|
|
extensions: ["crx"]
|
|
},
|
|
"application/x-cocoa": {
|
|
source: "nginx",
|
|
extensions: ["cco"]
|
|
},
|
|
"application/x-compress": {
|
|
source: "apache"
|
|
},
|
|
"application/x-conference": {
|
|
source: "apache",
|
|
extensions: ["nsc"]
|
|
},
|
|
"application/x-cpio": {
|
|
source: "apache",
|
|
extensions: ["cpio"]
|
|
},
|
|
"application/x-csh": {
|
|
source: "apache",
|
|
extensions: ["csh"]
|
|
},
|
|
"application/x-deb": {
|
|
compressible: false
|
|
},
|
|
"application/x-debian-package": {
|
|
source: "apache",
|
|
extensions: ["deb", "udeb"]
|
|
},
|
|
"application/x-dgc-compressed": {
|
|
source: "apache",
|
|
extensions: ["dgc"]
|
|
},
|
|
"application/x-director": {
|
|
source: "apache",
|
|
extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"]
|
|
},
|
|
"application/x-doom": {
|
|
source: "apache",
|
|
extensions: ["wad"]
|
|
},
|
|
"application/x-dtbncx+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["ncx"]
|
|
},
|
|
"application/x-dtbook+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["dtb"]
|
|
},
|
|
"application/x-dtbresource+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["res"]
|
|
},
|
|
"application/x-dvi": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["dvi"]
|
|
},
|
|
"application/x-envoy": {
|
|
source: "apache",
|
|
extensions: ["evy"]
|
|
},
|
|
"application/x-eva": {
|
|
source: "apache",
|
|
extensions: ["eva"]
|
|
},
|
|
"application/x-font-bdf": {
|
|
source: "apache",
|
|
extensions: ["bdf"]
|
|
},
|
|
"application/x-font-dos": {
|
|
source: "apache"
|
|
},
|
|
"application/x-font-framemaker": {
|
|
source: "apache"
|
|
},
|
|
"application/x-font-ghostscript": {
|
|
source: "apache",
|
|
extensions: ["gsf"]
|
|
},
|
|
"application/x-font-libgrx": {
|
|
source: "apache"
|
|
},
|
|
"application/x-font-linux-psf": {
|
|
source: "apache",
|
|
extensions: ["psf"]
|
|
},
|
|
"application/x-font-pcf": {
|
|
source: "apache",
|
|
extensions: ["pcf"]
|
|
},
|
|
"application/x-font-snf": {
|
|
source: "apache",
|
|
extensions: ["snf"]
|
|
},
|
|
"application/x-font-speedo": {
|
|
source: "apache"
|
|
},
|
|
"application/x-font-sunos-news": {
|
|
source: "apache"
|
|
},
|
|
"application/x-font-type1": {
|
|
source: "apache",
|
|
extensions: ["pfa", "pfb", "pfm", "afm"]
|
|
},
|
|
"application/x-font-vfont": {
|
|
source: "apache"
|
|
},
|
|
"application/x-freearc": {
|
|
source: "apache",
|
|
extensions: ["arc"]
|
|
},
|
|
"application/x-futuresplash": {
|
|
source: "apache",
|
|
extensions: ["spl"]
|
|
},
|
|
"application/x-gca-compressed": {
|
|
source: "apache",
|
|
extensions: ["gca"]
|
|
},
|
|
"application/x-glulx": {
|
|
source: "apache",
|
|
extensions: ["ulx"]
|
|
},
|
|
"application/x-gnumeric": {
|
|
source: "apache",
|
|
extensions: ["gnumeric"]
|
|
},
|
|
"application/x-gramps-xml": {
|
|
source: "apache",
|
|
extensions: ["gramps"]
|
|
},
|
|
"application/x-gtar": {
|
|
source: "apache",
|
|
extensions: ["gtar"]
|
|
},
|
|
"application/x-gzip": {
|
|
source: "apache"
|
|
},
|
|
"application/x-hdf": {
|
|
source: "apache",
|
|
extensions: ["hdf"]
|
|
},
|
|
"application/x-httpd-php": {
|
|
compressible: true,
|
|
extensions: ["php"]
|
|
},
|
|
"application/x-install-instructions": {
|
|
source: "apache",
|
|
extensions: ["install"]
|
|
},
|
|
"application/x-iso9660-image": {
|
|
source: "apache",
|
|
extensions: ["iso"]
|
|
},
|
|
"application/x-iwork-keynote-sffkey": {
|
|
extensions: ["key"]
|
|
},
|
|
"application/x-iwork-numbers-sffnumbers": {
|
|
extensions: ["numbers"]
|
|
},
|
|
"application/x-iwork-pages-sffpages": {
|
|
extensions: ["pages"]
|
|
},
|
|
"application/x-java-archive-diff": {
|
|
source: "nginx",
|
|
extensions: ["jardiff"]
|
|
},
|
|
"application/x-java-jnlp-file": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["jnlp"]
|
|
},
|
|
"application/x-javascript": {
|
|
compressible: true
|
|
},
|
|
"application/x-keepass2": {
|
|
extensions: ["kdbx"]
|
|
},
|
|
"application/x-latex": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["latex"]
|
|
},
|
|
"application/x-lua-bytecode": {
|
|
extensions: ["luac"]
|
|
},
|
|
"application/x-lzh-compressed": {
|
|
source: "apache",
|
|
extensions: ["lzh", "lha"]
|
|
},
|
|
"application/x-makeself": {
|
|
source: "nginx",
|
|
extensions: ["run"]
|
|
},
|
|
"application/x-mie": {
|
|
source: "apache",
|
|
extensions: ["mie"]
|
|
},
|
|
"application/x-mobipocket-ebook": {
|
|
source: "apache",
|
|
extensions: ["prc", "mobi"]
|
|
},
|
|
"application/x-mpegurl": {
|
|
compressible: false
|
|
},
|
|
"application/x-ms-application": {
|
|
source: "apache",
|
|
extensions: ["application"]
|
|
},
|
|
"application/x-ms-shortcut": {
|
|
source: "apache",
|
|
extensions: ["lnk"]
|
|
},
|
|
"application/x-ms-wmd": {
|
|
source: "apache",
|
|
extensions: ["wmd"]
|
|
},
|
|
"application/x-ms-wmz": {
|
|
source: "apache",
|
|
extensions: ["wmz"]
|
|
},
|
|
"application/x-ms-xbap": {
|
|
source: "apache",
|
|
extensions: ["xbap"]
|
|
},
|
|
"application/x-msaccess": {
|
|
source: "apache",
|
|
extensions: ["mdb"]
|
|
},
|
|
"application/x-msbinder": {
|
|
source: "apache",
|
|
extensions: ["obd"]
|
|
},
|
|
"application/x-mscardfile": {
|
|
source: "apache",
|
|
extensions: ["crd"]
|
|
},
|
|
"application/x-msclip": {
|
|
source: "apache",
|
|
extensions: ["clp"]
|
|
},
|
|
"application/x-msdos-program": {
|
|
extensions: ["exe"]
|
|
},
|
|
"application/x-msdownload": {
|
|
source: "apache",
|
|
extensions: ["exe", "dll", "com", "bat", "msi"]
|
|
},
|
|
"application/x-msmediaview": {
|
|
source: "apache",
|
|
extensions: ["mvb", "m13", "m14"]
|
|
},
|
|
"application/x-msmetafile": {
|
|
source: "apache",
|
|
extensions: ["wmf", "wmz", "emf", "emz"]
|
|
},
|
|
"application/x-msmoney": {
|
|
source: "apache",
|
|
extensions: ["mny"]
|
|
},
|
|
"application/x-mspublisher": {
|
|
source: "apache",
|
|
extensions: ["pub"]
|
|
},
|
|
"application/x-msschedule": {
|
|
source: "apache",
|
|
extensions: ["scd"]
|
|
},
|
|
"application/x-msterminal": {
|
|
source: "apache",
|
|
extensions: ["trm"]
|
|
},
|
|
"application/x-mswrite": {
|
|
source: "apache",
|
|
extensions: ["wri"]
|
|
},
|
|
"application/x-netcdf": {
|
|
source: "apache",
|
|
extensions: ["nc", "cdf"]
|
|
},
|
|
"application/x-ns-proxy-autoconfig": {
|
|
compressible: true,
|
|
extensions: ["pac"]
|
|
},
|
|
"application/x-nzb": {
|
|
source: "apache",
|
|
extensions: ["nzb"]
|
|
},
|
|
"application/x-perl": {
|
|
source: "nginx",
|
|
extensions: ["pl", "pm"]
|
|
},
|
|
"application/x-pilot": {
|
|
source: "nginx",
|
|
extensions: ["prc", "pdb"]
|
|
},
|
|
"application/x-pkcs12": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["p12", "pfx"]
|
|
},
|
|
"application/x-pkcs7-certificates": {
|
|
source: "apache",
|
|
extensions: ["p7b", "spc"]
|
|
},
|
|
"application/x-pkcs7-certreqresp": {
|
|
source: "apache",
|
|
extensions: ["p7r"]
|
|
},
|
|
"application/x-pki-message": {
|
|
source: "iana"
|
|
},
|
|
"application/x-rar-compressed": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["rar"]
|
|
},
|
|
"application/x-redhat-package-manager": {
|
|
source: "nginx",
|
|
extensions: ["rpm"]
|
|
},
|
|
"application/x-research-info-systems": {
|
|
source: "apache",
|
|
extensions: ["ris"]
|
|
},
|
|
"application/x-sea": {
|
|
source: "nginx",
|
|
extensions: ["sea"]
|
|
},
|
|
"application/x-sh": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["sh"]
|
|
},
|
|
"application/x-shar": {
|
|
source: "apache",
|
|
extensions: ["shar"]
|
|
},
|
|
"application/x-shockwave-flash": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["swf"]
|
|
},
|
|
"application/x-silverlight-app": {
|
|
source: "apache",
|
|
extensions: ["xap"]
|
|
},
|
|
"application/x-sql": {
|
|
source: "apache",
|
|
extensions: ["sql"]
|
|
},
|
|
"application/x-stuffit": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["sit"]
|
|
},
|
|
"application/x-stuffitx": {
|
|
source: "apache",
|
|
extensions: ["sitx"]
|
|
},
|
|
"application/x-subrip": {
|
|
source: "apache",
|
|
extensions: ["srt"]
|
|
},
|
|
"application/x-sv4cpio": {
|
|
source: "apache",
|
|
extensions: ["sv4cpio"]
|
|
},
|
|
"application/x-sv4crc": {
|
|
source: "apache",
|
|
extensions: ["sv4crc"]
|
|
},
|
|
"application/x-t3vm-image": {
|
|
source: "apache",
|
|
extensions: ["t3"]
|
|
},
|
|
"application/x-tads": {
|
|
source: "apache",
|
|
extensions: ["gam"]
|
|
},
|
|
"application/x-tar": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["tar"]
|
|
},
|
|
"application/x-tcl": {
|
|
source: "apache",
|
|
extensions: ["tcl", "tk"]
|
|
},
|
|
"application/x-tex": {
|
|
source: "apache",
|
|
extensions: ["tex"]
|
|
},
|
|
"application/x-tex-tfm": {
|
|
source: "apache",
|
|
extensions: ["tfm"]
|
|
},
|
|
"application/x-texinfo": {
|
|
source: "apache",
|
|
extensions: ["texinfo", "texi"]
|
|
},
|
|
"application/x-tgif": {
|
|
source: "apache",
|
|
extensions: ["obj"]
|
|
},
|
|
"application/x-ustar": {
|
|
source: "apache",
|
|
extensions: ["ustar"]
|
|
},
|
|
"application/x-virtualbox-hdd": {
|
|
compressible: true,
|
|
extensions: ["hdd"]
|
|
},
|
|
"application/x-virtualbox-ova": {
|
|
compressible: true,
|
|
extensions: ["ova"]
|
|
},
|
|
"application/x-virtualbox-ovf": {
|
|
compressible: true,
|
|
extensions: ["ovf"]
|
|
},
|
|
"application/x-virtualbox-vbox": {
|
|
compressible: true,
|
|
extensions: ["vbox"]
|
|
},
|
|
"application/x-virtualbox-vbox-extpack": {
|
|
compressible: false,
|
|
extensions: ["vbox-extpack"]
|
|
},
|
|
"application/x-virtualbox-vdi": {
|
|
compressible: true,
|
|
extensions: ["vdi"]
|
|
},
|
|
"application/x-virtualbox-vhd": {
|
|
compressible: true,
|
|
extensions: ["vhd"]
|
|
},
|
|
"application/x-virtualbox-vmdk": {
|
|
compressible: true,
|
|
extensions: ["vmdk"]
|
|
},
|
|
"application/x-wais-source": {
|
|
source: "apache",
|
|
extensions: ["src"]
|
|
},
|
|
"application/x-web-app-manifest+json": {
|
|
compressible: true,
|
|
extensions: ["webapp"]
|
|
},
|
|
"application/x-www-form-urlencoded": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/x-x509-ca-cert": {
|
|
source: "iana",
|
|
extensions: ["der", "crt", "pem"]
|
|
},
|
|
"application/x-x509-ca-ra-cert": {
|
|
source: "iana"
|
|
},
|
|
"application/x-x509-next-ca-cert": {
|
|
source: "iana"
|
|
},
|
|
"application/x-xfig": {
|
|
source: "apache",
|
|
extensions: ["fig"]
|
|
},
|
|
"application/x-xliff+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["xlf"]
|
|
},
|
|
"application/x-xpinstall": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["xpi"]
|
|
},
|
|
"application/x-xz": {
|
|
source: "apache",
|
|
extensions: ["xz"]
|
|
},
|
|
"application/x-zmachine": {
|
|
source: "apache",
|
|
extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"]
|
|
},
|
|
"application/x400-bp": {
|
|
source: "iana"
|
|
},
|
|
"application/xacml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/xaml+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["xaml"]
|
|
},
|
|
"application/xcap-att+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xav"]
|
|
},
|
|
"application/xcap-caps+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xca"]
|
|
},
|
|
"application/xcap-diff+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xdf"]
|
|
},
|
|
"application/xcap-el+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xel"]
|
|
},
|
|
"application/xcap-error+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/xcap-ns+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xns"]
|
|
},
|
|
"application/xcon-conference-info+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/xcon-conference-info-diff+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/xenc+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xenc"]
|
|
},
|
|
"application/xhtml+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xhtml", "xht"]
|
|
},
|
|
"application/xhtml-voice+xml": {
|
|
source: "apache",
|
|
compressible: true
|
|
},
|
|
"application/xliff+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xlf"]
|
|
},
|
|
"application/xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xml", "xsl", "xsd", "rng"]
|
|
},
|
|
"application/xml-dtd": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["dtd"]
|
|
},
|
|
"application/xml-external-parsed-entity": {
|
|
source: "iana"
|
|
},
|
|
"application/xml-patch+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/xmpp+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/xop+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xop"]
|
|
},
|
|
"application/xproc+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["xpl"]
|
|
},
|
|
"application/xslt+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xsl", "xslt"]
|
|
},
|
|
"application/xspf+xml": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["xspf"]
|
|
},
|
|
"application/xv+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["mxml", "xhvml", "xvml", "xvm"]
|
|
},
|
|
"application/yang": {
|
|
source: "iana",
|
|
extensions: ["yang"]
|
|
},
|
|
"application/yang-data+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/yang-data+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/yang-patch+json": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/yang-patch+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"application/yin+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["yin"]
|
|
},
|
|
"application/zip": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["zip"]
|
|
},
|
|
"application/zlib": {
|
|
source: "iana"
|
|
},
|
|
"application/zstd": {
|
|
source: "iana"
|
|
},
|
|
"audio/1d-interleaved-parityfec": {
|
|
source: "iana"
|
|
},
|
|
"audio/32kadpcm": {
|
|
source: "iana"
|
|
},
|
|
"audio/3gpp": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["3gpp"]
|
|
},
|
|
"audio/3gpp2": {
|
|
source: "iana"
|
|
},
|
|
"audio/aac": {
|
|
source: "iana"
|
|
},
|
|
"audio/ac3": {
|
|
source: "iana"
|
|
},
|
|
"audio/adpcm": {
|
|
source: "apache",
|
|
extensions: ["adp"]
|
|
},
|
|
"audio/amr": {
|
|
source: "iana",
|
|
extensions: ["amr"]
|
|
},
|
|
"audio/amr-wb": {
|
|
source: "iana"
|
|
},
|
|
"audio/amr-wb+": {
|
|
source: "iana"
|
|
},
|
|
"audio/aptx": {
|
|
source: "iana"
|
|
},
|
|
"audio/asc": {
|
|
source: "iana"
|
|
},
|
|
"audio/atrac-advanced-lossless": {
|
|
source: "iana"
|
|
},
|
|
"audio/atrac-x": {
|
|
source: "iana"
|
|
},
|
|
"audio/atrac3": {
|
|
source: "iana"
|
|
},
|
|
"audio/basic": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["au", "snd"]
|
|
},
|
|
"audio/bv16": {
|
|
source: "iana"
|
|
},
|
|
"audio/bv32": {
|
|
source: "iana"
|
|
},
|
|
"audio/clearmode": {
|
|
source: "iana"
|
|
},
|
|
"audio/cn": {
|
|
source: "iana"
|
|
},
|
|
"audio/dat12": {
|
|
source: "iana"
|
|
},
|
|
"audio/dls": {
|
|
source: "iana"
|
|
},
|
|
"audio/dsr-es201108": {
|
|
source: "iana"
|
|
},
|
|
"audio/dsr-es202050": {
|
|
source: "iana"
|
|
},
|
|
"audio/dsr-es202211": {
|
|
source: "iana"
|
|
},
|
|
"audio/dsr-es202212": {
|
|
source: "iana"
|
|
},
|
|
"audio/dv": {
|
|
source: "iana"
|
|
},
|
|
"audio/dvi4": {
|
|
source: "iana"
|
|
},
|
|
"audio/eac3": {
|
|
source: "iana"
|
|
},
|
|
"audio/encaprtp": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrc": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrc-qcp": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrc0": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrc1": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcb": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcb0": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcb1": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcnw": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcnw0": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcnw1": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcwb": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcwb0": {
|
|
source: "iana"
|
|
},
|
|
"audio/evrcwb1": {
|
|
source: "iana"
|
|
},
|
|
"audio/evs": {
|
|
source: "iana"
|
|
},
|
|
"audio/flexfec": {
|
|
source: "iana"
|
|
},
|
|
"audio/fwdred": {
|
|
source: "iana"
|
|
},
|
|
"audio/g711-0": {
|
|
source: "iana"
|
|
},
|
|
"audio/g719": {
|
|
source: "iana"
|
|
},
|
|
"audio/g722": {
|
|
source: "iana"
|
|
},
|
|
"audio/g7221": {
|
|
source: "iana"
|
|
},
|
|
"audio/g723": {
|
|
source: "iana"
|
|
},
|
|
"audio/g726-16": {
|
|
source: "iana"
|
|
},
|
|
"audio/g726-24": {
|
|
source: "iana"
|
|
},
|
|
"audio/g726-32": {
|
|
source: "iana"
|
|
},
|
|
"audio/g726-40": {
|
|
source: "iana"
|
|
},
|
|
"audio/g728": {
|
|
source: "iana"
|
|
},
|
|
"audio/g729": {
|
|
source: "iana"
|
|
},
|
|
"audio/g7291": {
|
|
source: "iana"
|
|
},
|
|
"audio/g729d": {
|
|
source: "iana"
|
|
},
|
|
"audio/g729e": {
|
|
source: "iana"
|
|
},
|
|
"audio/gsm": {
|
|
source: "iana"
|
|
},
|
|
"audio/gsm-efr": {
|
|
source: "iana"
|
|
},
|
|
"audio/gsm-hr-08": {
|
|
source: "iana"
|
|
},
|
|
"audio/ilbc": {
|
|
source: "iana"
|
|
},
|
|
"audio/ip-mr_v2.5": {
|
|
source: "iana"
|
|
},
|
|
"audio/isac": {
|
|
source: "apache"
|
|
},
|
|
"audio/l16": {
|
|
source: "iana"
|
|
},
|
|
"audio/l20": {
|
|
source: "iana"
|
|
},
|
|
"audio/l24": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"audio/l8": {
|
|
source: "iana"
|
|
},
|
|
"audio/lpc": {
|
|
source: "iana"
|
|
},
|
|
"audio/melp": {
|
|
source: "iana"
|
|
},
|
|
"audio/melp1200": {
|
|
source: "iana"
|
|
},
|
|
"audio/melp2400": {
|
|
source: "iana"
|
|
},
|
|
"audio/melp600": {
|
|
source: "iana"
|
|
},
|
|
"audio/mhas": {
|
|
source: "iana"
|
|
},
|
|
"audio/midi": {
|
|
source: "apache",
|
|
extensions: ["mid", "midi", "kar", "rmi"]
|
|
},
|
|
"audio/mobile-xmf": {
|
|
source: "iana",
|
|
extensions: ["mxmf"]
|
|
},
|
|
"audio/mp3": {
|
|
compressible: false,
|
|
extensions: ["mp3"]
|
|
},
|
|
"audio/mp4": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["m4a", "mp4a"]
|
|
},
|
|
"audio/mp4a-latm": {
|
|
source: "iana"
|
|
},
|
|
"audio/mpa": {
|
|
source: "iana"
|
|
},
|
|
"audio/mpa-robust": {
|
|
source: "iana"
|
|
},
|
|
"audio/mpeg": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"]
|
|
},
|
|
"audio/mpeg4-generic": {
|
|
source: "iana"
|
|
},
|
|
"audio/musepack": {
|
|
source: "apache"
|
|
},
|
|
"audio/ogg": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["oga", "ogg", "spx", "opus"]
|
|
},
|
|
"audio/opus": {
|
|
source: "iana"
|
|
},
|
|
"audio/parityfec": {
|
|
source: "iana"
|
|
},
|
|
"audio/pcma": {
|
|
source: "iana"
|
|
},
|
|
"audio/pcma-wb": {
|
|
source: "iana"
|
|
},
|
|
"audio/pcmu": {
|
|
source: "iana"
|
|
},
|
|
"audio/pcmu-wb": {
|
|
source: "iana"
|
|
},
|
|
"audio/prs.sid": {
|
|
source: "iana"
|
|
},
|
|
"audio/qcelp": {
|
|
source: "iana"
|
|
},
|
|
"audio/raptorfec": {
|
|
source: "iana"
|
|
},
|
|
"audio/red": {
|
|
source: "iana"
|
|
},
|
|
"audio/rtp-enc-aescm128": {
|
|
source: "iana"
|
|
},
|
|
"audio/rtp-midi": {
|
|
source: "iana"
|
|
},
|
|
"audio/rtploopback": {
|
|
source: "iana"
|
|
},
|
|
"audio/rtx": {
|
|
source: "iana"
|
|
},
|
|
"audio/s3m": {
|
|
source: "apache",
|
|
extensions: ["s3m"]
|
|
},
|
|
"audio/scip": {
|
|
source: "iana"
|
|
},
|
|
"audio/silk": {
|
|
source: "apache",
|
|
extensions: ["sil"]
|
|
},
|
|
"audio/smv": {
|
|
source: "iana"
|
|
},
|
|
"audio/smv-qcp": {
|
|
source: "iana"
|
|
},
|
|
"audio/smv0": {
|
|
source: "iana"
|
|
},
|
|
"audio/sofa": {
|
|
source: "iana"
|
|
},
|
|
"audio/sp-midi": {
|
|
source: "iana"
|
|
},
|
|
"audio/speex": {
|
|
source: "iana"
|
|
},
|
|
"audio/t140c": {
|
|
source: "iana"
|
|
},
|
|
"audio/t38": {
|
|
source: "iana"
|
|
},
|
|
"audio/telephone-event": {
|
|
source: "iana"
|
|
},
|
|
"audio/tetra_acelp": {
|
|
source: "iana"
|
|
},
|
|
"audio/tetra_acelp_bb": {
|
|
source: "iana"
|
|
},
|
|
"audio/tone": {
|
|
source: "iana"
|
|
},
|
|
"audio/tsvcis": {
|
|
source: "iana"
|
|
},
|
|
"audio/uemclip": {
|
|
source: "iana"
|
|
},
|
|
"audio/ulpfec": {
|
|
source: "iana"
|
|
},
|
|
"audio/usac": {
|
|
source: "iana"
|
|
},
|
|
"audio/vdvi": {
|
|
source: "iana"
|
|
},
|
|
"audio/vmr-wb": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.3gpp.iufp": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.4sb": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.audiokoz": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.celp": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.cisco.nse": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.cmles.radio-events": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.cns.anp1": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.cns.inf1": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dece.audio": {
|
|
source: "iana",
|
|
extensions: ["uva", "uvva"]
|
|
},
|
|
"audio/vnd.digital-winds": {
|
|
source: "iana",
|
|
extensions: ["eol"]
|
|
},
|
|
"audio/vnd.dlna.adts": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.heaac.1": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.heaac.2": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.mlp": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.mps": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.pl2": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.pl2x": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.pl2z": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dolby.pulse.1": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dra": {
|
|
source: "iana",
|
|
extensions: ["dra"]
|
|
},
|
|
"audio/vnd.dts": {
|
|
source: "iana",
|
|
extensions: ["dts"]
|
|
},
|
|
"audio/vnd.dts.hd": {
|
|
source: "iana",
|
|
extensions: ["dtshd"]
|
|
},
|
|
"audio/vnd.dts.uhd": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.dvb.file": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.everad.plj": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.hns.audio": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.lucent.voice": {
|
|
source: "iana",
|
|
extensions: ["lvp"]
|
|
},
|
|
"audio/vnd.ms-playready.media.pya": {
|
|
source: "iana",
|
|
extensions: ["pya"]
|
|
},
|
|
"audio/vnd.nokia.mobile-xmf": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.nortel.vbk": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.nuera.ecelp4800": {
|
|
source: "iana",
|
|
extensions: ["ecelp4800"]
|
|
},
|
|
"audio/vnd.nuera.ecelp7470": {
|
|
source: "iana",
|
|
extensions: ["ecelp7470"]
|
|
},
|
|
"audio/vnd.nuera.ecelp9600": {
|
|
source: "iana",
|
|
extensions: ["ecelp9600"]
|
|
},
|
|
"audio/vnd.octel.sbc": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.presonus.multitrack": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.qcelp": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.rhetorex.32kadpcm": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.rip": {
|
|
source: "iana",
|
|
extensions: ["rip"]
|
|
},
|
|
"audio/vnd.rn-realaudio": {
|
|
compressible: false
|
|
},
|
|
"audio/vnd.sealedmedia.softseal.mpeg": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.vmx.cvsd": {
|
|
source: "iana"
|
|
},
|
|
"audio/vnd.wave": {
|
|
compressible: false
|
|
},
|
|
"audio/vorbis": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"audio/vorbis-config": {
|
|
source: "iana"
|
|
},
|
|
"audio/wav": {
|
|
compressible: false,
|
|
extensions: ["wav"]
|
|
},
|
|
"audio/wave": {
|
|
compressible: false,
|
|
extensions: ["wav"]
|
|
},
|
|
"audio/webm": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["weba"]
|
|
},
|
|
"audio/x-aac": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["aac"]
|
|
},
|
|
"audio/x-aiff": {
|
|
source: "apache",
|
|
extensions: ["aif", "aiff", "aifc"]
|
|
},
|
|
"audio/x-caf": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["caf"]
|
|
},
|
|
"audio/x-flac": {
|
|
source: "apache",
|
|
extensions: ["flac"]
|
|
},
|
|
"audio/x-m4a": {
|
|
source: "nginx",
|
|
extensions: ["m4a"]
|
|
},
|
|
"audio/x-matroska": {
|
|
source: "apache",
|
|
extensions: ["mka"]
|
|
},
|
|
"audio/x-mpegurl": {
|
|
source: "apache",
|
|
extensions: ["m3u"]
|
|
},
|
|
"audio/x-ms-wax": {
|
|
source: "apache",
|
|
extensions: ["wax"]
|
|
},
|
|
"audio/x-ms-wma": {
|
|
source: "apache",
|
|
extensions: ["wma"]
|
|
},
|
|
"audio/x-pn-realaudio": {
|
|
source: "apache",
|
|
extensions: ["ram", "ra"]
|
|
},
|
|
"audio/x-pn-realaudio-plugin": {
|
|
source: "apache",
|
|
extensions: ["rmp"]
|
|
},
|
|
"audio/x-realaudio": {
|
|
source: "nginx",
|
|
extensions: ["ra"]
|
|
},
|
|
"audio/x-tta": {
|
|
source: "apache"
|
|
},
|
|
"audio/x-wav": {
|
|
source: "apache",
|
|
extensions: ["wav"]
|
|
},
|
|
"audio/xm": {
|
|
source: "apache",
|
|
extensions: ["xm"]
|
|
},
|
|
"chemical/x-cdx": {
|
|
source: "apache",
|
|
extensions: ["cdx"]
|
|
},
|
|
"chemical/x-cif": {
|
|
source: "apache",
|
|
extensions: ["cif"]
|
|
},
|
|
"chemical/x-cmdf": {
|
|
source: "apache",
|
|
extensions: ["cmdf"]
|
|
},
|
|
"chemical/x-cml": {
|
|
source: "apache",
|
|
extensions: ["cml"]
|
|
},
|
|
"chemical/x-csml": {
|
|
source: "apache",
|
|
extensions: ["csml"]
|
|
},
|
|
"chemical/x-pdb": {
|
|
source: "apache"
|
|
},
|
|
"chemical/x-xyz": {
|
|
source: "apache",
|
|
extensions: ["xyz"]
|
|
},
|
|
"font/collection": {
|
|
source: "iana",
|
|
extensions: ["ttc"]
|
|
},
|
|
"font/otf": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["otf"]
|
|
},
|
|
"font/sfnt": {
|
|
source: "iana"
|
|
},
|
|
"font/ttf": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ttf"]
|
|
},
|
|
"font/woff": {
|
|
source: "iana",
|
|
extensions: ["woff"]
|
|
},
|
|
"font/woff2": {
|
|
source: "iana",
|
|
extensions: ["woff2"]
|
|
},
|
|
"image/aces": {
|
|
source: "iana",
|
|
extensions: ["exr"]
|
|
},
|
|
"image/apng": {
|
|
compressible: false,
|
|
extensions: ["apng"]
|
|
},
|
|
"image/avci": {
|
|
source: "iana",
|
|
extensions: ["avci"]
|
|
},
|
|
"image/avcs": {
|
|
source: "iana",
|
|
extensions: ["avcs"]
|
|
},
|
|
"image/avif": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["avif"]
|
|
},
|
|
"image/bmp": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["bmp"]
|
|
},
|
|
"image/cgm": {
|
|
source: "iana",
|
|
extensions: ["cgm"]
|
|
},
|
|
"image/dicom-rle": {
|
|
source: "iana",
|
|
extensions: ["drle"]
|
|
},
|
|
"image/emf": {
|
|
source: "iana",
|
|
extensions: ["emf"]
|
|
},
|
|
"image/fits": {
|
|
source: "iana",
|
|
extensions: ["fits"]
|
|
},
|
|
"image/g3fax": {
|
|
source: "iana",
|
|
extensions: ["g3"]
|
|
},
|
|
"image/gif": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["gif"]
|
|
},
|
|
"image/heic": {
|
|
source: "iana",
|
|
extensions: ["heic"]
|
|
},
|
|
"image/heic-sequence": {
|
|
source: "iana",
|
|
extensions: ["heics"]
|
|
},
|
|
"image/heif": {
|
|
source: "iana",
|
|
extensions: ["heif"]
|
|
},
|
|
"image/heif-sequence": {
|
|
source: "iana",
|
|
extensions: ["heifs"]
|
|
},
|
|
"image/hej2k": {
|
|
source: "iana",
|
|
extensions: ["hej2"]
|
|
},
|
|
"image/hsj2": {
|
|
source: "iana",
|
|
extensions: ["hsj2"]
|
|
},
|
|
"image/ief": {
|
|
source: "iana",
|
|
extensions: ["ief"]
|
|
},
|
|
"image/jls": {
|
|
source: "iana",
|
|
extensions: ["jls"]
|
|
},
|
|
"image/jp2": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["jp2", "jpg2"]
|
|
},
|
|
"image/jpeg": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["jpeg", "jpg", "jpe"]
|
|
},
|
|
"image/jph": {
|
|
source: "iana",
|
|
extensions: ["jph"]
|
|
},
|
|
"image/jphc": {
|
|
source: "iana",
|
|
extensions: ["jhc"]
|
|
},
|
|
"image/jpm": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["jpm"]
|
|
},
|
|
"image/jpx": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["jpx", "jpf"]
|
|
},
|
|
"image/jxr": {
|
|
source: "iana",
|
|
extensions: ["jxr"]
|
|
},
|
|
"image/jxra": {
|
|
source: "iana",
|
|
extensions: ["jxra"]
|
|
},
|
|
"image/jxrs": {
|
|
source: "iana",
|
|
extensions: ["jxrs"]
|
|
},
|
|
"image/jxs": {
|
|
source: "iana",
|
|
extensions: ["jxs"]
|
|
},
|
|
"image/jxsc": {
|
|
source: "iana",
|
|
extensions: ["jxsc"]
|
|
},
|
|
"image/jxsi": {
|
|
source: "iana",
|
|
extensions: ["jxsi"]
|
|
},
|
|
"image/jxss": {
|
|
source: "iana",
|
|
extensions: ["jxss"]
|
|
},
|
|
"image/ktx": {
|
|
source: "iana",
|
|
extensions: ["ktx"]
|
|
},
|
|
"image/ktx2": {
|
|
source: "iana",
|
|
extensions: ["ktx2"]
|
|
},
|
|
"image/naplps": {
|
|
source: "iana"
|
|
},
|
|
"image/pjpeg": {
|
|
compressible: false
|
|
},
|
|
"image/png": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["png"]
|
|
},
|
|
"image/prs.btif": {
|
|
source: "iana",
|
|
extensions: ["btif"]
|
|
},
|
|
"image/prs.pti": {
|
|
source: "iana",
|
|
extensions: ["pti"]
|
|
},
|
|
"image/pwg-raster": {
|
|
source: "iana"
|
|
},
|
|
"image/sgi": {
|
|
source: "apache",
|
|
extensions: ["sgi"]
|
|
},
|
|
"image/svg+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["svg", "svgz"]
|
|
},
|
|
"image/t38": {
|
|
source: "iana",
|
|
extensions: ["t38"]
|
|
},
|
|
"image/tiff": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["tif", "tiff"]
|
|
},
|
|
"image/tiff-fx": {
|
|
source: "iana",
|
|
extensions: ["tfx"]
|
|
},
|
|
"image/vnd.adobe.photoshop": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["psd"]
|
|
},
|
|
"image/vnd.airzip.accelerator.azv": {
|
|
source: "iana",
|
|
extensions: ["azv"]
|
|
},
|
|
"image/vnd.cns.inf2": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.dece.graphic": {
|
|
source: "iana",
|
|
extensions: ["uvi", "uvvi", "uvg", "uvvg"]
|
|
},
|
|
"image/vnd.djvu": {
|
|
source: "iana",
|
|
extensions: ["djvu", "djv"]
|
|
},
|
|
"image/vnd.dvb.subtitle": {
|
|
source: "iana",
|
|
extensions: ["sub"]
|
|
},
|
|
"image/vnd.dwg": {
|
|
source: "iana",
|
|
extensions: ["dwg"]
|
|
},
|
|
"image/vnd.dxf": {
|
|
source: "iana",
|
|
extensions: ["dxf"]
|
|
},
|
|
"image/vnd.fastbidsheet": {
|
|
source: "iana",
|
|
extensions: ["fbs"]
|
|
},
|
|
"image/vnd.fpx": {
|
|
source: "iana",
|
|
extensions: ["fpx"]
|
|
},
|
|
"image/vnd.fst": {
|
|
source: "iana",
|
|
extensions: ["fst"]
|
|
},
|
|
"image/vnd.fujixerox.edmics-mmr": {
|
|
source: "iana",
|
|
extensions: ["mmr"]
|
|
},
|
|
"image/vnd.fujixerox.edmics-rlc": {
|
|
source: "iana",
|
|
extensions: ["rlc"]
|
|
},
|
|
"image/vnd.globalgraphics.pgb": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.microsoft.icon": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["ico"]
|
|
},
|
|
"image/vnd.mix": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.mozilla.apng": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.ms-dds": {
|
|
compressible: true,
|
|
extensions: ["dds"]
|
|
},
|
|
"image/vnd.ms-modi": {
|
|
source: "iana",
|
|
extensions: ["mdi"]
|
|
},
|
|
"image/vnd.ms-photo": {
|
|
source: "apache",
|
|
extensions: ["wdp"]
|
|
},
|
|
"image/vnd.net-fpx": {
|
|
source: "iana",
|
|
extensions: ["npx"]
|
|
},
|
|
"image/vnd.pco.b16": {
|
|
source: "iana",
|
|
extensions: ["b16"]
|
|
},
|
|
"image/vnd.radiance": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.sealed.png": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.sealedmedia.softseal.gif": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.sealedmedia.softseal.jpg": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.svf": {
|
|
source: "iana"
|
|
},
|
|
"image/vnd.tencent.tap": {
|
|
source: "iana",
|
|
extensions: ["tap"]
|
|
},
|
|
"image/vnd.valve.source.texture": {
|
|
source: "iana",
|
|
extensions: ["vtf"]
|
|
},
|
|
"image/vnd.wap.wbmp": {
|
|
source: "iana",
|
|
extensions: ["wbmp"]
|
|
},
|
|
"image/vnd.xiff": {
|
|
source: "iana",
|
|
extensions: ["xif"]
|
|
},
|
|
"image/vnd.zbrush.pcx": {
|
|
source: "iana",
|
|
extensions: ["pcx"]
|
|
},
|
|
"image/webp": {
|
|
source: "apache",
|
|
extensions: ["webp"]
|
|
},
|
|
"image/wmf": {
|
|
source: "iana",
|
|
extensions: ["wmf"]
|
|
},
|
|
"image/x-3ds": {
|
|
source: "apache",
|
|
extensions: ["3ds"]
|
|
},
|
|
"image/x-cmu-raster": {
|
|
source: "apache",
|
|
extensions: ["ras"]
|
|
},
|
|
"image/x-cmx": {
|
|
source: "apache",
|
|
extensions: ["cmx"]
|
|
},
|
|
"image/x-freehand": {
|
|
source: "apache",
|
|
extensions: ["fh", "fhc", "fh4", "fh5", "fh7"]
|
|
},
|
|
"image/x-icon": {
|
|
source: "apache",
|
|
compressible: true,
|
|
extensions: ["ico"]
|
|
},
|
|
"image/x-jng": {
|
|
source: "nginx",
|
|
extensions: ["jng"]
|
|
},
|
|
"image/x-mrsid-image": {
|
|
source: "apache",
|
|
extensions: ["sid"]
|
|
},
|
|
"image/x-ms-bmp": {
|
|
source: "nginx",
|
|
compressible: true,
|
|
extensions: ["bmp"]
|
|
},
|
|
"image/x-pcx": {
|
|
source: "apache",
|
|
extensions: ["pcx"]
|
|
},
|
|
"image/x-pict": {
|
|
source: "apache",
|
|
extensions: ["pic", "pct"]
|
|
},
|
|
"image/x-portable-anymap": {
|
|
source: "apache",
|
|
extensions: ["pnm"]
|
|
},
|
|
"image/x-portable-bitmap": {
|
|
source: "apache",
|
|
extensions: ["pbm"]
|
|
},
|
|
"image/x-portable-graymap": {
|
|
source: "apache",
|
|
extensions: ["pgm"]
|
|
},
|
|
"image/x-portable-pixmap": {
|
|
source: "apache",
|
|
extensions: ["ppm"]
|
|
},
|
|
"image/x-rgb": {
|
|
source: "apache",
|
|
extensions: ["rgb"]
|
|
},
|
|
"image/x-tga": {
|
|
source: "apache",
|
|
extensions: ["tga"]
|
|
},
|
|
"image/x-xbitmap": {
|
|
source: "apache",
|
|
extensions: ["xbm"]
|
|
},
|
|
"image/x-xcf": {
|
|
compressible: false
|
|
},
|
|
"image/x-xpixmap": {
|
|
source: "apache",
|
|
extensions: ["xpm"]
|
|
},
|
|
"image/x-xwindowdump": {
|
|
source: "apache",
|
|
extensions: ["xwd"]
|
|
},
|
|
"message/cpim": {
|
|
source: "iana"
|
|
},
|
|
"message/delivery-status": {
|
|
source: "iana"
|
|
},
|
|
"message/disposition-notification": {
|
|
source: "iana",
|
|
extensions: [
|
|
"disposition-notification"
|
|
]
|
|
},
|
|
"message/external-body": {
|
|
source: "iana"
|
|
},
|
|
"message/feedback-report": {
|
|
source: "iana"
|
|
},
|
|
"message/global": {
|
|
source: "iana",
|
|
extensions: ["u8msg"]
|
|
},
|
|
"message/global-delivery-status": {
|
|
source: "iana",
|
|
extensions: ["u8dsn"]
|
|
},
|
|
"message/global-disposition-notification": {
|
|
source: "iana",
|
|
extensions: ["u8mdn"]
|
|
},
|
|
"message/global-headers": {
|
|
source: "iana",
|
|
extensions: ["u8hdr"]
|
|
},
|
|
"message/http": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"message/imdn+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"message/news": {
|
|
source: "iana"
|
|
},
|
|
"message/partial": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"message/rfc822": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["eml", "mime"]
|
|
},
|
|
"message/s-http": {
|
|
source: "iana"
|
|
},
|
|
"message/sip": {
|
|
source: "iana"
|
|
},
|
|
"message/sipfrag": {
|
|
source: "iana"
|
|
},
|
|
"message/tracking-status": {
|
|
source: "iana"
|
|
},
|
|
"message/vnd.si.simp": {
|
|
source: "iana"
|
|
},
|
|
"message/vnd.wfa.wsc": {
|
|
source: "iana",
|
|
extensions: ["wsc"]
|
|
},
|
|
"model/3mf": {
|
|
source: "iana",
|
|
extensions: ["3mf"]
|
|
},
|
|
"model/e57": {
|
|
source: "iana"
|
|
},
|
|
"model/gltf+json": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["gltf"]
|
|
},
|
|
"model/gltf-binary": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["glb"]
|
|
},
|
|
"model/iges": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["igs", "iges"]
|
|
},
|
|
"model/mesh": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["msh", "mesh", "silo"]
|
|
},
|
|
"model/mtl": {
|
|
source: "iana",
|
|
extensions: ["mtl"]
|
|
},
|
|
"model/obj": {
|
|
source: "iana",
|
|
extensions: ["obj"]
|
|
},
|
|
"model/step": {
|
|
source: "iana"
|
|
},
|
|
"model/step+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["stpx"]
|
|
},
|
|
"model/step+zip": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["stpz"]
|
|
},
|
|
"model/step-xml+zip": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["stpxz"]
|
|
},
|
|
"model/stl": {
|
|
source: "iana",
|
|
extensions: ["stl"]
|
|
},
|
|
"model/vnd.collada+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["dae"]
|
|
},
|
|
"model/vnd.dwf": {
|
|
source: "iana",
|
|
extensions: ["dwf"]
|
|
},
|
|
"model/vnd.flatland.3dml": {
|
|
source: "iana"
|
|
},
|
|
"model/vnd.gdl": {
|
|
source: "iana",
|
|
extensions: ["gdl"]
|
|
},
|
|
"model/vnd.gs-gdl": {
|
|
source: "apache"
|
|
},
|
|
"model/vnd.gs.gdl": {
|
|
source: "iana"
|
|
},
|
|
"model/vnd.gtw": {
|
|
source: "iana",
|
|
extensions: ["gtw"]
|
|
},
|
|
"model/vnd.moml+xml": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"model/vnd.mts": {
|
|
source: "iana",
|
|
extensions: ["mts"]
|
|
},
|
|
"model/vnd.opengex": {
|
|
source: "iana",
|
|
extensions: ["ogex"]
|
|
},
|
|
"model/vnd.parasolid.transmit.binary": {
|
|
source: "iana",
|
|
extensions: ["x_b"]
|
|
},
|
|
"model/vnd.parasolid.transmit.text": {
|
|
source: "iana",
|
|
extensions: ["x_t"]
|
|
},
|
|
"model/vnd.pytha.pyox": {
|
|
source: "iana"
|
|
},
|
|
"model/vnd.rosette.annotated-data-model": {
|
|
source: "iana"
|
|
},
|
|
"model/vnd.sap.vds": {
|
|
source: "iana",
|
|
extensions: ["vds"]
|
|
},
|
|
"model/vnd.usdz+zip": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["usdz"]
|
|
},
|
|
"model/vnd.valve.source.compiled-map": {
|
|
source: "iana",
|
|
extensions: ["bsp"]
|
|
},
|
|
"model/vnd.vtu": {
|
|
source: "iana",
|
|
extensions: ["vtu"]
|
|
},
|
|
"model/vrml": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["wrl", "vrml"]
|
|
},
|
|
"model/x3d+binary": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["x3db", "x3dbz"]
|
|
},
|
|
"model/x3d+fastinfoset": {
|
|
source: "iana",
|
|
extensions: ["x3db"]
|
|
},
|
|
"model/x3d+vrml": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["x3dv", "x3dvz"]
|
|
},
|
|
"model/x3d+xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["x3d", "x3dz"]
|
|
},
|
|
"model/x3d-vrml": {
|
|
source: "iana",
|
|
extensions: ["x3dv"]
|
|
},
|
|
"multipart/alternative": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"multipart/appledouble": {
|
|
source: "iana"
|
|
},
|
|
"multipart/byteranges": {
|
|
source: "iana"
|
|
},
|
|
"multipart/digest": {
|
|
source: "iana"
|
|
},
|
|
"multipart/encrypted": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"multipart/form-data": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"multipart/header-set": {
|
|
source: "iana"
|
|
},
|
|
"multipart/mixed": {
|
|
source: "iana"
|
|
},
|
|
"multipart/multilingual": {
|
|
source: "iana"
|
|
},
|
|
"multipart/parallel": {
|
|
source: "iana"
|
|
},
|
|
"multipart/related": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"multipart/report": {
|
|
source: "iana"
|
|
},
|
|
"multipart/signed": {
|
|
source: "iana",
|
|
compressible: false
|
|
},
|
|
"multipart/vnd.bint.med-plus": {
|
|
source: "iana"
|
|
},
|
|
"multipart/voice-message": {
|
|
source: "iana"
|
|
},
|
|
"multipart/x-mixed-replace": {
|
|
source: "iana"
|
|
},
|
|
"text/1d-interleaved-parityfec": {
|
|
source: "iana"
|
|
},
|
|
"text/cache-manifest": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["appcache", "manifest"]
|
|
},
|
|
"text/calendar": {
|
|
source: "iana",
|
|
extensions: ["ics", "ifb"]
|
|
},
|
|
"text/calender": {
|
|
compressible: true
|
|
},
|
|
"text/cmd": {
|
|
compressible: true
|
|
},
|
|
"text/coffeescript": {
|
|
extensions: ["coffee", "litcoffee"]
|
|
},
|
|
"text/cql": {
|
|
source: "iana"
|
|
},
|
|
"text/cql-expression": {
|
|
source: "iana"
|
|
},
|
|
"text/cql-identifier": {
|
|
source: "iana"
|
|
},
|
|
"text/css": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["css"]
|
|
},
|
|
"text/csv": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["csv"]
|
|
},
|
|
"text/csv-schema": {
|
|
source: "iana"
|
|
},
|
|
"text/directory": {
|
|
source: "iana"
|
|
},
|
|
"text/dns": {
|
|
source: "iana"
|
|
},
|
|
"text/ecmascript": {
|
|
source: "iana"
|
|
},
|
|
"text/encaprtp": {
|
|
source: "iana"
|
|
},
|
|
"text/enriched": {
|
|
source: "iana"
|
|
},
|
|
"text/fhirpath": {
|
|
source: "iana"
|
|
},
|
|
"text/flexfec": {
|
|
source: "iana"
|
|
},
|
|
"text/fwdred": {
|
|
source: "iana"
|
|
},
|
|
"text/gff3": {
|
|
source: "iana"
|
|
},
|
|
"text/grammar-ref-list": {
|
|
source: "iana"
|
|
},
|
|
"text/html": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["html", "htm", "shtml"]
|
|
},
|
|
"text/jade": {
|
|
extensions: ["jade"]
|
|
},
|
|
"text/javascript": {
|
|
source: "iana",
|
|
compressible: true
|
|
},
|
|
"text/jcr-cnd": {
|
|
source: "iana"
|
|
},
|
|
"text/jsx": {
|
|
compressible: true,
|
|
extensions: ["jsx"]
|
|
},
|
|
"text/less": {
|
|
compressible: true,
|
|
extensions: ["less"]
|
|
},
|
|
"text/markdown": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["markdown", "md"]
|
|
},
|
|
"text/mathml": {
|
|
source: "nginx",
|
|
extensions: ["mml"]
|
|
},
|
|
"text/mdx": {
|
|
compressible: true,
|
|
extensions: ["mdx"]
|
|
},
|
|
"text/mizar": {
|
|
source: "iana"
|
|
},
|
|
"text/n3": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["n3"]
|
|
},
|
|
"text/parameters": {
|
|
source: "iana",
|
|
charset: "UTF-8"
|
|
},
|
|
"text/parityfec": {
|
|
source: "iana"
|
|
},
|
|
"text/plain": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"]
|
|
},
|
|
"text/provenance-notation": {
|
|
source: "iana",
|
|
charset: "UTF-8"
|
|
},
|
|
"text/prs.fallenstein.rst": {
|
|
source: "iana"
|
|
},
|
|
"text/prs.lines.tag": {
|
|
source: "iana",
|
|
extensions: ["dsc"]
|
|
},
|
|
"text/prs.prop.logic": {
|
|
source: "iana"
|
|
},
|
|
"text/raptorfec": {
|
|
source: "iana"
|
|
},
|
|
"text/red": {
|
|
source: "iana"
|
|
},
|
|
"text/rfc822-headers": {
|
|
source: "iana"
|
|
},
|
|
"text/richtext": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rtx"]
|
|
},
|
|
"text/rtf": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["rtf"]
|
|
},
|
|
"text/rtp-enc-aescm128": {
|
|
source: "iana"
|
|
},
|
|
"text/rtploopback": {
|
|
source: "iana"
|
|
},
|
|
"text/rtx": {
|
|
source: "iana"
|
|
},
|
|
"text/sgml": {
|
|
source: "iana",
|
|
extensions: ["sgml", "sgm"]
|
|
},
|
|
"text/shaclc": {
|
|
source: "iana"
|
|
},
|
|
"text/shex": {
|
|
source: "iana",
|
|
extensions: ["shex"]
|
|
},
|
|
"text/slim": {
|
|
extensions: ["slim", "slm"]
|
|
},
|
|
"text/spdx": {
|
|
source: "iana",
|
|
extensions: ["spdx"]
|
|
},
|
|
"text/strings": {
|
|
source: "iana"
|
|
},
|
|
"text/stylus": {
|
|
extensions: ["stylus", "styl"]
|
|
},
|
|
"text/t140": {
|
|
source: "iana"
|
|
},
|
|
"text/tab-separated-values": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["tsv"]
|
|
},
|
|
"text/troff": {
|
|
source: "iana",
|
|
extensions: ["t", "tr", "roff", "man", "me", "ms"]
|
|
},
|
|
"text/turtle": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
extensions: ["ttl"]
|
|
},
|
|
"text/ulpfec": {
|
|
source: "iana"
|
|
},
|
|
"text/uri-list": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["uri", "uris", "urls"]
|
|
},
|
|
"text/vcard": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["vcard"]
|
|
},
|
|
"text/vnd.a": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.abc": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.ascii-art": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.curl": {
|
|
source: "iana",
|
|
extensions: ["curl"]
|
|
},
|
|
"text/vnd.curl.dcurl": {
|
|
source: "apache",
|
|
extensions: ["dcurl"]
|
|
},
|
|
"text/vnd.curl.mcurl": {
|
|
source: "apache",
|
|
extensions: ["mcurl"]
|
|
},
|
|
"text/vnd.curl.scurl": {
|
|
source: "apache",
|
|
extensions: ["scurl"]
|
|
},
|
|
"text/vnd.debian.copyright": {
|
|
source: "iana",
|
|
charset: "UTF-8"
|
|
},
|
|
"text/vnd.dmclientscript": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.dvb.subtitle": {
|
|
source: "iana",
|
|
extensions: ["sub"]
|
|
},
|
|
"text/vnd.esmertec.theme-descriptor": {
|
|
source: "iana",
|
|
charset: "UTF-8"
|
|
},
|
|
"text/vnd.familysearch.gedcom": {
|
|
source: "iana",
|
|
extensions: ["ged"]
|
|
},
|
|
"text/vnd.ficlab.flt": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.fly": {
|
|
source: "iana",
|
|
extensions: ["fly"]
|
|
},
|
|
"text/vnd.fmi.flexstor": {
|
|
source: "iana",
|
|
extensions: ["flx"]
|
|
},
|
|
"text/vnd.gml": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.graphviz": {
|
|
source: "iana",
|
|
extensions: ["gv"]
|
|
},
|
|
"text/vnd.hans": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.hgl": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.in3d.3dml": {
|
|
source: "iana",
|
|
extensions: ["3dml"]
|
|
},
|
|
"text/vnd.in3d.spot": {
|
|
source: "iana",
|
|
extensions: ["spot"]
|
|
},
|
|
"text/vnd.iptc.newsml": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.iptc.nitf": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.latex-z": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.motorola.reflex": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.ms-mediapackage": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.net2phone.commcenter.command": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.radisys.msml-basic-layout": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.senx.warpscript": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.si.uricatalogue": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.sosi": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.sun.j2me.app-descriptor": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
extensions: ["jad"]
|
|
},
|
|
"text/vnd.trolltech.linguist": {
|
|
source: "iana",
|
|
charset: "UTF-8"
|
|
},
|
|
"text/vnd.wap.si": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.wap.sl": {
|
|
source: "iana"
|
|
},
|
|
"text/vnd.wap.wml": {
|
|
source: "iana",
|
|
extensions: ["wml"]
|
|
},
|
|
"text/vnd.wap.wmlscript": {
|
|
source: "iana",
|
|
extensions: ["wmls"]
|
|
},
|
|
"text/vtt": {
|
|
source: "iana",
|
|
charset: "UTF-8",
|
|
compressible: true,
|
|
extensions: ["vtt"]
|
|
},
|
|
"text/x-asm": {
|
|
source: "apache",
|
|
extensions: ["s", "asm"]
|
|
},
|
|
"text/x-c": {
|
|
source: "apache",
|
|
extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"]
|
|
},
|
|
"text/x-component": {
|
|
source: "nginx",
|
|
extensions: ["htc"]
|
|
},
|
|
"text/x-fortran": {
|
|
source: "apache",
|
|
extensions: ["f", "for", "f77", "f90"]
|
|
},
|
|
"text/x-gwt-rpc": {
|
|
compressible: true
|
|
},
|
|
"text/x-handlebars-template": {
|
|
extensions: ["hbs"]
|
|
},
|
|
"text/x-java-source": {
|
|
source: "apache",
|
|
extensions: ["java"]
|
|
},
|
|
"text/x-jquery-tmpl": {
|
|
compressible: true
|
|
},
|
|
"text/x-lua": {
|
|
extensions: ["lua"]
|
|
},
|
|
"text/x-markdown": {
|
|
compressible: true,
|
|
extensions: ["mkd"]
|
|
},
|
|
"text/x-nfo": {
|
|
source: "apache",
|
|
extensions: ["nfo"]
|
|
},
|
|
"text/x-opml": {
|
|
source: "apache",
|
|
extensions: ["opml"]
|
|
},
|
|
"text/x-org": {
|
|
compressible: true,
|
|
extensions: ["org"]
|
|
},
|
|
"text/x-pascal": {
|
|
source: "apache",
|
|
extensions: ["p", "pas"]
|
|
},
|
|
"text/x-processing": {
|
|
compressible: true,
|
|
extensions: ["pde"]
|
|
},
|
|
"text/x-sass": {
|
|
extensions: ["sass"]
|
|
},
|
|
"text/x-scss": {
|
|
extensions: ["scss"]
|
|
},
|
|
"text/x-setext": {
|
|
source: "apache",
|
|
extensions: ["etx"]
|
|
},
|
|
"text/x-sfv": {
|
|
source: "apache",
|
|
extensions: ["sfv"]
|
|
},
|
|
"text/x-suse-ymp": {
|
|
compressible: true,
|
|
extensions: ["ymp"]
|
|
},
|
|
"text/x-uuencode": {
|
|
source: "apache",
|
|
extensions: ["uu"]
|
|
},
|
|
"text/x-vcalendar": {
|
|
source: "apache",
|
|
extensions: ["vcs"]
|
|
},
|
|
"text/x-vcard": {
|
|
source: "apache",
|
|
extensions: ["vcf"]
|
|
},
|
|
"text/xml": {
|
|
source: "iana",
|
|
compressible: true,
|
|
extensions: ["xml"]
|
|
},
|
|
"text/xml-external-parsed-entity": {
|
|
source: "iana"
|
|
},
|
|
"text/yaml": {
|
|
compressible: true,
|
|
extensions: ["yaml", "yml"]
|
|
},
|
|
"video/1d-interleaved-parityfec": {
|
|
source: "iana"
|
|
},
|
|
"video/3gpp": {
|
|
source: "iana",
|
|
extensions: ["3gp", "3gpp"]
|
|
},
|
|
"video/3gpp-tt": {
|
|
source: "iana"
|
|
},
|
|
"video/3gpp2": {
|
|
source: "iana",
|
|
extensions: ["3g2"]
|
|
},
|
|
"video/av1": {
|
|
source: "iana"
|
|
},
|
|
"video/bmpeg": {
|
|
source: "iana"
|
|
},
|
|
"video/bt656": {
|
|
source: "iana"
|
|
},
|
|
"video/celb": {
|
|
source: "iana"
|
|
},
|
|
"video/dv": {
|
|
source: "iana"
|
|
},
|
|
"video/encaprtp": {
|
|
source: "iana"
|
|
},
|
|
"video/ffv1": {
|
|
source: "iana"
|
|
},
|
|
"video/flexfec": {
|
|
source: "iana"
|
|
},
|
|
"video/h261": {
|
|
source: "iana",
|
|
extensions: ["h261"]
|
|
},
|
|
"video/h263": {
|
|
source: "iana",
|
|
extensions: ["h263"]
|
|
},
|
|
"video/h263-1998": {
|
|
source: "iana"
|
|
},
|
|
"video/h263-2000": {
|
|
source: "iana"
|
|
},
|
|
"video/h264": {
|
|
source: "iana",
|
|
extensions: ["h264"]
|
|
},
|
|
"video/h264-rcdo": {
|
|
source: "iana"
|
|
},
|
|
"video/h264-svc": {
|
|
source: "iana"
|
|
},
|
|
"video/h265": {
|
|
source: "iana"
|
|
},
|
|
"video/iso.segment": {
|
|
source: "iana",
|
|
extensions: ["m4s"]
|
|
},
|
|
"video/jpeg": {
|
|
source: "iana",
|
|
extensions: ["jpgv"]
|
|
},
|
|
"video/jpeg2000": {
|
|
source: "iana"
|
|
},
|
|
"video/jpm": {
|
|
source: "apache",
|
|
extensions: ["jpm", "jpgm"]
|
|
},
|
|
"video/jxsv": {
|
|
source: "iana"
|
|
},
|
|
"video/mj2": {
|
|
source: "iana",
|
|
extensions: ["mj2", "mjp2"]
|
|
},
|
|
"video/mp1s": {
|
|
source: "iana"
|
|
},
|
|
"video/mp2p": {
|
|
source: "iana"
|
|
},
|
|
"video/mp2t": {
|
|
source: "iana",
|
|
extensions: ["ts"]
|
|
},
|
|
"video/mp4": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["mp4", "mp4v", "mpg4"]
|
|
},
|
|
"video/mp4v-es": {
|
|
source: "iana"
|
|
},
|
|
"video/mpeg": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"]
|
|
},
|
|
"video/mpeg4-generic": {
|
|
source: "iana"
|
|
},
|
|
"video/mpv": {
|
|
source: "iana"
|
|
},
|
|
"video/nv": {
|
|
source: "iana"
|
|
},
|
|
"video/ogg": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["ogv"]
|
|
},
|
|
"video/parityfec": {
|
|
source: "iana"
|
|
},
|
|
"video/pointer": {
|
|
source: "iana"
|
|
},
|
|
"video/quicktime": {
|
|
source: "iana",
|
|
compressible: false,
|
|
extensions: ["qt", "mov"]
|
|
},
|
|
"video/raptorfec": {
|
|
source: "iana"
|
|
},
|
|
"video/raw": {
|
|
source: "iana"
|
|
},
|
|
"video/rtp-enc-aescm128": {
|
|
source: "iana"
|
|
},
|
|
"video/rtploopback": {
|
|
source: "iana"
|
|
},
|
|
"video/rtx": {
|
|
source: "iana"
|
|
},
|
|
"video/scip": {
|
|
source: "iana"
|
|
},
|
|
"video/smpte291": {
|
|
source: "iana"
|
|
},
|
|
"video/smpte292m": {
|
|
source: "iana"
|
|
},
|
|
"video/ulpfec": {
|
|
source: "iana"
|
|
},
|
|
"video/vc1": {
|
|
source: "iana"
|
|
},
|
|
"video/vc2": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.cctv": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.dece.hd": {
|
|
source: "iana",
|
|
extensions: ["uvh", "uvvh"]
|
|
},
|
|
"video/vnd.dece.mobile": {
|
|
source: "iana",
|
|
extensions: ["uvm", "uvvm"]
|
|
},
|
|
"video/vnd.dece.mp4": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.dece.pd": {
|
|
source: "iana",
|
|
extensions: ["uvp", "uvvp"]
|
|
},
|
|
"video/vnd.dece.sd": {
|
|
source: "iana",
|
|
extensions: ["uvs", "uvvs"]
|
|
},
|
|
"video/vnd.dece.video": {
|
|
source: "iana",
|
|
extensions: ["uvv", "uvvv"]
|
|
},
|
|
"video/vnd.directv.mpeg": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.directv.mpeg-tts": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.dlna.mpeg-tts": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.dvb.file": {
|
|
source: "iana",
|
|
extensions: ["dvb"]
|
|
},
|
|
"video/vnd.fvt": {
|
|
source: "iana",
|
|
extensions: ["fvt"]
|
|
},
|
|
"video/vnd.hns.video": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.iptvforum.1dparityfec-1010": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.iptvforum.1dparityfec-2005": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.iptvforum.2dparityfec-1010": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.iptvforum.2dparityfec-2005": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.iptvforum.ttsavc": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.iptvforum.ttsmpeg2": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.motorola.video": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.motorola.videop": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.mpegurl": {
|
|
source: "iana",
|
|
extensions: ["mxu", "m4u"]
|
|
},
|
|
"video/vnd.ms-playready.media.pyv": {
|
|
source: "iana",
|
|
extensions: ["pyv"]
|
|
},
|
|
"video/vnd.nokia.interleaved-multimedia": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.nokia.mp4vr": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.nokia.videovoip": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.objectvideo": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.radgamettools.bink": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.radgamettools.smacker": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.sealed.mpeg1": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.sealed.mpeg4": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.sealed.swf": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.sealedmedia.softseal.mov": {
|
|
source: "iana"
|
|
},
|
|
"video/vnd.uvvu.mp4": {
|
|
source: "iana",
|
|
extensions: ["uvu", "uvvu"]
|
|
},
|
|
"video/vnd.vivo": {
|
|
source: "iana",
|
|
extensions: ["viv"]
|
|
},
|
|
"video/vnd.youtube.yt": {
|
|
source: "iana"
|
|
},
|
|
"video/vp8": {
|
|
source: "iana"
|
|
},
|
|
"video/vp9": {
|
|
source: "iana"
|
|
},
|
|
"video/webm": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["webm"]
|
|
},
|
|
"video/x-f4v": {
|
|
source: "apache",
|
|
extensions: ["f4v"]
|
|
},
|
|
"video/x-fli": {
|
|
source: "apache",
|
|
extensions: ["fli"]
|
|
},
|
|
"video/x-flv": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["flv"]
|
|
},
|
|
"video/x-m4v": {
|
|
source: "apache",
|
|
extensions: ["m4v"]
|
|
},
|
|
"video/x-matroska": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["mkv", "mk3d", "mks"]
|
|
},
|
|
"video/x-mng": {
|
|
source: "apache",
|
|
extensions: ["mng"]
|
|
},
|
|
"video/x-ms-asf": {
|
|
source: "apache",
|
|
extensions: ["asf", "asx"]
|
|
},
|
|
"video/x-ms-vob": {
|
|
source: "apache",
|
|
extensions: ["vob"]
|
|
},
|
|
"video/x-ms-wm": {
|
|
source: "apache",
|
|
extensions: ["wm"]
|
|
},
|
|
"video/x-ms-wmv": {
|
|
source: "apache",
|
|
compressible: false,
|
|
extensions: ["wmv"]
|
|
},
|
|
"video/x-ms-wmx": {
|
|
source: "apache",
|
|
extensions: ["wmx"]
|
|
},
|
|
"video/x-ms-wvx": {
|
|
source: "apache",
|
|
extensions: ["wvx"]
|
|
},
|
|
"video/x-msvideo": {
|
|
source: "apache",
|
|
extensions: ["avi"]
|
|
},
|
|
"video/x-sgi-movie": {
|
|
source: "apache",
|
|
extensions: ["movie"]
|
|
},
|
|
"video/x-smv": {
|
|
source: "apache",
|
|
extensions: ["smv"]
|
|
},
|
|
"x-conference/x-cooltalk": {
|
|
source: "apache",
|
|
extensions: ["ice"]
|
|
},
|
|
"x-shader/x-fragment": {
|
|
compressible: true
|
|
},
|
|
"x-shader/x-vertex": {
|
|
compressible: true
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/mime-db/index.js
|
|
var require_mime_db = __commonJS({
|
|
"node_modules/mime-db/index.js"(exports2, module2) {
|
|
module2.exports = require_db();
|
|
}
|
|
});
|
|
|
|
// node_modules/mime-types/index.js
|
|
var require_mime_types = __commonJS({
|
|
"node_modules/mime-types/index.js"(exports2) {
|
|
"use strict";
|
|
var db = require_mime_db();
|
|
var extname = require("path").extname;
|
|
var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
var TEXT_TYPE_REGEXP = /^text\//i;
|
|
exports2.charset = charset;
|
|
exports2.charsets = { lookup: charset };
|
|
exports2.contentType = contentType;
|
|
exports2.extension = extension;
|
|
exports2.extensions = /* @__PURE__ */ Object.create(null);
|
|
exports2.lookup = lookup;
|
|
exports2.types = /* @__PURE__ */ Object.create(null);
|
|
populateMaps(exports2.extensions, exports2.types);
|
|
function charset(type) {
|
|
if (!type || typeof type !== "string") {
|
|
return false;
|
|
}
|
|
var match = EXTRACT_TYPE_REGEXP.exec(type);
|
|
var mime = match && db[match[1].toLowerCase()];
|
|
if (mime && mime.charset) {
|
|
return mime.charset;
|
|
}
|
|
if (match && TEXT_TYPE_REGEXP.test(match[1])) {
|
|
return "UTF-8";
|
|
}
|
|
return false;
|
|
}
|
|
function contentType(str) {
|
|
if (!str || typeof str !== "string") {
|
|
return false;
|
|
}
|
|
var mime = str.indexOf("/") === -1 ? exports2.lookup(str) : str;
|
|
if (!mime) {
|
|
return false;
|
|
}
|
|
if (mime.indexOf("charset") === -1) {
|
|
var charset2 = exports2.charset(mime);
|
|
if (charset2) mime += "; charset=" + charset2.toLowerCase();
|
|
}
|
|
return mime;
|
|
}
|
|
function extension(type) {
|
|
if (!type || typeof type !== "string") {
|
|
return false;
|
|
}
|
|
var match = EXTRACT_TYPE_REGEXP.exec(type);
|
|
var exts = match && exports2.extensions[match[1].toLowerCase()];
|
|
if (!exts || !exts.length) {
|
|
return false;
|
|
}
|
|
return exts[0];
|
|
}
|
|
function lookup(path2) {
|
|
if (!path2 || typeof path2 !== "string") {
|
|
return false;
|
|
}
|
|
var extension2 = extname("x." + path2).toLowerCase().substr(1);
|
|
if (!extension2) {
|
|
return false;
|
|
}
|
|
return exports2.types[extension2] || false;
|
|
}
|
|
function populateMaps(extensions, types) {
|
|
var preference = ["nginx", "apache", void 0, "iana"];
|
|
Object.keys(db).forEach(function forEachMimeType(type) {
|
|
var mime = db[type];
|
|
var exts = mime.extensions;
|
|
if (!exts || !exts.length) {
|
|
return;
|
|
}
|
|
extensions[type] = exts;
|
|
for (var i = 0; i < exts.length; i++) {
|
|
var extension2 = exts[i];
|
|
if (types[extension2]) {
|
|
var from = preference.indexOf(db[types[extension2]].source);
|
|
var to = preference.indexOf(mime.source);
|
|
if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) {
|
|
continue;
|
|
}
|
|
}
|
|
types[extension2] = type;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/lib/defer.js
|
|
var require_defer = __commonJS({
|
|
"node_modules/asynckit/lib/defer.js"(exports2, module2) {
|
|
module2.exports = defer;
|
|
function defer(fn) {
|
|
var nextTick = typeof setImmediate == "function" ? setImmediate : typeof process == "object" && typeof process.nextTick == "function" ? process.nextTick : null;
|
|
if (nextTick) {
|
|
nextTick(fn);
|
|
} else {
|
|
setTimeout(fn, 0);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/lib/async.js
|
|
var require_async = __commonJS({
|
|
"node_modules/asynckit/lib/async.js"(exports2, module2) {
|
|
var defer = require_defer();
|
|
module2.exports = async;
|
|
function async(callback) {
|
|
var isAsync = false;
|
|
defer(function() {
|
|
isAsync = true;
|
|
});
|
|
return function async_callback(err, result) {
|
|
if (isAsync) {
|
|
callback(err, result);
|
|
} else {
|
|
defer(function nextTick_callback() {
|
|
callback(err, result);
|
|
});
|
|
}
|
|
};
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/lib/abort.js
|
|
var require_abort = __commonJS({
|
|
"node_modules/asynckit/lib/abort.js"(exports2, module2) {
|
|
module2.exports = abort;
|
|
function abort(state) {
|
|
Object.keys(state.jobs).forEach(clean.bind(state));
|
|
state.jobs = {};
|
|
}
|
|
function clean(key) {
|
|
if (typeof this.jobs[key] == "function") {
|
|
this.jobs[key]();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/lib/iterate.js
|
|
var require_iterate = __commonJS({
|
|
"node_modules/asynckit/lib/iterate.js"(exports2, module2) {
|
|
var async = require_async();
|
|
var abort = require_abort();
|
|
module2.exports = iterate;
|
|
function iterate(list, iterator2, state, callback) {
|
|
var key = state["keyedList"] ? state["keyedList"][state.index] : state.index;
|
|
state.jobs[key] = runJob(iterator2, key, list[key], function(error, output) {
|
|
if (!(key in state.jobs)) {
|
|
return;
|
|
}
|
|
delete state.jobs[key];
|
|
if (error) {
|
|
abort(state);
|
|
} else {
|
|
state.results[key] = output;
|
|
}
|
|
callback(error, state.results);
|
|
});
|
|
}
|
|
function runJob(iterator2, key, item, callback) {
|
|
var aborter;
|
|
if (iterator2.length == 2) {
|
|
aborter = iterator2(item, async(callback));
|
|
} else {
|
|
aborter = iterator2(item, key, async(callback));
|
|
}
|
|
return aborter;
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/lib/state.js
|
|
var require_state = __commonJS({
|
|
"node_modules/asynckit/lib/state.js"(exports2, module2) {
|
|
module2.exports = state;
|
|
function state(list, sortMethod) {
|
|
var isNamedList = !Array.isArray(list), initState = {
|
|
index: 0,
|
|
keyedList: isNamedList || sortMethod ? Object.keys(list) : null,
|
|
jobs: {},
|
|
results: isNamedList ? {} : [],
|
|
size: isNamedList ? Object.keys(list).length : list.length
|
|
};
|
|
if (sortMethod) {
|
|
initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) {
|
|
return sortMethod(list[a], list[b]);
|
|
});
|
|
}
|
|
return initState;
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/lib/terminator.js
|
|
var require_terminator = __commonJS({
|
|
"node_modules/asynckit/lib/terminator.js"(exports2, module2) {
|
|
var abort = require_abort();
|
|
var async = require_async();
|
|
module2.exports = terminator;
|
|
function terminator(callback) {
|
|
if (!Object.keys(this.jobs).length) {
|
|
return;
|
|
}
|
|
this.index = this.size;
|
|
abort(this);
|
|
async(callback)(null, this.results);
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/parallel.js
|
|
var require_parallel = __commonJS({
|
|
"node_modules/asynckit/parallel.js"(exports2, module2) {
|
|
var iterate = require_iterate();
|
|
var initState = require_state();
|
|
var terminator = require_terminator();
|
|
module2.exports = parallel;
|
|
function parallel(list, iterator2, callback) {
|
|
var state = initState(list);
|
|
while (state.index < (state["keyedList"] || list).length) {
|
|
iterate(list, iterator2, state, function(error, result) {
|
|
if (error) {
|
|
callback(error, result);
|
|
return;
|
|
}
|
|
if (Object.keys(state.jobs).length === 0) {
|
|
callback(null, state.results);
|
|
return;
|
|
}
|
|
});
|
|
state.index++;
|
|
}
|
|
return terminator.bind(state, callback);
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/serialOrdered.js
|
|
var require_serialOrdered = __commonJS({
|
|
"node_modules/asynckit/serialOrdered.js"(exports2, module2) {
|
|
var iterate = require_iterate();
|
|
var initState = require_state();
|
|
var terminator = require_terminator();
|
|
module2.exports = serialOrdered;
|
|
module2.exports.ascending = ascending;
|
|
module2.exports.descending = descending;
|
|
function serialOrdered(list, iterator2, sortMethod, callback) {
|
|
var state = initState(list, sortMethod);
|
|
iterate(list, iterator2, state, function iteratorHandler(error, result) {
|
|
if (error) {
|
|
callback(error, result);
|
|
return;
|
|
}
|
|
state.index++;
|
|
if (state.index < (state["keyedList"] || list).length) {
|
|
iterate(list, iterator2, state, iteratorHandler);
|
|
return;
|
|
}
|
|
callback(null, state.results);
|
|
});
|
|
return terminator.bind(state, callback);
|
|
}
|
|
function ascending(a, b) {
|
|
return a < b ? -1 : a > b ? 1 : 0;
|
|
}
|
|
function descending(a, b) {
|
|
return -1 * ascending(a, b);
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/serial.js
|
|
var require_serial = __commonJS({
|
|
"node_modules/asynckit/serial.js"(exports2, module2) {
|
|
var serialOrdered = require_serialOrdered();
|
|
module2.exports = serial;
|
|
function serial(list, iterator2, callback) {
|
|
return serialOrdered(list, iterator2, null, callback);
|
|
}
|
|
}
|
|
});
|
|
|
|
// node_modules/asynckit/index.js
|
|
var require_asynckit = __commonJS({
|
|
"node_modules/asynckit/index.js"(exports2, module2) {
|
|
module2.exports = {
|
|
parallel: require_parallel(),
|
|
serial: require_serial(),
|
|
serialOrdered: require_serialOrdered()
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/es-object-atoms/index.js
|
|
var require_es_object_atoms = __commonJS({
|
|
"node_modules/es-object-atoms/index.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Object;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/index.js
|
|
var require_es_errors = __commonJS({
|
|
"node_modules/es-errors/index.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Error;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/eval.js
|
|
var require_eval = __commonJS({
|
|
"node_modules/es-errors/eval.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = EvalError;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/range.js
|
|
var require_range = __commonJS({
|
|
"node_modules/es-errors/range.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = RangeError;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/ref.js
|
|
var require_ref = __commonJS({
|
|
"node_modules/es-errors/ref.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = ReferenceError;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/syntax.js
|
|
var require_syntax = __commonJS({
|
|
"node_modules/es-errors/syntax.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = SyntaxError;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/type.js
|
|
var require_type = __commonJS({
|
|
"node_modules/es-errors/type.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = TypeError;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-errors/uri.js
|
|
var require_uri = __commonJS({
|
|
"node_modules/es-errors/uri.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = URIError;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/abs.js
|
|
var require_abs = __commonJS({
|
|
"node_modules/math-intrinsics/abs.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Math.abs;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/floor.js
|
|
var require_floor = __commonJS({
|
|
"node_modules/math-intrinsics/floor.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Math.floor;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/max.js
|
|
var require_max = __commonJS({
|
|
"node_modules/math-intrinsics/max.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Math.max;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/min.js
|
|
var require_min = __commonJS({
|
|
"node_modules/math-intrinsics/min.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Math.min;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/pow.js
|
|
var require_pow = __commonJS({
|
|
"node_modules/math-intrinsics/pow.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Math.pow;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/round.js
|
|
var require_round = __commonJS({
|
|
"node_modules/math-intrinsics/round.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Math.round;
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/isNaN.js
|
|
var require_isNaN = __commonJS({
|
|
"node_modules/math-intrinsics/isNaN.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Number.isNaN || function isNaN2(a) {
|
|
return a !== a;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/math-intrinsics/sign.js
|
|
var require_sign = __commonJS({
|
|
"node_modules/math-intrinsics/sign.js"(exports2, module2) {
|
|
"use strict";
|
|
var $isNaN = require_isNaN();
|
|
module2.exports = function sign(number) {
|
|
if ($isNaN(number) || number === 0) {
|
|
return number;
|
|
}
|
|
return number < 0 ? -1 : 1;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/gopd/gOPD.js
|
|
var require_gOPD = __commonJS({
|
|
"node_modules/gopd/gOPD.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Object.getOwnPropertyDescriptor;
|
|
}
|
|
});
|
|
|
|
// node_modules/gopd/index.js
|
|
var require_gopd = __commonJS({
|
|
"node_modules/gopd/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var $gOPD = require_gOPD();
|
|
if ($gOPD) {
|
|
try {
|
|
$gOPD([], "length");
|
|
} catch (e) {
|
|
$gOPD = null;
|
|
}
|
|
}
|
|
module2.exports = $gOPD;
|
|
}
|
|
});
|
|
|
|
// node_modules/es-define-property/index.js
|
|
var require_es_define_property = __commonJS({
|
|
"node_modules/es-define-property/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var $defineProperty = Object.defineProperty || false;
|
|
if ($defineProperty) {
|
|
try {
|
|
$defineProperty({}, "a", { value: 1 });
|
|
} catch (e) {
|
|
$defineProperty = false;
|
|
}
|
|
}
|
|
module2.exports = $defineProperty;
|
|
}
|
|
});
|
|
|
|
// node_modules/has-symbols/shams.js
|
|
var require_shams = __commonJS({
|
|
"node_modules/has-symbols/shams.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = function hasSymbols() {
|
|
if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") {
|
|
return false;
|
|
}
|
|
if (typeof Symbol.iterator === "symbol") {
|
|
return true;
|
|
}
|
|
var obj = {};
|
|
var sym = /* @__PURE__ */ Symbol("test");
|
|
var symObj = Object(sym);
|
|
if (typeof sym === "string") {
|
|
return false;
|
|
}
|
|
if (Object.prototype.toString.call(sym) !== "[object Symbol]") {
|
|
return false;
|
|
}
|
|
if (Object.prototype.toString.call(symObj) !== "[object Symbol]") {
|
|
return false;
|
|
}
|
|
var symVal = 42;
|
|
obj[sym] = symVal;
|
|
for (var _ in obj) {
|
|
return false;
|
|
}
|
|
if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) {
|
|
return false;
|
|
}
|
|
if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) {
|
|
return false;
|
|
}
|
|
var syms = Object.getOwnPropertySymbols(obj);
|
|
if (syms.length !== 1 || syms[0] !== sym) {
|
|
return false;
|
|
}
|
|
if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {
|
|
return false;
|
|
}
|
|
if (typeof Object.getOwnPropertyDescriptor === "function") {
|
|
var descriptor = (
|
|
/** @type {PropertyDescriptor} */
|
|
Object.getOwnPropertyDescriptor(obj, sym)
|
|
);
|
|
if (descriptor.value !== symVal || descriptor.enumerable !== true) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/has-symbols/index.js
|
|
var require_has_symbols = __commonJS({
|
|
"node_modules/has-symbols/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var origSymbol = typeof Symbol !== "undefined" && Symbol;
|
|
var hasSymbolSham = require_shams();
|
|
module2.exports = function hasNativeSymbols() {
|
|
if (typeof origSymbol !== "function") {
|
|
return false;
|
|
}
|
|
if (typeof Symbol !== "function") {
|
|
return false;
|
|
}
|
|
if (typeof origSymbol("foo") !== "symbol") {
|
|
return false;
|
|
}
|
|
if (typeof /* @__PURE__ */ Symbol("bar") !== "symbol") {
|
|
return false;
|
|
}
|
|
return hasSymbolSham();
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/get-proto/Reflect.getPrototypeOf.js
|
|
var require_Reflect_getPrototypeOf = __commonJS({
|
|
"node_modules/get-proto/Reflect.getPrototypeOf.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null;
|
|
}
|
|
});
|
|
|
|
// node_modules/get-proto/Object.getPrototypeOf.js
|
|
var require_Object_getPrototypeOf = __commonJS({
|
|
"node_modules/get-proto/Object.getPrototypeOf.js"(exports2, module2) {
|
|
"use strict";
|
|
var $Object = require_es_object_atoms();
|
|
module2.exports = $Object.getPrototypeOf || null;
|
|
}
|
|
});
|
|
|
|
// node_modules/function-bind/implementation.js
|
|
var require_implementation = __commonJS({
|
|
"node_modules/function-bind/implementation.js"(exports2, module2) {
|
|
"use strict";
|
|
var ERROR_MESSAGE = "Function.prototype.bind called on incompatible ";
|
|
var toStr = Object.prototype.toString;
|
|
var max = Math.max;
|
|
var funcType = "[object Function]";
|
|
var concatty = function concatty2(a, b) {
|
|
var arr = [];
|
|
for (var i = 0; i < a.length; i += 1) {
|
|
arr[i] = a[i];
|
|
}
|
|
for (var j = 0; j < b.length; j += 1) {
|
|
arr[j + a.length] = b[j];
|
|
}
|
|
return arr;
|
|
};
|
|
var slicy = function slicy2(arrLike, offset) {
|
|
var arr = [];
|
|
for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {
|
|
arr[j] = arrLike[i];
|
|
}
|
|
return arr;
|
|
};
|
|
var joiny = function(arr, joiner) {
|
|
var str = "";
|
|
for (var i = 0; i < arr.length; i += 1) {
|
|
str += arr[i];
|
|
if (i + 1 < arr.length) {
|
|
str += joiner;
|
|
}
|
|
}
|
|
return str;
|
|
};
|
|
module2.exports = function bind2(that) {
|
|
var target = this;
|
|
if (typeof target !== "function" || toStr.apply(target) !== funcType) {
|
|
throw new TypeError(ERROR_MESSAGE + target);
|
|
}
|
|
var args = slicy(arguments, 1);
|
|
var bound;
|
|
var binder = function() {
|
|
if (this instanceof bound) {
|
|
var result = target.apply(
|
|
this,
|
|
concatty(args, arguments)
|
|
);
|
|
if (Object(result) === result) {
|
|
return result;
|
|
}
|
|
return this;
|
|
}
|
|
return target.apply(
|
|
that,
|
|
concatty(args, arguments)
|
|
);
|
|
};
|
|
var boundLength = max(0, target.length - args.length);
|
|
var boundArgs = [];
|
|
for (var i = 0; i < boundLength; i++) {
|
|
boundArgs[i] = "$" + i;
|
|
}
|
|
bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder);
|
|
if (target.prototype) {
|
|
var Empty = function Empty2() {
|
|
};
|
|
Empty.prototype = target.prototype;
|
|
bound.prototype = new Empty();
|
|
Empty.prototype = null;
|
|
}
|
|
return bound;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/function-bind/index.js
|
|
var require_function_bind = __commonJS({
|
|
"node_modules/function-bind/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var implementation = require_implementation();
|
|
module2.exports = Function.prototype.bind || implementation;
|
|
}
|
|
});
|
|
|
|
// node_modules/call-bind-apply-helpers/functionCall.js
|
|
var require_functionCall = __commonJS({
|
|
"node_modules/call-bind-apply-helpers/functionCall.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Function.prototype.call;
|
|
}
|
|
});
|
|
|
|
// node_modules/call-bind-apply-helpers/functionApply.js
|
|
var require_functionApply = __commonJS({
|
|
"node_modules/call-bind-apply-helpers/functionApply.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = Function.prototype.apply;
|
|
}
|
|
});
|
|
|
|
// node_modules/call-bind-apply-helpers/reflectApply.js
|
|
var require_reflectApply = __commonJS({
|
|
"node_modules/call-bind-apply-helpers/reflectApply.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply;
|
|
}
|
|
});
|
|
|
|
// node_modules/call-bind-apply-helpers/actualApply.js
|
|
var require_actualApply = __commonJS({
|
|
"node_modules/call-bind-apply-helpers/actualApply.js"(exports2, module2) {
|
|
"use strict";
|
|
var bind2 = require_function_bind();
|
|
var $apply = require_functionApply();
|
|
var $call = require_functionCall();
|
|
var $reflectApply = require_reflectApply();
|
|
module2.exports = $reflectApply || bind2.call($call, $apply);
|
|
}
|
|
});
|
|
|
|
// node_modules/call-bind-apply-helpers/index.js
|
|
var require_call_bind_apply_helpers = __commonJS({
|
|
"node_modules/call-bind-apply-helpers/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var bind2 = require_function_bind();
|
|
var $TypeError = require_type();
|
|
var $call = require_functionCall();
|
|
var $actualApply = require_actualApply();
|
|
module2.exports = function callBindBasic(args) {
|
|
if (args.length < 1 || typeof args[0] !== "function") {
|
|
throw new $TypeError("a function is required");
|
|
}
|
|
return $actualApply(bind2, $call, args);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/dunder-proto/get.js
|
|
var require_get = __commonJS({
|
|
"node_modules/dunder-proto/get.js"(exports2, module2) {
|
|
"use strict";
|
|
var callBind = require_call_bind_apply_helpers();
|
|
var gOPD = require_gopd();
|
|
var hasProtoAccessor;
|
|
try {
|
|
hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */
|
|
[].__proto__ === Array.prototype;
|
|
} catch (e) {
|
|
if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") {
|
|
throw e;
|
|
}
|
|
}
|
|
var desc = !!hasProtoAccessor && gOPD && gOPD(
|
|
Object.prototype,
|
|
/** @type {keyof typeof Object.prototype} */
|
|
"__proto__"
|
|
);
|
|
var $Object = Object;
|
|
var $getPrototypeOf = $Object.getPrototypeOf;
|
|
module2.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? (
|
|
/** @type {import('./get')} */
|
|
function getDunder(value) {
|
|
return $getPrototypeOf(value == null ? value : $Object(value));
|
|
}
|
|
) : false;
|
|
}
|
|
});
|
|
|
|
// node_modules/get-proto/index.js
|
|
var require_get_proto = __commonJS({
|
|
"node_modules/get-proto/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var reflectGetProto = require_Reflect_getPrototypeOf();
|
|
var originalGetProto = require_Object_getPrototypeOf();
|
|
var getDunderProto = require_get();
|
|
module2.exports = reflectGetProto ? function getProto(O) {
|
|
return reflectGetProto(O);
|
|
} : originalGetProto ? function getProto(O) {
|
|
if (!O || typeof O !== "object" && typeof O !== "function") {
|
|
throw new TypeError("getProto: not an object");
|
|
}
|
|
return originalGetProto(O);
|
|
} : getDunderProto ? function getProto(O) {
|
|
return getDunderProto(O);
|
|
} : null;
|
|
}
|
|
});
|
|
|
|
// node_modules/hasown/index.js
|
|
var require_hasown = __commonJS({
|
|
"node_modules/hasown/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var call = Function.prototype.call;
|
|
var $hasOwn = Object.prototype.hasOwnProperty;
|
|
var bind2 = require_function_bind();
|
|
module2.exports = bind2.call(call, $hasOwn);
|
|
}
|
|
});
|
|
|
|
// node_modules/get-intrinsic/index.js
|
|
var require_get_intrinsic = __commonJS({
|
|
"node_modules/get-intrinsic/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var undefined2;
|
|
var $Object = require_es_object_atoms();
|
|
var $Error = require_es_errors();
|
|
var $EvalError = require_eval();
|
|
var $RangeError = require_range();
|
|
var $ReferenceError = require_ref();
|
|
var $SyntaxError = require_syntax();
|
|
var $TypeError = require_type();
|
|
var $URIError = require_uri();
|
|
var abs = require_abs();
|
|
var floor = require_floor();
|
|
var max = require_max();
|
|
var min = require_min();
|
|
var pow = require_pow();
|
|
var round = require_round();
|
|
var sign = require_sign();
|
|
var $Function = Function;
|
|
var getEvalledConstructor = function(expressionSyntax) {
|
|
try {
|
|
return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")();
|
|
} catch (e) {
|
|
}
|
|
};
|
|
var $gOPD = require_gopd();
|
|
var $defineProperty = require_es_define_property();
|
|
var throwTypeError = function() {
|
|
throw new $TypeError();
|
|
};
|
|
var ThrowTypeError = $gOPD ? (function() {
|
|
try {
|
|
arguments.callee;
|
|
return throwTypeError;
|
|
} catch (calleeThrows) {
|
|
try {
|
|
return $gOPD(arguments, "callee").get;
|
|
} catch (gOPDthrows) {
|
|
return throwTypeError;
|
|
}
|
|
}
|
|
})() : throwTypeError;
|
|
var hasSymbols = require_has_symbols()();
|
|
var getProto = require_get_proto();
|
|
var $ObjectGPO = require_Object_getPrototypeOf();
|
|
var $ReflectGPO = require_Reflect_getPrototypeOf();
|
|
var $apply = require_functionApply();
|
|
var $call = require_functionCall();
|
|
var needsEval = {};
|
|
var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array);
|
|
var INTRINSICS = {
|
|
__proto__: null,
|
|
"%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError,
|
|
"%Array%": Array,
|
|
"%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer,
|
|
"%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2,
|
|
"%AsyncFromSyncIteratorPrototype%": undefined2,
|
|
"%AsyncFunction%": needsEval,
|
|
"%AsyncGenerator%": needsEval,
|
|
"%AsyncGeneratorFunction%": needsEval,
|
|
"%AsyncIteratorPrototype%": needsEval,
|
|
"%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics,
|
|
"%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt,
|
|
"%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array,
|
|
"%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array,
|
|
"%Boolean%": Boolean,
|
|
"%DataView%": typeof DataView === "undefined" ? undefined2 : DataView,
|
|
"%Date%": Date,
|
|
"%decodeURI%": decodeURI,
|
|
"%decodeURIComponent%": decodeURIComponent,
|
|
"%encodeURI%": encodeURI,
|
|
"%encodeURIComponent%": encodeURIComponent,
|
|
"%Error%": $Error,
|
|
"%eval%": eval,
|
|
// eslint-disable-line no-eval
|
|
"%EvalError%": $EvalError,
|
|
"%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array,
|
|
"%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array,
|
|
"%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array,
|
|
"%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry,
|
|
"%Function%": $Function,
|
|
"%GeneratorFunction%": needsEval,
|
|
"%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array,
|
|
"%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array,
|
|
"%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array,
|
|
"%isFinite%": isFinite,
|
|
"%isNaN%": isNaN,
|
|
"%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2,
|
|
"%JSON%": typeof JSON === "object" ? JSON : undefined2,
|
|
"%Map%": typeof Map === "undefined" ? undefined2 : Map,
|
|
"%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()),
|
|
"%Math%": Math,
|
|
"%Number%": Number,
|
|
"%Object%": $Object,
|
|
"%Object.getOwnPropertyDescriptor%": $gOPD,
|
|
"%parseFloat%": parseFloat,
|
|
"%parseInt%": parseInt,
|
|
"%Promise%": typeof Promise === "undefined" ? undefined2 : Promise,
|
|
"%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy,
|
|
"%RangeError%": $RangeError,
|
|
"%ReferenceError%": $ReferenceError,
|
|
"%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect,
|
|
"%RegExp%": RegExp,
|
|
"%Set%": typeof Set === "undefined" ? undefined2 : Set,
|
|
"%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()),
|
|
"%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer,
|
|
"%String%": String,
|
|
"%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2,
|
|
"%Symbol%": hasSymbols ? Symbol : undefined2,
|
|
"%SyntaxError%": $SyntaxError,
|
|
"%ThrowTypeError%": ThrowTypeError,
|
|
"%TypedArray%": TypedArray,
|
|
"%TypeError%": $TypeError,
|
|
"%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array,
|
|
"%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray,
|
|
"%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array,
|
|
"%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array,
|
|
"%URIError%": $URIError,
|
|
"%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap,
|
|
"%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef,
|
|
"%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet,
|
|
"%Function.prototype.call%": $call,
|
|
"%Function.prototype.apply%": $apply,
|
|
"%Object.defineProperty%": $defineProperty,
|
|
"%Object.getPrototypeOf%": $ObjectGPO,
|
|
"%Math.abs%": abs,
|
|
"%Math.floor%": floor,
|
|
"%Math.max%": max,
|
|
"%Math.min%": min,
|
|
"%Math.pow%": pow,
|
|
"%Math.round%": round,
|
|
"%Math.sign%": sign,
|
|
"%Reflect.getPrototypeOf%": $ReflectGPO
|
|
};
|
|
if (getProto) {
|
|
try {
|
|
null.error;
|
|
} catch (e) {
|
|
errorProto = getProto(getProto(e));
|
|
INTRINSICS["%Error.prototype%"] = errorProto;
|
|
}
|
|
}
|
|
var errorProto;
|
|
var doEval = function doEval2(name) {
|
|
var value;
|
|
if (name === "%AsyncFunction%") {
|
|
value = getEvalledConstructor("async function () {}");
|
|
} else if (name === "%GeneratorFunction%") {
|
|
value = getEvalledConstructor("function* () {}");
|
|
} else if (name === "%AsyncGeneratorFunction%") {
|
|
value = getEvalledConstructor("async function* () {}");
|
|
} else if (name === "%AsyncGenerator%") {
|
|
var fn = doEval2("%AsyncGeneratorFunction%");
|
|
if (fn) {
|
|
value = fn.prototype;
|
|
}
|
|
} else if (name === "%AsyncIteratorPrototype%") {
|
|
var gen = doEval2("%AsyncGenerator%");
|
|
if (gen && getProto) {
|
|
value = getProto(gen.prototype);
|
|
}
|
|
}
|
|
INTRINSICS[name] = value;
|
|
return value;
|
|
};
|
|
var LEGACY_ALIASES = {
|
|
__proto__: null,
|
|
"%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"],
|
|
"%ArrayPrototype%": ["Array", "prototype"],
|
|
"%ArrayProto_entries%": ["Array", "prototype", "entries"],
|
|
"%ArrayProto_forEach%": ["Array", "prototype", "forEach"],
|
|
"%ArrayProto_keys%": ["Array", "prototype", "keys"],
|
|
"%ArrayProto_values%": ["Array", "prototype", "values"],
|
|
"%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"],
|
|
"%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"],
|
|
"%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"],
|
|
"%BooleanPrototype%": ["Boolean", "prototype"],
|
|
"%DataViewPrototype%": ["DataView", "prototype"],
|
|
"%DatePrototype%": ["Date", "prototype"],
|
|
"%ErrorPrototype%": ["Error", "prototype"],
|
|
"%EvalErrorPrototype%": ["EvalError", "prototype"],
|
|
"%Float32ArrayPrototype%": ["Float32Array", "prototype"],
|
|
"%Float64ArrayPrototype%": ["Float64Array", "prototype"],
|
|
"%FunctionPrototype%": ["Function", "prototype"],
|
|
"%Generator%": ["GeneratorFunction", "prototype"],
|
|
"%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"],
|
|
"%Int8ArrayPrototype%": ["Int8Array", "prototype"],
|
|
"%Int16ArrayPrototype%": ["Int16Array", "prototype"],
|
|
"%Int32ArrayPrototype%": ["Int32Array", "prototype"],
|
|
"%JSONParse%": ["JSON", "parse"],
|
|
"%JSONStringify%": ["JSON", "stringify"],
|
|
"%MapPrototype%": ["Map", "prototype"],
|
|
"%NumberPrototype%": ["Number", "prototype"],
|
|
"%ObjectPrototype%": ["Object", "prototype"],
|
|
"%ObjProto_toString%": ["Object", "prototype", "toString"],
|
|
"%ObjProto_valueOf%": ["Object", "prototype", "valueOf"],
|
|
"%PromisePrototype%": ["Promise", "prototype"],
|
|
"%PromiseProto_then%": ["Promise", "prototype", "then"],
|
|
"%Promise_all%": ["Promise", "all"],
|
|
"%Promise_reject%": ["Promise", "reject"],
|
|
"%Promise_resolve%": ["Promise", "resolve"],
|
|
"%RangeErrorPrototype%": ["RangeError", "prototype"],
|
|
"%ReferenceErrorPrototype%": ["ReferenceError", "prototype"],
|
|
"%RegExpPrototype%": ["RegExp", "prototype"],
|
|
"%SetPrototype%": ["Set", "prototype"],
|
|
"%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"],
|
|
"%StringPrototype%": ["String", "prototype"],
|
|
"%SymbolPrototype%": ["Symbol", "prototype"],
|
|
"%SyntaxErrorPrototype%": ["SyntaxError", "prototype"],
|
|
"%TypedArrayPrototype%": ["TypedArray", "prototype"],
|
|
"%TypeErrorPrototype%": ["TypeError", "prototype"],
|
|
"%Uint8ArrayPrototype%": ["Uint8Array", "prototype"],
|
|
"%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"],
|
|
"%Uint16ArrayPrototype%": ["Uint16Array", "prototype"],
|
|
"%Uint32ArrayPrototype%": ["Uint32Array", "prototype"],
|
|
"%URIErrorPrototype%": ["URIError", "prototype"],
|
|
"%WeakMapPrototype%": ["WeakMap", "prototype"],
|
|
"%WeakSetPrototype%": ["WeakSet", "prototype"]
|
|
};
|
|
var bind2 = require_function_bind();
|
|
var hasOwn = require_hasown();
|
|
var $concat = bind2.call($call, Array.prototype.concat);
|
|
var $spliceApply = bind2.call($apply, Array.prototype.splice);
|
|
var $replace = bind2.call($call, String.prototype.replace);
|
|
var $strSlice = bind2.call($call, String.prototype.slice);
|
|
var $exec = bind2.call($call, RegExp.prototype.exec);
|
|
var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g;
|
|
var reEscapeChar = /\\(\\)?/g;
|
|
var stringToPath = function stringToPath2(string) {
|
|
var first = $strSlice(string, 0, 1);
|
|
var last = $strSlice(string, -1);
|
|
if (first === "%" && last !== "%") {
|
|
throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`");
|
|
} else if (last === "%" && first !== "%") {
|
|
throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`");
|
|
}
|
|
var result = [];
|
|
$replace(string, rePropName, function(match, number, quote, subString) {
|
|
result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match;
|
|
});
|
|
return result;
|
|
};
|
|
var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) {
|
|
var intrinsicName = name;
|
|
var alias;
|
|
if (hasOwn(LEGACY_ALIASES, intrinsicName)) {
|
|
alias = LEGACY_ALIASES[intrinsicName];
|
|
intrinsicName = "%" + alias[0] + "%";
|
|
}
|
|
if (hasOwn(INTRINSICS, intrinsicName)) {
|
|
var value = INTRINSICS[intrinsicName];
|
|
if (value === needsEval) {
|
|
value = doEval(intrinsicName);
|
|
}
|
|
if (typeof value === "undefined" && !allowMissing) {
|
|
throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!");
|
|
}
|
|
return {
|
|
alias,
|
|
name: intrinsicName,
|
|
value
|
|
};
|
|
}
|
|
throw new $SyntaxError("intrinsic " + name + " does not exist!");
|
|
};
|
|
module2.exports = function GetIntrinsic(name, allowMissing) {
|
|
if (typeof name !== "string" || name.length === 0) {
|
|
throw new $TypeError("intrinsic name must be a non-empty string");
|
|
}
|
|
if (arguments.length > 1 && typeof allowMissing !== "boolean") {
|
|
throw new $TypeError('"allowMissing" argument must be a boolean');
|
|
}
|
|
if ($exec(/^%?[^%]*%?$/, name) === null) {
|
|
throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name");
|
|
}
|
|
var parts = stringToPath(name);
|
|
var intrinsicBaseName = parts.length > 0 ? parts[0] : "";
|
|
var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing);
|
|
var intrinsicRealName = intrinsic.name;
|
|
var value = intrinsic.value;
|
|
var skipFurtherCaching = false;
|
|
var alias = intrinsic.alias;
|
|
if (alias) {
|
|
intrinsicBaseName = alias[0];
|
|
$spliceApply(parts, $concat([0, 1], alias));
|
|
}
|
|
for (var i = 1, isOwn = true; i < parts.length; i += 1) {
|
|
var part = parts[i];
|
|
var first = $strSlice(part, 0, 1);
|
|
var last = $strSlice(part, -1);
|
|
if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) {
|
|
throw new $SyntaxError("property names with quotes must have matching quotes");
|
|
}
|
|
if (part === "constructor" || !isOwn) {
|
|
skipFurtherCaching = true;
|
|
}
|
|
intrinsicBaseName += "." + part;
|
|
intrinsicRealName = "%" + intrinsicBaseName + "%";
|
|
if (hasOwn(INTRINSICS, intrinsicRealName)) {
|
|
value = INTRINSICS[intrinsicRealName];
|
|
} else if (value != null) {
|
|
if (!(part in value)) {
|
|
if (!allowMissing) {
|
|
throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available.");
|
|
}
|
|
return void undefined2;
|
|
}
|
|
if ($gOPD && i + 1 >= parts.length) {
|
|
var desc = $gOPD(value, part);
|
|
isOwn = !!desc;
|
|
if (isOwn && "get" in desc && !("originalValue" in desc.get)) {
|
|
value = desc.get;
|
|
} else {
|
|
value = value[part];
|
|
}
|
|
} else {
|
|
isOwn = hasOwn(value, part);
|
|
value = value[part];
|
|
}
|
|
if (isOwn && !skipFurtherCaching) {
|
|
INTRINSICS[intrinsicRealName] = value;
|
|
}
|
|
}
|
|
}
|
|
return value;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/has-tostringtag/shams.js
|
|
var require_shams2 = __commonJS({
|
|
"node_modules/has-tostringtag/shams.js"(exports2, module2) {
|
|
"use strict";
|
|
var hasSymbols = require_shams();
|
|
module2.exports = function hasToStringTagShams() {
|
|
return hasSymbols() && !!Symbol.toStringTag;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/es-set-tostringtag/index.js
|
|
var require_es_set_tostringtag = __commonJS({
|
|
"node_modules/es-set-tostringtag/index.js"(exports2, module2) {
|
|
"use strict";
|
|
var GetIntrinsic = require_get_intrinsic();
|
|
var $defineProperty = GetIntrinsic("%Object.defineProperty%", true);
|
|
var hasToStringTag = require_shams2()();
|
|
var hasOwn = require_hasown();
|
|
var $TypeError = require_type();
|
|
var toStringTag2 = hasToStringTag ? Symbol.toStringTag : null;
|
|
module2.exports = function setToStringTag(object, value) {
|
|
var overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force;
|
|
var nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable;
|
|
if (typeof overrideIfSet !== "undefined" && typeof overrideIfSet !== "boolean" || typeof nonConfigurable !== "undefined" && typeof nonConfigurable !== "boolean") {
|
|
throw new $TypeError("if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans");
|
|
}
|
|
if (toStringTag2 && (overrideIfSet || !hasOwn(object, toStringTag2))) {
|
|
if ($defineProperty) {
|
|
$defineProperty(object, toStringTag2, {
|
|
configurable: !nonConfigurable,
|
|
enumerable: false,
|
|
value,
|
|
writable: false
|
|
});
|
|
} else {
|
|
object[toStringTag2] = value;
|
|
}
|
|
}
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/form-data/lib/populate.js
|
|
var require_populate = __commonJS({
|
|
"node_modules/form-data/lib/populate.js"(exports2, module2) {
|
|
"use strict";
|
|
module2.exports = function(dst, src) {
|
|
Object.keys(src).forEach(function(prop) {
|
|
dst[prop] = dst[prop] || src[prop];
|
|
});
|
|
return dst;
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/form-data/lib/form_data.js
|
|
var require_form_data = __commonJS({
|
|
"node_modules/form-data/lib/form_data.js"(exports2, module2) {
|
|
"use strict";
|
|
var CombinedStream = require_combined_stream();
|
|
var util3 = require("util");
|
|
var path2 = require("path");
|
|
var http3 = require("http");
|
|
var https2 = require("https");
|
|
var parseUrl2 = require("url").parse;
|
|
var fs2 = require("fs");
|
|
var Stream = require("stream").Stream;
|
|
var crypto2 = require("crypto");
|
|
var mime = require_mime_types();
|
|
var asynckit = require_asynckit();
|
|
var setToStringTag = require_es_set_tostringtag();
|
|
var hasOwn = require_hasown();
|
|
var populate = require_populate();
|
|
function FormData3(options) {
|
|
if (!(this instanceof FormData3)) {
|
|
return new FormData3(options);
|
|
}
|
|
this._overheadLength = 0;
|
|
this._valueLength = 0;
|
|
this._valuesToMeasure = [];
|
|
CombinedStream.call(this);
|
|
options = options || {};
|
|
for (var option in options) {
|
|
this[option] = options[option];
|
|
}
|
|
}
|
|
util3.inherits(FormData3, CombinedStream);
|
|
FormData3.LINE_BREAK = "\r\n";
|
|
FormData3.DEFAULT_CONTENT_TYPE = "application/octet-stream";
|
|
FormData3.prototype.append = function(field, value, options) {
|
|
options = options || {};
|
|
if (typeof options === "string") {
|
|
options = { filename: options };
|
|
}
|
|
var append2 = CombinedStream.prototype.append.bind(this);
|
|
if (typeof value === "number" || value == null) {
|
|
value = String(value);
|
|
}
|
|
if (Array.isArray(value)) {
|
|
this._error(new Error("Arrays are not supported."));
|
|
return;
|
|
}
|
|
var header = this._multiPartHeader(field, value, options);
|
|
var footer = this._multiPartFooter();
|
|
append2(header);
|
|
append2(value);
|
|
append2(footer);
|
|
this._trackLength(header, value, options);
|
|
};
|
|
FormData3.prototype._trackLength = function(header, value, options) {
|
|
var valueLength = 0;
|
|
if (options.knownLength != null) {
|
|
valueLength += Number(options.knownLength);
|
|
} else if (Buffer.isBuffer(value)) {
|
|
valueLength = value.length;
|
|
} else if (typeof value === "string") {
|
|
valueLength = Buffer.byteLength(value);
|
|
}
|
|
this._valueLength += valueLength;
|
|
this._overheadLength += Buffer.byteLength(header) + FormData3.LINE_BREAK.length;
|
|
if (!value || !value.path && !(value.readable && hasOwn(value, "httpVersion")) && !(value instanceof Stream)) {
|
|
return;
|
|
}
|
|
if (!options.knownLength) {
|
|
this._valuesToMeasure.push(value);
|
|
}
|
|
};
|
|
FormData3.prototype._lengthRetriever = function(value, callback) {
|
|
if (hasOwn(value, "fd")) {
|
|
if (value.end != void 0 && value.end != Infinity && value.start != void 0) {
|
|
callback(null, value.end + 1 - (value.start ? value.start : 0));
|
|
} else {
|
|
fs2.stat(value.path, function(err, stat) {
|
|
if (err) {
|
|
callback(err);
|
|
return;
|
|
}
|
|
var fileSize = stat.size - (value.start ? value.start : 0);
|
|
callback(null, fileSize);
|
|
});
|
|
}
|
|
} else if (hasOwn(value, "httpVersion")) {
|
|
callback(null, Number(value.headers["content-length"]));
|
|
} else if (hasOwn(value, "httpModule")) {
|
|
value.on("response", function(response) {
|
|
value.pause();
|
|
callback(null, Number(response.headers["content-length"]));
|
|
});
|
|
value.resume();
|
|
} else {
|
|
callback("Unknown stream");
|
|
}
|
|
};
|
|
FormData3.prototype._multiPartHeader = function(field, value, options) {
|
|
if (typeof options.header === "string") {
|
|
return options.header;
|
|
}
|
|
var contentDisposition = this._getContentDisposition(value, options);
|
|
var contentType = this._getContentType(value, options);
|
|
var contents = "";
|
|
var headers = {
|
|
// add custom disposition as third element or keep it two elements if not
|
|
"Content-Disposition": ["form-data", 'name="' + field + '"'].concat(contentDisposition || []),
|
|
// if no content type. allow it to be empty array
|
|
"Content-Type": [].concat(contentType || [])
|
|
};
|
|
if (typeof options.header === "object") {
|
|
populate(headers, options.header);
|
|
}
|
|
var header;
|
|
for (var prop in headers) {
|
|
if (hasOwn(headers, prop)) {
|
|
header = headers[prop];
|
|
if (header == null) {
|
|
continue;
|
|
}
|
|
if (!Array.isArray(header)) {
|
|
header = [header];
|
|
}
|
|
if (header.length) {
|
|
contents += prop + ": " + header.join("; ") + FormData3.LINE_BREAK;
|
|
}
|
|
}
|
|
}
|
|
return "--" + this.getBoundary() + FormData3.LINE_BREAK + contents + FormData3.LINE_BREAK;
|
|
};
|
|
FormData3.prototype._getContentDisposition = function(value, options) {
|
|
var filename;
|
|
if (typeof options.filepath === "string") {
|
|
filename = path2.normalize(options.filepath).replace(/\\/g, "/");
|
|
} else if (options.filename || value && (value.name || value.path)) {
|
|
filename = path2.basename(options.filename || value && (value.name || value.path));
|
|
} else if (value && value.readable && hasOwn(value, "httpVersion")) {
|
|
filename = path2.basename(value.client._httpMessage.path || "");
|
|
}
|
|
if (filename) {
|
|
return 'filename="' + filename + '"';
|
|
}
|
|
};
|
|
FormData3.prototype._getContentType = function(value, options) {
|
|
var contentType = options.contentType;
|
|
if (!contentType && value && value.name) {
|
|
contentType = mime.lookup(value.name);
|
|
}
|
|
if (!contentType && value && value.path) {
|
|
contentType = mime.lookup(value.path);
|
|
}
|
|
if (!contentType && value && value.readable && hasOwn(value, "httpVersion")) {
|
|
contentType = value.headers["content-type"];
|
|
}
|
|
if (!contentType && (options.filepath || options.filename)) {
|
|
contentType = mime.lookup(options.filepath || options.filename);
|
|
}
|
|
if (!contentType && value && typeof value === "object") {
|
|
contentType = FormData3.DEFAULT_CONTENT_TYPE;
|
|
}
|
|
return contentType;
|
|
};
|
|
FormData3.prototype._multiPartFooter = function() {
|
|
return function(next) {
|
|
var footer = FormData3.LINE_BREAK;
|
|
var lastPart = this._streams.length === 0;
|
|
if (lastPart) {
|
|
footer += this._lastBoundary();
|
|
}
|
|
next(footer);
|
|
}.bind(this);
|
|
};
|
|
FormData3.prototype._lastBoundary = function() {
|
|
return "--" + this.getBoundary() + "--" + FormData3.LINE_BREAK;
|
|
};
|
|
FormData3.prototype.getHeaders = function(userHeaders) {
|
|
var header;
|
|
var formHeaders = {
|
|
"content-type": "multipart/form-data; boundary=" + this.getBoundary()
|
|
};
|
|
for (header in userHeaders) {
|
|
if (hasOwn(userHeaders, header)) {
|
|
formHeaders[header.toLowerCase()] = userHeaders[header];
|
|
}
|
|
}
|
|
return formHeaders;
|
|
};
|
|
FormData3.prototype.setBoundary = function(boundary) {
|
|
if (typeof boundary !== "string") {
|
|
throw new TypeError("FormData boundary must be a string");
|
|
}
|
|
this._boundary = boundary;
|
|
};
|
|
FormData3.prototype.getBoundary = function() {
|
|
if (!this._boundary) {
|
|
this._generateBoundary();
|
|
}
|
|
return this._boundary;
|
|
};
|
|
FormData3.prototype.getBuffer = function() {
|
|
var dataBuffer = new Buffer.alloc(0);
|
|
var boundary = this.getBoundary();
|
|
for (var i = 0, len = this._streams.length; i < len; i++) {
|
|
if (typeof this._streams[i] !== "function") {
|
|
if (Buffer.isBuffer(this._streams[i])) {
|
|
dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]);
|
|
} else {
|
|
dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]);
|
|
}
|
|
if (typeof this._streams[i] !== "string" || this._streams[i].substring(2, boundary.length + 2) !== boundary) {
|
|
dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData3.LINE_BREAK)]);
|
|
}
|
|
}
|
|
}
|
|
return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]);
|
|
};
|
|
FormData3.prototype._generateBoundary = function() {
|
|
this._boundary = "--------------------------" + crypto2.randomBytes(12).toString("hex");
|
|
};
|
|
FormData3.prototype.getLengthSync = function() {
|
|
var knownLength = this._overheadLength + this._valueLength;
|
|
if (this._streams.length) {
|
|
knownLength += this._lastBoundary().length;
|
|
}
|
|
if (!this.hasKnownLength()) {
|
|
this._error(new Error("Cannot calculate proper length in synchronous way."));
|
|
}
|
|
return knownLength;
|
|
};
|
|
FormData3.prototype.hasKnownLength = function() {
|
|
var hasKnownLength = true;
|
|
if (this._valuesToMeasure.length) {
|
|
hasKnownLength = false;
|
|
}
|
|
return hasKnownLength;
|
|
};
|
|
FormData3.prototype.getLength = function(cb) {
|
|
var knownLength = this._overheadLength + this._valueLength;
|
|
if (this._streams.length) {
|
|
knownLength += this._lastBoundary().length;
|
|
}
|
|
if (!this._valuesToMeasure.length) {
|
|
process.nextTick(cb.bind(this, null, knownLength));
|
|
return;
|
|
}
|
|
asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {
|
|
if (err) {
|
|
cb(err);
|
|
return;
|
|
}
|
|
values.forEach(function(length) {
|
|
knownLength += length;
|
|
});
|
|
cb(null, knownLength);
|
|
});
|
|
};
|
|
FormData3.prototype.submit = function(params, cb) {
|
|
var request;
|
|
var options;
|
|
var defaults2 = { method: "post" };
|
|
if (typeof params === "string") {
|
|
params = parseUrl2(params);
|
|
options = populate({
|
|
port: params.port,
|
|
path: params.pathname,
|
|
host: params.hostname,
|
|
protocol: params.protocol
|
|
}, defaults2);
|
|
} else {
|
|
options = populate(params, defaults2);
|
|
if (!options.port) {
|
|
options.port = options.protocol === "https:" ? 443 : 80;
|
|
}
|
|
}
|
|
options.headers = this.getHeaders(params.headers);
|
|
if (options.protocol === "https:") {
|
|
request = https2.request(options);
|
|
} else {
|
|
request = http3.request(options);
|
|
}
|
|
this.getLength(function(err, length) {
|
|
if (err && err !== "Unknown stream") {
|
|
this._error(err);
|
|
return;
|
|
}
|
|
if (length) {
|
|
request.setHeader("Content-Length", length);
|
|
}
|
|
this.pipe(request);
|
|
if (cb) {
|
|
var onResponse;
|
|
var callback = function(error, responce) {
|
|
request.removeListener("error", callback);
|
|
request.removeListener("response", onResponse);
|
|
return cb.call(this, error, responce);
|
|
};
|
|
onResponse = callback.bind(this, null);
|
|
request.on("error", callback);
|
|
request.on("response", onResponse);
|
|
}
|
|
}.bind(this));
|
|
return request;
|
|
};
|
|
FormData3.prototype._error = function(err) {
|
|
if (!this.error) {
|
|
this.error = err;
|
|
this.pause();
|
|
this.emit("error", err);
|
|
}
|
|
};
|
|
FormData3.prototype.toString = function() {
|
|
return "[object FormData]";
|
|
};
|
|
setToStringTag(FormData3.prototype, "FormData");
|
|
module2.exports = FormData3;
|
|
}
|
|
});
|
|
|
|
// node_modules/follow-redirects/debug.js
|
|
var require_debug = __commonJS({
|
|
"node_modules/follow-redirects/debug.js"(exports2, module2) {
|
|
var debug;
|
|
module2.exports = function() {
|
|
if (!debug) {
|
|
try {
|
|
debug = require("debug")("follow-redirects");
|
|
} catch (error) {
|
|
}
|
|
if (typeof debug !== "function") {
|
|
debug = function() {
|
|
};
|
|
}
|
|
}
|
|
debug.apply(null, arguments);
|
|
};
|
|
}
|
|
});
|
|
|
|
// node_modules/follow-redirects/index.js
|
|
var require_follow_redirects = __commonJS({
|
|
"node_modules/follow-redirects/index.js"(exports2, module2) {
|
|
var url2 = require("url");
|
|
var URL2 = url2.URL;
|
|
var http3 = require("http");
|
|
var https2 = require("https");
|
|
var Writable = require("stream").Writable;
|
|
var assert = require("assert");
|
|
var debug = require_debug();
|
|
(function detectUnsupportedEnvironment() {
|
|
var looksLikeNode = typeof process !== "undefined";
|
|
var looksLikeBrowser = typeof window !== "undefined" && typeof document !== "undefined";
|
|
var looksLikeV8 = isFunction3(Error.captureStackTrace);
|
|
if (!looksLikeNode && (looksLikeBrowser || !looksLikeV8)) {
|
|
console.warn("The follow-redirects package should be excluded from browser builds.");
|
|
}
|
|
})();
|
|
var useNativeURL = false;
|
|
try {
|
|
assert(new URL2(""));
|
|
} catch (error) {
|
|
useNativeURL = error.code === "ERR_INVALID_URL";
|
|
}
|
|
var preservedUrlFields = [
|
|
"auth",
|
|
"host",
|
|
"hostname",
|
|
"href",
|
|
"path",
|
|
"pathname",
|
|
"port",
|
|
"protocol",
|
|
"query",
|
|
"search",
|
|
"hash"
|
|
];
|
|
var events = ["abort", "aborted", "connect", "error", "socket", "timeout"];
|
|
var eventHandlers = /* @__PURE__ */ Object.create(null);
|
|
events.forEach(function(event) {
|
|
eventHandlers[event] = function(arg1, arg2, arg3) {
|
|
this._redirectable.emit(event, arg1, arg2, arg3);
|
|
};
|
|
});
|
|
var InvalidUrlError = createErrorType(
|
|
"ERR_INVALID_URL",
|
|
"Invalid URL",
|
|
TypeError
|
|
);
|
|
var RedirectionError = createErrorType(
|
|
"ERR_FR_REDIRECTION_FAILURE",
|
|
"Redirected request failed"
|
|
);
|
|
var TooManyRedirectsError = createErrorType(
|
|
"ERR_FR_TOO_MANY_REDIRECTS",
|
|
"Maximum number of redirects exceeded",
|
|
RedirectionError
|
|
);
|
|
var MaxBodyLengthExceededError = createErrorType(
|
|
"ERR_FR_MAX_BODY_LENGTH_EXCEEDED",
|
|
"Request body larger than maxBodyLength limit"
|
|
);
|
|
var WriteAfterEndError = createErrorType(
|
|
"ERR_STREAM_WRITE_AFTER_END",
|
|
"write after end"
|
|
);
|
|
var destroy = Writable.prototype.destroy || noop2;
|
|
function RedirectableRequest(options, responseCallback) {
|
|
Writable.call(this);
|
|
this._sanitizeOptions(options);
|
|
this._options = options;
|
|
this._ended = false;
|
|
this._ending = false;
|
|
this._redirectCount = 0;
|
|
this._redirects = [];
|
|
this._requestBodyLength = 0;
|
|
this._requestBodyBuffers = [];
|
|
if (responseCallback) {
|
|
this.on("response", responseCallback);
|
|
}
|
|
var self2 = this;
|
|
this._onNativeResponse = function(response) {
|
|
try {
|
|
self2._processResponse(response);
|
|
} catch (cause) {
|
|
self2.emit("error", cause instanceof RedirectionError ? cause : new RedirectionError({ cause }));
|
|
}
|
|
};
|
|
this._performRequest();
|
|
}
|
|
RedirectableRequest.prototype = Object.create(Writable.prototype);
|
|
RedirectableRequest.prototype.abort = function() {
|
|
destroyRequest(this._currentRequest);
|
|
this._currentRequest.abort();
|
|
this.emit("abort");
|
|
};
|
|
RedirectableRequest.prototype.destroy = function(error) {
|
|
destroyRequest(this._currentRequest, error);
|
|
destroy.call(this, error);
|
|
return this;
|
|
};
|
|
RedirectableRequest.prototype.write = function(data, encoding, callback) {
|
|
if (this._ending) {
|
|
throw new WriteAfterEndError();
|
|
}
|
|
if (!isString2(data) && !isBuffer2(data)) {
|
|
throw new TypeError("data should be a string, Buffer or Uint8Array");
|
|
}
|
|
if (isFunction3(encoding)) {
|
|
callback = encoding;
|
|
encoding = null;
|
|
}
|
|
if (data.length === 0) {
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
return;
|
|
}
|
|
if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {
|
|
this._requestBodyLength += data.length;
|
|
this._requestBodyBuffers.push({ data, encoding });
|
|
this._currentRequest.write(data, encoding, callback);
|
|
} else {
|
|
this.emit("error", new MaxBodyLengthExceededError());
|
|
this.abort();
|
|
}
|
|
};
|
|
RedirectableRequest.prototype.end = function(data, encoding, callback) {
|
|
if (isFunction3(data)) {
|
|
callback = data;
|
|
data = encoding = null;
|
|
} else if (isFunction3(encoding)) {
|
|
callback = encoding;
|
|
encoding = null;
|
|
}
|
|
if (!data) {
|
|
this._ended = this._ending = true;
|
|
this._currentRequest.end(null, null, callback);
|
|
} else {
|
|
var self2 = this;
|
|
var currentRequest = this._currentRequest;
|
|
this.write(data, encoding, function() {
|
|
self2._ended = true;
|
|
currentRequest.end(null, null, callback);
|
|
});
|
|
this._ending = true;
|
|
}
|
|
};
|
|
RedirectableRequest.prototype.setHeader = function(name, value) {
|
|
this._options.headers[name] = value;
|
|
this._currentRequest.setHeader(name, value);
|
|
};
|
|
RedirectableRequest.prototype.removeHeader = function(name) {
|
|
delete this._options.headers[name];
|
|
this._currentRequest.removeHeader(name);
|
|
};
|
|
RedirectableRequest.prototype.setTimeout = function(msecs, callback) {
|
|
var self2 = this;
|
|
function destroyOnTimeout(socket) {
|
|
socket.setTimeout(msecs);
|
|
socket.removeListener("timeout", socket.destroy);
|
|
socket.addListener("timeout", socket.destroy);
|
|
}
|
|
function startTimer(socket) {
|
|
if (self2._timeout) {
|
|
clearTimeout(self2._timeout);
|
|
}
|
|
self2._timeout = setTimeout(function() {
|
|
self2.emit("timeout");
|
|
clearTimer();
|
|
}, msecs);
|
|
destroyOnTimeout(socket);
|
|
}
|
|
function clearTimer() {
|
|
if (self2._timeout) {
|
|
clearTimeout(self2._timeout);
|
|
self2._timeout = null;
|
|
}
|
|
self2.removeListener("abort", clearTimer);
|
|
self2.removeListener("error", clearTimer);
|
|
self2.removeListener("response", clearTimer);
|
|
self2.removeListener("close", clearTimer);
|
|
if (callback) {
|
|
self2.removeListener("timeout", callback);
|
|
}
|
|
if (!self2.socket) {
|
|
self2._currentRequest.removeListener("socket", startTimer);
|
|
}
|
|
}
|
|
if (callback) {
|
|
this.on("timeout", callback);
|
|
}
|
|
if (this.socket) {
|
|
startTimer(this.socket);
|
|
} else {
|
|
this._currentRequest.once("socket", startTimer);
|
|
}
|
|
this.on("socket", destroyOnTimeout);
|
|
this.on("abort", clearTimer);
|
|
this.on("error", clearTimer);
|
|
this.on("response", clearTimer);
|
|
this.on("close", clearTimer);
|
|
return this;
|
|
};
|
|
[
|
|
"flushHeaders",
|
|
"getHeader",
|
|
"setNoDelay",
|
|
"setSocketKeepAlive"
|
|
].forEach(function(method) {
|
|
RedirectableRequest.prototype[method] = function(a, b) {
|
|
return this._currentRequest[method](a, b);
|
|
};
|
|
});
|
|
["aborted", "connection", "socket"].forEach(function(property) {
|
|
Object.defineProperty(RedirectableRequest.prototype, property, {
|
|
get: function() {
|
|
return this._currentRequest[property];
|
|
}
|
|
});
|
|
});
|
|
RedirectableRequest.prototype._sanitizeOptions = function(options) {
|
|
if (!options.headers) {
|
|
options.headers = {};
|
|
}
|
|
if (options.host) {
|
|
if (!options.hostname) {
|
|
options.hostname = options.host;
|
|
}
|
|
delete options.host;
|
|
}
|
|
if (!options.pathname && options.path) {
|
|
var searchPos = options.path.indexOf("?");
|
|
if (searchPos < 0) {
|
|
options.pathname = options.path;
|
|
} else {
|
|
options.pathname = options.path.substring(0, searchPos);
|
|
options.search = options.path.substring(searchPos);
|
|
}
|
|
}
|
|
};
|
|
RedirectableRequest.prototype._performRequest = function() {
|
|
var protocol = this._options.protocol;
|
|
var nativeProtocol = this._options.nativeProtocols[protocol];
|
|
if (!nativeProtocol) {
|
|
throw new TypeError("Unsupported protocol " + protocol);
|
|
}
|
|
if (this._options.agents) {
|
|
var scheme = protocol.slice(0, -1);
|
|
this._options.agent = this._options.agents[scheme];
|
|
}
|
|
var request = this._currentRequest = nativeProtocol.request(this._options, this._onNativeResponse);
|
|
request._redirectable = this;
|
|
for (var event of events) {
|
|
request.on(event, eventHandlers[event]);
|
|
}
|
|
this._currentUrl = /^\//.test(this._options.path) ? url2.format(this._options) : (
|
|
// When making a request to a proxy, […]
|
|
// a client MUST send the target URI in absolute-form […].
|
|
this._options.path
|
|
);
|
|
if (this._isRedirect) {
|
|
var i = 0;
|
|
var self2 = this;
|
|
var buffers = this._requestBodyBuffers;
|
|
(function writeNext(error) {
|
|
if (request === self2._currentRequest) {
|
|
if (error) {
|
|
self2.emit("error", error);
|
|
} else if (i < buffers.length) {
|
|
var buffer = buffers[i++];
|
|
if (!request.finished) {
|
|
request.write(buffer.data, buffer.encoding, writeNext);
|
|
}
|
|
} else if (self2._ended) {
|
|
request.end();
|
|
}
|
|
}
|
|
})();
|
|
}
|
|
};
|
|
RedirectableRequest.prototype._processResponse = function(response) {
|
|
var statusCode = response.statusCode;
|
|
if (this._options.trackRedirects) {
|
|
this._redirects.push({
|
|
url: this._currentUrl,
|
|
headers: response.headers,
|
|
statusCode
|
|
});
|
|
}
|
|
var location = response.headers.location;
|
|
if (!location || this._options.followRedirects === false || statusCode < 300 || statusCode >= 400) {
|
|
response.responseUrl = this._currentUrl;
|
|
response.redirects = this._redirects;
|
|
this.emit("response", response);
|
|
this._requestBodyBuffers = [];
|
|
return;
|
|
}
|
|
destroyRequest(this._currentRequest);
|
|
response.destroy();
|
|
if (++this._redirectCount > this._options.maxRedirects) {
|
|
throw new TooManyRedirectsError();
|
|
}
|
|
var requestHeaders;
|
|
var beforeRedirect = this._options.beforeRedirect;
|
|
if (beforeRedirect) {
|
|
requestHeaders = Object.assign({
|
|
// The Host header was set by nativeProtocol.request
|
|
Host: response.req.getHeader("host")
|
|
}, this._options.headers);
|
|
}
|
|
var method = this._options.method;
|
|
if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || // RFC7231§6.4.4: The 303 (See Other) status code indicates that
|
|
// the server is redirecting the user agent to a different resource […]
|
|
// A user agent can perform a retrieval request targeting that URI
|
|
// (a GET or HEAD request if using HTTP) […]
|
|
statusCode === 303 && !/^(?:GET|HEAD)$/.test(this._options.method)) {
|
|
this._options.method = "GET";
|
|
this._requestBodyBuffers = [];
|
|
removeMatchingHeaders(/^content-/i, this._options.headers);
|
|
}
|
|
var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);
|
|
var currentUrlParts = parseUrl2(this._currentUrl);
|
|
var currentHost = currentHostHeader || currentUrlParts.host;
|
|
var currentUrl = /^\w+:/.test(location) ? this._currentUrl : url2.format(Object.assign(currentUrlParts, { host: currentHost }));
|
|
var redirectUrl = resolveUrl(location, currentUrl);
|
|
debug("redirecting to", redirectUrl.href);
|
|
this._isRedirect = true;
|
|
spreadUrlObject(redirectUrl, this._options);
|
|
if (redirectUrl.protocol !== currentUrlParts.protocol && redirectUrl.protocol !== "https:" || redirectUrl.host !== currentHost && !isSubdomain(redirectUrl.host, currentHost)) {
|
|
removeMatchingHeaders(/^(?:(?:proxy-)?authorization|cookie)$/i, this._options.headers);
|
|
}
|
|
if (isFunction3(beforeRedirect)) {
|
|
var responseDetails = {
|
|
headers: response.headers,
|
|
statusCode
|
|
};
|
|
var requestDetails = {
|
|
url: currentUrl,
|
|
method,
|
|
headers: requestHeaders
|
|
};
|
|
beforeRedirect(this._options, responseDetails, requestDetails);
|
|
this._sanitizeOptions(this._options);
|
|
}
|
|
this._performRequest();
|
|
};
|
|
function wrap(protocols) {
|
|
var exports3 = {
|
|
maxRedirects: 21,
|
|
maxBodyLength: 10 * 1024 * 1024
|
|
};
|
|
var nativeProtocols = {};
|
|
Object.keys(protocols).forEach(function(scheme) {
|
|
var protocol = scheme + ":";
|
|
var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];
|
|
var wrappedProtocol = exports3[scheme] = Object.create(nativeProtocol);
|
|
function request(input, options, callback) {
|
|
if (isURL(input)) {
|
|
input = spreadUrlObject(input);
|
|
} else if (isString2(input)) {
|
|
input = spreadUrlObject(parseUrl2(input));
|
|
} else {
|
|
callback = options;
|
|
options = validateUrl(input);
|
|
input = { protocol };
|
|
}
|
|
if (isFunction3(options)) {
|
|
callback = options;
|
|
options = null;
|
|
}
|
|
options = Object.assign({
|
|
maxRedirects: exports3.maxRedirects,
|
|
maxBodyLength: exports3.maxBodyLength
|
|
}, input, options);
|
|
options.nativeProtocols = nativeProtocols;
|
|
if (!isString2(options.host) && !isString2(options.hostname)) {
|
|
options.hostname = "::1";
|
|
}
|
|
assert.equal(options.protocol, protocol, "protocol mismatch");
|
|
debug("options", options);
|
|
return new RedirectableRequest(options, callback);
|
|
}
|
|
function get(input, options, callback) {
|
|
var wrappedRequest = wrappedProtocol.request(input, options, callback);
|
|
wrappedRequest.end();
|
|
return wrappedRequest;
|
|
}
|
|
Object.defineProperties(wrappedProtocol, {
|
|
request: { value: request, configurable: true, enumerable: true, writable: true },
|
|
get: { value: get, configurable: true, enumerable: true, writable: true }
|
|
});
|
|
});
|
|
return exports3;
|
|
}
|
|
function noop2() {
|
|
}
|
|
function parseUrl2(input) {
|
|
var parsed;
|
|
if (useNativeURL) {
|
|
parsed = new URL2(input);
|
|
} else {
|
|
parsed = validateUrl(url2.parse(input));
|
|
if (!isString2(parsed.protocol)) {
|
|
throw new InvalidUrlError({ input });
|
|
}
|
|
}
|
|
return parsed;
|
|
}
|
|
function resolveUrl(relative, base) {
|
|
return useNativeURL ? new URL2(relative, base) : parseUrl2(url2.resolve(base, relative));
|
|
}
|
|
function validateUrl(input) {
|
|
if (/^\[/.test(input.hostname) && !/^\[[:0-9a-f]+\]$/i.test(input.hostname)) {
|
|
throw new InvalidUrlError({ input: input.href || input });
|
|
}
|
|
if (/^\[/.test(input.host) && !/^\[[:0-9a-f]+\](:\d+)?$/i.test(input.host)) {
|
|
throw new InvalidUrlError({ input: input.href || input });
|
|
}
|
|
return input;
|
|
}
|
|
function spreadUrlObject(urlObject, target) {
|
|
var spread3 = target || {};
|
|
for (var key of preservedUrlFields) {
|
|
spread3[key] = urlObject[key];
|
|
}
|
|
if (spread3.hostname.startsWith("[")) {
|
|
spread3.hostname = spread3.hostname.slice(1, -1);
|
|
}
|
|
if (spread3.port !== "") {
|
|
spread3.port = Number(spread3.port);
|
|
}
|
|
spread3.path = spread3.search ? spread3.pathname + spread3.search : spread3.pathname;
|
|
return spread3;
|
|
}
|
|
function removeMatchingHeaders(regex, headers) {
|
|
var lastValue;
|
|
for (var header in headers) {
|
|
if (regex.test(header)) {
|
|
lastValue = headers[header];
|
|
delete headers[header];
|
|
}
|
|
}
|
|
return lastValue === null || typeof lastValue === "undefined" ? void 0 : String(lastValue).trim();
|
|
}
|
|
function createErrorType(code, message, baseClass) {
|
|
function CustomError(properties) {
|
|
if (isFunction3(Error.captureStackTrace)) {
|
|
Error.captureStackTrace(this, this.constructor);
|
|
}
|
|
Object.assign(this, properties || {});
|
|
this.code = code;
|
|
this.message = this.cause ? message + ": " + this.cause.message : message;
|
|
}
|
|
CustomError.prototype = new (baseClass || Error)();
|
|
Object.defineProperties(CustomError.prototype, {
|
|
constructor: {
|
|
value: CustomError,
|
|
enumerable: false
|
|
},
|
|
name: {
|
|
value: "Error [" + code + "]",
|
|
enumerable: false
|
|
}
|
|
});
|
|
return CustomError;
|
|
}
|
|
function destroyRequest(request, error) {
|
|
for (var event of events) {
|
|
request.removeListener(event, eventHandlers[event]);
|
|
}
|
|
request.on("error", noop2);
|
|
request.destroy(error);
|
|
}
|
|
function isSubdomain(subdomain, domain) {
|
|
assert(isString2(subdomain) && isString2(domain));
|
|
var dot = subdomain.length - domain.length - 1;
|
|
return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain);
|
|
}
|
|
function isString2(value) {
|
|
return typeof value === "string" || value instanceof String;
|
|
}
|
|
function isFunction3(value) {
|
|
return typeof value === "function";
|
|
}
|
|
function isBuffer2(value) {
|
|
return typeof value === "object" && "length" in value;
|
|
}
|
|
function isURL(value) {
|
|
return URL2 && value instanceof URL2;
|
|
}
|
|
module2.exports = wrap({ http: http3, https: https2 });
|
|
module2.exports.wrap = wrap;
|
|
}
|
|
});
|
|
|
|
// src/extension.ts
|
|
var extension_exports = {};
|
|
__export(extension_exports, {
|
|
activate: () => activate,
|
|
deactivate: () => deactivate
|
|
});
|
|
module.exports = __toCommonJS(extension_exports);
|
|
var vscode = __toESM(require("vscode"));
|
|
|
|
// node_modules/axios/lib/helpers/bind.js
|
|
function bind(fn, thisArg) {
|
|
return function wrap() {
|
|
return fn.apply(thisArg, arguments);
|
|
};
|
|
}
|
|
|
|
// node_modules/axios/lib/utils.js
|
|
var { toString } = Object.prototype;
|
|
var { getPrototypeOf } = Object;
|
|
var { iterator, toStringTag } = Symbol;
|
|
var kindOf = /* @__PURE__ */ ((cache) => (thing) => {
|
|
const str = toString.call(thing);
|
|
return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());
|
|
})(/* @__PURE__ */ Object.create(null));
|
|
var kindOfTest = (type) => {
|
|
type = type.toLowerCase();
|
|
return (thing) => kindOf(thing) === type;
|
|
};
|
|
var typeOfTest = (type) => (thing) => typeof thing === type;
|
|
var { isArray } = Array;
|
|
var isUndefined = typeOfTest("undefined");
|
|
function isBuffer(val) {
|
|
return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
|
|
}
|
|
var isArrayBuffer = kindOfTest("ArrayBuffer");
|
|
function isArrayBufferView(val) {
|
|
let result;
|
|
if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) {
|
|
result = ArrayBuffer.isView(val);
|
|
} else {
|
|
result = val && val.buffer && isArrayBuffer(val.buffer);
|
|
}
|
|
return result;
|
|
}
|
|
var isString = typeOfTest("string");
|
|
var isFunction = typeOfTest("function");
|
|
var isNumber = typeOfTest("number");
|
|
var isObject = (thing) => thing !== null && typeof thing === "object";
|
|
var isBoolean = (thing) => thing === true || thing === false;
|
|
var isPlainObject = (val) => {
|
|
if (kindOf(val) !== "object") {
|
|
return false;
|
|
}
|
|
const prototype2 = getPrototypeOf(val);
|
|
return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(toStringTag in val) && !(iterator in val);
|
|
};
|
|
var isEmptyObject = (val) => {
|
|
if (!isObject(val) || isBuffer(val)) {
|
|
return false;
|
|
}
|
|
try {
|
|
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
};
|
|
var isDate = kindOfTest("Date");
|
|
var isFile = kindOfTest("File");
|
|
var isReactNativeBlob = (value) => {
|
|
return !!(value && typeof value.uri !== "undefined");
|
|
};
|
|
var isReactNative = (formData) => formData && typeof formData.getParts !== "undefined";
|
|
var isBlob = kindOfTest("Blob");
|
|
var isFileList = kindOfTest("FileList");
|
|
var isStream = (val) => isObject(val) && isFunction(val.pipe);
|
|
function getGlobal() {
|
|
if (typeof globalThis !== "undefined") return globalThis;
|
|
if (typeof self !== "undefined") return self;
|
|
if (typeof window !== "undefined") return window;
|
|
if (typeof global !== "undefined") return global;
|
|
return {};
|
|
}
|
|
var G = getGlobal();
|
|
var FormDataCtor = typeof G.FormData !== "undefined" ? G.FormData : void 0;
|
|
var isFormData = (thing) => {
|
|
let kind;
|
|
return thing && (FormDataCtor && thing instanceof FormDataCtor || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance
|
|
kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]"));
|
|
};
|
|
var isURLSearchParams = kindOfTest("URLSearchParams");
|
|
var [isReadableStream, isRequest, isResponse, isHeaders] = [
|
|
"ReadableStream",
|
|
"Request",
|
|
"Response",
|
|
"Headers"
|
|
].map(kindOfTest);
|
|
var trim = (str) => {
|
|
return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
|
|
};
|
|
function forEach(obj, fn, { allOwnKeys = false } = {}) {
|
|
if (obj === null || typeof obj === "undefined") {
|
|
return;
|
|
}
|
|
let i;
|
|
let l;
|
|
if (typeof obj !== "object") {
|
|
obj = [obj];
|
|
}
|
|
if (isArray(obj)) {
|
|
for (i = 0, l = obj.length; i < l; i++) {
|
|
fn.call(null, obj[i], i, obj);
|
|
}
|
|
} else {
|
|
if (isBuffer(obj)) {
|
|
return;
|
|
}
|
|
const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
|
const len = keys.length;
|
|
let key;
|
|
for (i = 0; i < len; i++) {
|
|
key = keys[i];
|
|
fn.call(null, obj[key], key, obj);
|
|
}
|
|
}
|
|
}
|
|
function findKey(obj, key) {
|
|
if (isBuffer(obj)) {
|
|
return null;
|
|
}
|
|
key = key.toLowerCase();
|
|
const keys = Object.keys(obj);
|
|
let i = keys.length;
|
|
let _key;
|
|
while (i-- > 0) {
|
|
_key = keys[i];
|
|
if (key === _key.toLowerCase()) {
|
|
return _key;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
var _global = (() => {
|
|
if (typeof globalThis !== "undefined") return globalThis;
|
|
return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global;
|
|
})();
|
|
var isContextDefined = (context) => !isUndefined(context) && context !== _global;
|
|
function merge() {
|
|
const { caseless, skipUndefined } = isContextDefined(this) && this || {};
|
|
const result = {};
|
|
const assignValue = (val, key) => {
|
|
if (key === "__proto__" || key === "constructor" || key === "prototype") {
|
|
return;
|
|
}
|
|
const targetKey = caseless && findKey(result, key) || key;
|
|
if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
|
|
result[targetKey] = merge(result[targetKey], val);
|
|
} else if (isPlainObject(val)) {
|
|
result[targetKey] = merge({}, val);
|
|
} else if (isArray(val)) {
|
|
result[targetKey] = val.slice();
|
|
} else if (!skipUndefined || !isUndefined(val)) {
|
|
result[targetKey] = val;
|
|
}
|
|
};
|
|
for (let i = 0, l = arguments.length; i < l; i++) {
|
|
arguments[i] && forEach(arguments[i], assignValue);
|
|
}
|
|
return result;
|
|
}
|
|
var extend = (a, b, thisArg, { allOwnKeys } = {}) => {
|
|
forEach(
|
|
b,
|
|
(val, key) => {
|
|
if (thisArg && isFunction(val)) {
|
|
Object.defineProperty(a, key, {
|
|
value: bind(val, thisArg),
|
|
writable: true,
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
} else {
|
|
Object.defineProperty(a, key, {
|
|
value: val,
|
|
writable: true,
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
}
|
|
},
|
|
{ allOwnKeys }
|
|
);
|
|
return a;
|
|
};
|
|
var stripBOM = (content) => {
|
|
if (content.charCodeAt(0) === 65279) {
|
|
content = content.slice(1);
|
|
}
|
|
return content;
|
|
};
|
|
var inherits = (constructor, superConstructor, props, descriptors) => {
|
|
constructor.prototype = Object.create(superConstructor.prototype, descriptors);
|
|
Object.defineProperty(constructor.prototype, "constructor", {
|
|
value: constructor,
|
|
writable: true,
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
Object.defineProperty(constructor, "super", {
|
|
value: superConstructor.prototype
|
|
});
|
|
props && Object.assign(constructor.prototype, props);
|
|
};
|
|
var toFlatObject = (sourceObj, destObj, filter2, propFilter) => {
|
|
let props;
|
|
let i;
|
|
let prop;
|
|
const merged = {};
|
|
destObj = destObj || {};
|
|
if (sourceObj == null) return destObj;
|
|
do {
|
|
props = Object.getOwnPropertyNames(sourceObj);
|
|
i = props.length;
|
|
while (i-- > 0) {
|
|
prop = props[i];
|
|
if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
|
|
destObj[prop] = sourceObj[prop];
|
|
merged[prop] = true;
|
|
}
|
|
}
|
|
sourceObj = filter2 !== false && getPrototypeOf(sourceObj);
|
|
} while (sourceObj && (!filter2 || filter2(sourceObj, destObj)) && sourceObj !== Object.prototype);
|
|
return destObj;
|
|
};
|
|
var endsWith = (str, searchString, position) => {
|
|
str = String(str);
|
|
if (position === void 0 || position > str.length) {
|
|
position = str.length;
|
|
}
|
|
position -= searchString.length;
|
|
const lastIndex = str.indexOf(searchString, position);
|
|
return lastIndex !== -1 && lastIndex === position;
|
|
};
|
|
var toArray = (thing) => {
|
|
if (!thing) return null;
|
|
if (isArray(thing)) return thing;
|
|
let i = thing.length;
|
|
if (!isNumber(i)) return null;
|
|
const arr = new Array(i);
|
|
while (i-- > 0) {
|
|
arr[i] = thing[i];
|
|
}
|
|
return arr;
|
|
};
|
|
var isTypedArray = /* @__PURE__ */ ((TypedArray) => {
|
|
return (thing) => {
|
|
return TypedArray && thing instanceof TypedArray;
|
|
};
|
|
})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array));
|
|
var forEachEntry = (obj, fn) => {
|
|
const generator = obj && obj[iterator];
|
|
const _iterator = generator.call(obj);
|
|
let result;
|
|
while ((result = _iterator.next()) && !result.done) {
|
|
const pair = result.value;
|
|
fn.call(obj, pair[0], pair[1]);
|
|
}
|
|
};
|
|
var matchAll = (regExp, str) => {
|
|
let matches;
|
|
const arr = [];
|
|
while ((matches = regExp.exec(str)) !== null) {
|
|
arr.push(matches);
|
|
}
|
|
return arr;
|
|
};
|
|
var isHTMLForm = kindOfTest("HTMLFormElement");
|
|
var toCamelCase = (str) => {
|
|
return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) {
|
|
return p1.toUpperCase() + p2;
|
|
});
|
|
};
|
|
var hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype);
|
|
var isRegExp = kindOfTest("RegExp");
|
|
var reduceDescriptors = (obj, reducer) => {
|
|
const descriptors = Object.getOwnPropertyDescriptors(obj);
|
|
const reducedDescriptors = {};
|
|
forEach(descriptors, (descriptor, name) => {
|
|
let ret;
|
|
if ((ret = reducer(descriptor, name, obj)) !== false) {
|
|
reducedDescriptors[name] = ret || descriptor;
|
|
}
|
|
});
|
|
Object.defineProperties(obj, reducedDescriptors);
|
|
};
|
|
var freezeMethods = (obj) => {
|
|
reduceDescriptors(obj, (descriptor, name) => {
|
|
if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) {
|
|
return false;
|
|
}
|
|
const value = obj[name];
|
|
if (!isFunction(value)) return;
|
|
descriptor.enumerable = false;
|
|
if ("writable" in descriptor) {
|
|
descriptor.writable = false;
|
|
return;
|
|
}
|
|
if (!descriptor.set) {
|
|
descriptor.set = () => {
|
|
throw Error("Can not rewrite read-only method '" + name + "'");
|
|
};
|
|
}
|
|
});
|
|
};
|
|
var toObjectSet = (arrayOrString, delimiter) => {
|
|
const obj = {};
|
|
const define = (arr) => {
|
|
arr.forEach((value) => {
|
|
obj[value] = true;
|
|
});
|
|
};
|
|
isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
|
|
return obj;
|
|
};
|
|
var noop = () => {
|
|
};
|
|
var toFiniteNumber = (value, defaultValue) => {
|
|
return value != null && Number.isFinite(value = +value) ? value : defaultValue;
|
|
};
|
|
function isSpecCompliantForm(thing) {
|
|
return !!(thing && isFunction(thing.append) && thing[toStringTag] === "FormData" && thing[iterator]);
|
|
}
|
|
var toJSONObject = (obj) => {
|
|
const stack = new Array(10);
|
|
const visit = (source, i) => {
|
|
if (isObject(source)) {
|
|
if (stack.indexOf(source) >= 0) {
|
|
return;
|
|
}
|
|
if (isBuffer(source)) {
|
|
return source;
|
|
}
|
|
if (!("toJSON" in source)) {
|
|
stack[i] = source;
|
|
const target = isArray(source) ? [] : {};
|
|
forEach(source, (value, key) => {
|
|
const reducedValue = visit(value, i + 1);
|
|
!isUndefined(reducedValue) && (target[key] = reducedValue);
|
|
});
|
|
stack[i] = void 0;
|
|
return target;
|
|
}
|
|
}
|
|
return source;
|
|
};
|
|
return visit(obj, 0);
|
|
};
|
|
var isAsyncFn = kindOfTest("AsyncFunction");
|
|
var isThenable = (thing) => thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
|
|
var _setImmediate = ((setImmediateSupported, postMessageSupported) => {
|
|
if (setImmediateSupported) {
|
|
return setImmediate;
|
|
}
|
|
return postMessageSupported ? ((token, callbacks) => {
|
|
_global.addEventListener(
|
|
"message",
|
|
({ source, data }) => {
|
|
if (source === _global && data === token) {
|
|
callbacks.length && callbacks.shift()();
|
|
}
|
|
},
|
|
false
|
|
);
|
|
return (cb) => {
|
|
callbacks.push(cb);
|
|
_global.postMessage(token, "*");
|
|
};
|
|
})(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
|
|
})(typeof setImmediate === "function", isFunction(_global.postMessage));
|
|
var asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate;
|
|
var isIterable = (thing) => thing != null && isFunction(thing[iterator]);
|
|
var utils_default = {
|
|
isArray,
|
|
isArrayBuffer,
|
|
isBuffer,
|
|
isFormData,
|
|
isArrayBufferView,
|
|
isString,
|
|
isNumber,
|
|
isBoolean,
|
|
isObject,
|
|
isPlainObject,
|
|
isEmptyObject,
|
|
isReadableStream,
|
|
isRequest,
|
|
isResponse,
|
|
isHeaders,
|
|
isUndefined,
|
|
isDate,
|
|
isFile,
|
|
isReactNativeBlob,
|
|
isReactNative,
|
|
isBlob,
|
|
isRegExp,
|
|
isFunction,
|
|
isStream,
|
|
isURLSearchParams,
|
|
isTypedArray,
|
|
isFileList,
|
|
forEach,
|
|
merge,
|
|
extend,
|
|
trim,
|
|
stripBOM,
|
|
inherits,
|
|
toFlatObject,
|
|
kindOf,
|
|
kindOfTest,
|
|
endsWith,
|
|
toArray,
|
|
forEachEntry,
|
|
matchAll,
|
|
isHTMLForm,
|
|
hasOwnProperty,
|
|
hasOwnProp: hasOwnProperty,
|
|
// an alias to avoid ESLint no-prototype-builtins detection
|
|
reduceDescriptors,
|
|
freezeMethods,
|
|
toObjectSet,
|
|
toCamelCase,
|
|
noop,
|
|
toFiniteNumber,
|
|
findKey,
|
|
global: _global,
|
|
isContextDefined,
|
|
isSpecCompliantForm,
|
|
toJSONObject,
|
|
isAsyncFn,
|
|
isThenable,
|
|
setImmediate: _setImmediate,
|
|
asap,
|
|
isIterable
|
|
};
|
|
|
|
// node_modules/axios/lib/core/AxiosError.js
|
|
var AxiosError = class _AxiosError extends Error {
|
|
static from(error, code, config, request, response, customProps) {
|
|
const axiosError = new _AxiosError(error.message, code || error.code, config, request, response);
|
|
axiosError.cause = error;
|
|
axiosError.name = error.name;
|
|
if (error.status != null && axiosError.status == null) {
|
|
axiosError.status = error.status;
|
|
}
|
|
customProps && Object.assign(axiosError, customProps);
|
|
return axiosError;
|
|
}
|
|
/**
|
|
* Create an Error with the specified message, config, error code, request and response.
|
|
*
|
|
* @param {string} message The error message.
|
|
* @param {string} [code] The error code (for example, 'ECONNABORTED').
|
|
* @param {Object} [config] The config.
|
|
* @param {Object} [request] The request.
|
|
* @param {Object} [response] The response.
|
|
*
|
|
* @returns {Error} The created error.
|
|
*/
|
|
constructor(message, code, config, request, response) {
|
|
super(message);
|
|
Object.defineProperty(this, "message", {
|
|
value: message,
|
|
enumerable: true,
|
|
writable: true,
|
|
configurable: true
|
|
});
|
|
this.name = "AxiosError";
|
|
this.isAxiosError = true;
|
|
code && (this.code = code);
|
|
config && (this.config = config);
|
|
request && (this.request = request);
|
|
if (response) {
|
|
this.response = response;
|
|
this.status = response.status;
|
|
}
|
|
}
|
|
toJSON() {
|
|
return {
|
|
// Standard
|
|
message: this.message,
|
|
name: this.name,
|
|
// Microsoft
|
|
description: this.description,
|
|
number: this.number,
|
|
// Mozilla
|
|
fileName: this.fileName,
|
|
lineNumber: this.lineNumber,
|
|
columnNumber: this.columnNumber,
|
|
stack: this.stack,
|
|
// Axios
|
|
config: utils_default.toJSONObject(this.config),
|
|
code: this.code,
|
|
status: this.status
|
|
};
|
|
}
|
|
};
|
|
AxiosError.ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE";
|
|
AxiosError.ERR_BAD_OPTION = "ERR_BAD_OPTION";
|
|
AxiosError.ECONNABORTED = "ECONNABORTED";
|
|
AxiosError.ETIMEDOUT = "ETIMEDOUT";
|
|
AxiosError.ERR_NETWORK = "ERR_NETWORK";
|
|
AxiosError.ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS";
|
|
AxiosError.ERR_DEPRECATED = "ERR_DEPRECATED";
|
|
AxiosError.ERR_BAD_RESPONSE = "ERR_BAD_RESPONSE";
|
|
AxiosError.ERR_BAD_REQUEST = "ERR_BAD_REQUEST";
|
|
AxiosError.ERR_CANCELED = "ERR_CANCELED";
|
|
AxiosError.ERR_NOT_SUPPORT = "ERR_NOT_SUPPORT";
|
|
AxiosError.ERR_INVALID_URL = "ERR_INVALID_URL";
|
|
var AxiosError_default = AxiosError;
|
|
|
|
// node_modules/axios/lib/platform/node/classes/FormData.js
|
|
var import_form_data = __toESM(require_form_data(), 1);
|
|
var FormData_default = import_form_data.default;
|
|
|
|
// node_modules/axios/lib/helpers/toFormData.js
|
|
function isVisitable(thing) {
|
|
return utils_default.isPlainObject(thing) || utils_default.isArray(thing);
|
|
}
|
|
function removeBrackets(key) {
|
|
return utils_default.endsWith(key, "[]") ? key.slice(0, -2) : key;
|
|
}
|
|
function renderKey(path2, key, dots) {
|
|
if (!path2) return key;
|
|
return path2.concat(key).map(function each(token, i) {
|
|
token = removeBrackets(token);
|
|
return !dots && i ? "[" + token + "]" : token;
|
|
}).join(dots ? "." : "");
|
|
}
|
|
function isFlatArray(arr) {
|
|
return utils_default.isArray(arr) && !arr.some(isVisitable);
|
|
}
|
|
var predicates = utils_default.toFlatObject(utils_default, {}, null, function filter(prop) {
|
|
return /^is[A-Z]/.test(prop);
|
|
});
|
|
function toFormData(obj, formData, options) {
|
|
if (!utils_default.isObject(obj)) {
|
|
throw new TypeError("target must be an object");
|
|
}
|
|
formData = formData || new (FormData_default || FormData)();
|
|
options = utils_default.toFlatObject(
|
|
options,
|
|
{
|
|
metaTokens: true,
|
|
dots: false,
|
|
indexes: false
|
|
},
|
|
false,
|
|
function defined(option, source) {
|
|
return !utils_default.isUndefined(source[option]);
|
|
}
|
|
);
|
|
const metaTokens = options.metaTokens;
|
|
const visitor = options.visitor || defaultVisitor;
|
|
const dots = options.dots;
|
|
const indexes = options.indexes;
|
|
const _Blob = options.Blob || typeof Blob !== "undefined" && Blob;
|
|
const useBlob = _Blob && utils_default.isSpecCompliantForm(formData);
|
|
if (!utils_default.isFunction(visitor)) {
|
|
throw new TypeError("visitor must be a function");
|
|
}
|
|
function convertValue(value) {
|
|
if (value === null) return "";
|
|
if (utils_default.isDate(value)) {
|
|
return value.toISOString();
|
|
}
|
|
if (utils_default.isBoolean(value)) {
|
|
return value.toString();
|
|
}
|
|
if (!useBlob && utils_default.isBlob(value)) {
|
|
throw new AxiosError_default("Blob is not supported. Use a Buffer instead.");
|
|
}
|
|
if (utils_default.isArrayBuffer(value) || utils_default.isTypedArray(value)) {
|
|
return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value);
|
|
}
|
|
return value;
|
|
}
|
|
function defaultVisitor(value, key, path2) {
|
|
let arr = value;
|
|
if (utils_default.isReactNative(formData) && utils_default.isReactNativeBlob(value)) {
|
|
formData.append(renderKey(path2, key, dots), convertValue(value));
|
|
return false;
|
|
}
|
|
if (value && !path2 && typeof value === "object") {
|
|
if (utils_default.endsWith(key, "{}")) {
|
|
key = metaTokens ? key : key.slice(0, -2);
|
|
value = JSON.stringify(value);
|
|
} else if (utils_default.isArray(value) && isFlatArray(value) || (utils_default.isFileList(value) || utils_default.endsWith(key, "[]")) && (arr = utils_default.toArray(value))) {
|
|
key = removeBrackets(key);
|
|
arr.forEach(function each(el, index) {
|
|
!(utils_default.isUndefined(el) || el === null) && formData.append(
|
|
// eslint-disable-next-line no-nested-ternary
|
|
indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + "[]",
|
|
convertValue(el)
|
|
);
|
|
});
|
|
return false;
|
|
}
|
|
}
|
|
if (isVisitable(value)) {
|
|
return true;
|
|
}
|
|
formData.append(renderKey(path2, key, dots), convertValue(value));
|
|
return false;
|
|
}
|
|
const stack = [];
|
|
const exposedHelpers = Object.assign(predicates, {
|
|
defaultVisitor,
|
|
convertValue,
|
|
isVisitable
|
|
});
|
|
function build(value, path2) {
|
|
if (utils_default.isUndefined(value)) return;
|
|
if (stack.indexOf(value) !== -1) {
|
|
throw Error("Circular reference detected in " + path2.join("."));
|
|
}
|
|
stack.push(value);
|
|
utils_default.forEach(value, function each(el, key) {
|
|
const result = !(utils_default.isUndefined(el) || el === null) && visitor.call(formData, el, utils_default.isString(key) ? key.trim() : key, path2, exposedHelpers);
|
|
if (result === true) {
|
|
build(el, path2 ? path2.concat(key) : [key]);
|
|
}
|
|
});
|
|
stack.pop();
|
|
}
|
|
if (!utils_default.isObject(obj)) {
|
|
throw new TypeError("data must be an object");
|
|
}
|
|
build(obj);
|
|
return formData;
|
|
}
|
|
var toFormData_default = toFormData;
|
|
|
|
// node_modules/axios/lib/helpers/AxiosURLSearchParams.js
|
|
function encode(str) {
|
|
const charMap = {
|
|
"!": "%21",
|
|
"'": "%27",
|
|
"(": "%28",
|
|
")": "%29",
|
|
"~": "%7E",
|
|
"%20": "+",
|
|
"%00": "\0"
|
|
};
|
|
return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {
|
|
return charMap[match];
|
|
});
|
|
}
|
|
function AxiosURLSearchParams(params, options) {
|
|
this._pairs = [];
|
|
params && toFormData_default(params, this, options);
|
|
}
|
|
var prototype = AxiosURLSearchParams.prototype;
|
|
prototype.append = function append(name, value) {
|
|
this._pairs.push([name, value]);
|
|
};
|
|
prototype.toString = function toString2(encoder) {
|
|
const _encode = encoder ? function(value) {
|
|
return encoder.call(this, value, encode);
|
|
} : encode;
|
|
return this._pairs.map(function each(pair) {
|
|
return _encode(pair[0]) + "=" + _encode(pair[1]);
|
|
}, "").join("&");
|
|
};
|
|
var AxiosURLSearchParams_default = AxiosURLSearchParams;
|
|
|
|
// node_modules/axios/lib/helpers/buildURL.js
|
|
function encode2(val) {
|
|
return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+");
|
|
}
|
|
function buildURL(url2, params, options) {
|
|
if (!params) {
|
|
return url2;
|
|
}
|
|
const _encode = options && options.encode || encode2;
|
|
const _options = utils_default.isFunction(options) ? {
|
|
serialize: options
|
|
} : options;
|
|
const serializeFn = _options && _options.serialize;
|
|
let serializedParams;
|
|
if (serializeFn) {
|
|
serializedParams = serializeFn(params, _options);
|
|
} else {
|
|
serializedParams = utils_default.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams_default(params, _options).toString(_encode);
|
|
}
|
|
if (serializedParams) {
|
|
const hashmarkIndex = url2.indexOf("#");
|
|
if (hashmarkIndex !== -1) {
|
|
url2 = url2.slice(0, hashmarkIndex);
|
|
}
|
|
url2 += (url2.indexOf("?") === -1 ? "?" : "&") + serializedParams;
|
|
}
|
|
return url2;
|
|
}
|
|
|
|
// node_modules/axios/lib/core/InterceptorManager.js
|
|
var InterceptorManager = class {
|
|
constructor() {
|
|
this.handlers = [];
|
|
}
|
|
/**
|
|
* Add a new interceptor to the stack
|
|
*
|
|
* @param {Function} fulfilled The function to handle `then` for a `Promise`
|
|
* @param {Function} rejected The function to handle `reject` for a `Promise`
|
|
* @param {Object} options The options for the interceptor, synchronous and runWhen
|
|
*
|
|
* @return {Number} An ID used to remove interceptor later
|
|
*/
|
|
use(fulfilled, rejected, options) {
|
|
this.handlers.push({
|
|
fulfilled,
|
|
rejected,
|
|
synchronous: options ? options.synchronous : false,
|
|
runWhen: options ? options.runWhen : null
|
|
});
|
|
return this.handlers.length - 1;
|
|
}
|
|
/**
|
|
* Remove an interceptor from the stack
|
|
*
|
|
* @param {Number} id The ID that was returned by `use`
|
|
*
|
|
* @returns {void}
|
|
*/
|
|
eject(id) {
|
|
if (this.handlers[id]) {
|
|
this.handlers[id] = null;
|
|
}
|
|
}
|
|
/**
|
|
* Clear all interceptors from the stack
|
|
*
|
|
* @returns {void}
|
|
*/
|
|
clear() {
|
|
if (this.handlers) {
|
|
this.handlers = [];
|
|
}
|
|
}
|
|
/**
|
|
* Iterate over all the registered interceptors
|
|
*
|
|
* This method is particularly useful for skipping over any
|
|
* interceptors that may have become `null` calling `eject`.
|
|
*
|
|
* @param {Function} fn The function to call for each interceptor
|
|
*
|
|
* @returns {void}
|
|
*/
|
|
forEach(fn) {
|
|
utils_default.forEach(this.handlers, function forEachHandler(h) {
|
|
if (h !== null) {
|
|
fn(h);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
var InterceptorManager_default = InterceptorManager;
|
|
|
|
// node_modules/axios/lib/defaults/transitional.js
|
|
var transitional_default = {
|
|
silentJSONParsing: true,
|
|
forcedJSONParsing: true,
|
|
clarifyTimeoutError: false,
|
|
legacyInterceptorReqResOrdering: true
|
|
};
|
|
|
|
// node_modules/axios/lib/platform/node/index.js
|
|
var import_crypto = __toESM(require("crypto"), 1);
|
|
|
|
// node_modules/axios/lib/platform/node/classes/URLSearchParams.js
|
|
var import_url = __toESM(require("url"), 1);
|
|
var URLSearchParams_default = import_url.default.URLSearchParams;
|
|
|
|
// node_modules/axios/lib/platform/node/index.js
|
|
var ALPHA = "abcdefghijklmnopqrstuvwxyz";
|
|
var DIGIT = "0123456789";
|
|
var ALPHABET = {
|
|
DIGIT,
|
|
ALPHA,
|
|
ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT
|
|
};
|
|
var generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {
|
|
let str = "";
|
|
const { length } = alphabet;
|
|
const randomValues = new Uint32Array(size);
|
|
import_crypto.default.randomFillSync(randomValues);
|
|
for (let i = 0; i < size; i++) {
|
|
str += alphabet[randomValues[i] % length];
|
|
}
|
|
return str;
|
|
};
|
|
var node_default = {
|
|
isNode: true,
|
|
classes: {
|
|
URLSearchParams: URLSearchParams_default,
|
|
FormData: FormData_default,
|
|
Blob: typeof Blob !== "undefined" && Blob || null
|
|
},
|
|
ALPHABET,
|
|
generateString,
|
|
protocols: ["http", "https", "file", "data"]
|
|
};
|
|
|
|
// node_modules/axios/lib/platform/common/utils.js
|
|
var utils_exports = {};
|
|
__export(utils_exports, {
|
|
hasBrowserEnv: () => hasBrowserEnv,
|
|
hasStandardBrowserEnv: () => hasStandardBrowserEnv,
|
|
hasStandardBrowserWebWorkerEnv: () => hasStandardBrowserWebWorkerEnv,
|
|
navigator: () => _navigator,
|
|
origin: () => origin
|
|
});
|
|
var hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined";
|
|
var _navigator = typeof navigator === "object" && navigator || void 0;
|
|
var hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0);
|
|
var hasStandardBrowserWebWorkerEnv = (() => {
|
|
return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef
|
|
self instanceof WorkerGlobalScope && typeof self.importScripts === "function";
|
|
})();
|
|
var origin = hasBrowserEnv && window.location.href || "http://localhost";
|
|
|
|
// node_modules/axios/lib/platform/index.js
|
|
var platform_default = {
|
|
...utils_exports,
|
|
...node_default
|
|
};
|
|
|
|
// node_modules/axios/lib/helpers/toURLEncodedForm.js
|
|
function toURLEncodedForm(data, options) {
|
|
return toFormData_default(data, new platform_default.classes.URLSearchParams(), {
|
|
visitor: function(value, key, path2, helpers) {
|
|
if (platform_default.isNode && utils_default.isBuffer(value)) {
|
|
this.append(key, value.toString("base64"));
|
|
return false;
|
|
}
|
|
return helpers.defaultVisitor.apply(this, arguments);
|
|
},
|
|
...options
|
|
});
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/formDataToJSON.js
|
|
function parsePropPath(name) {
|
|
return utils_default.matchAll(/\w+|\[(\w*)]/g, name).map((match) => {
|
|
return match[0] === "[]" ? "" : match[1] || match[0];
|
|
});
|
|
}
|
|
function arrayToObject(arr) {
|
|
const obj = {};
|
|
const keys = Object.keys(arr);
|
|
let i;
|
|
const len = keys.length;
|
|
let key;
|
|
for (i = 0; i < len; i++) {
|
|
key = keys[i];
|
|
obj[key] = arr[key];
|
|
}
|
|
return obj;
|
|
}
|
|
function formDataToJSON(formData) {
|
|
function buildPath(path2, value, target, index) {
|
|
let name = path2[index++];
|
|
if (name === "__proto__") return true;
|
|
const isNumericKey = Number.isFinite(+name);
|
|
const isLast = index >= path2.length;
|
|
name = !name && utils_default.isArray(target) ? target.length : name;
|
|
if (isLast) {
|
|
if (utils_default.hasOwnProp(target, name)) {
|
|
target[name] = [target[name], value];
|
|
} else {
|
|
target[name] = value;
|
|
}
|
|
return !isNumericKey;
|
|
}
|
|
if (!target[name] || !utils_default.isObject(target[name])) {
|
|
target[name] = [];
|
|
}
|
|
const result = buildPath(path2, value, target[name], index);
|
|
if (result && utils_default.isArray(target[name])) {
|
|
target[name] = arrayToObject(target[name]);
|
|
}
|
|
return !isNumericKey;
|
|
}
|
|
if (utils_default.isFormData(formData) && utils_default.isFunction(formData.entries)) {
|
|
const obj = {};
|
|
utils_default.forEachEntry(formData, (name, value) => {
|
|
buildPath(parsePropPath(name), value, obj, 0);
|
|
});
|
|
return obj;
|
|
}
|
|
return null;
|
|
}
|
|
var formDataToJSON_default = formDataToJSON;
|
|
|
|
// node_modules/axios/lib/defaults/index.js
|
|
function stringifySafely(rawValue, parser, encoder) {
|
|
if (utils_default.isString(rawValue)) {
|
|
try {
|
|
(parser || JSON.parse)(rawValue);
|
|
return utils_default.trim(rawValue);
|
|
} catch (e) {
|
|
if (e.name !== "SyntaxError") {
|
|
throw e;
|
|
}
|
|
}
|
|
}
|
|
return (encoder || JSON.stringify)(rawValue);
|
|
}
|
|
var defaults = {
|
|
transitional: transitional_default,
|
|
adapter: ["xhr", "http", "fetch"],
|
|
transformRequest: [
|
|
function transformRequest(data, headers) {
|
|
const contentType = headers.getContentType() || "";
|
|
const hasJSONContentType = contentType.indexOf("application/json") > -1;
|
|
const isObjectPayload = utils_default.isObject(data);
|
|
if (isObjectPayload && utils_default.isHTMLForm(data)) {
|
|
data = new FormData(data);
|
|
}
|
|
const isFormData2 = utils_default.isFormData(data);
|
|
if (isFormData2) {
|
|
return hasJSONContentType ? JSON.stringify(formDataToJSON_default(data)) : data;
|
|
}
|
|
if (utils_default.isArrayBuffer(data) || utils_default.isBuffer(data) || utils_default.isStream(data) || utils_default.isFile(data) || utils_default.isBlob(data) || utils_default.isReadableStream(data)) {
|
|
return data;
|
|
}
|
|
if (utils_default.isArrayBufferView(data)) {
|
|
return data.buffer;
|
|
}
|
|
if (utils_default.isURLSearchParams(data)) {
|
|
headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false);
|
|
return data.toString();
|
|
}
|
|
let isFileList2;
|
|
if (isObjectPayload) {
|
|
if (contentType.indexOf("application/x-www-form-urlencoded") > -1) {
|
|
return toURLEncodedForm(data, this.formSerializer).toString();
|
|
}
|
|
if ((isFileList2 = utils_default.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) {
|
|
const _FormData = this.env && this.env.FormData;
|
|
return toFormData_default(
|
|
isFileList2 ? { "files[]": data } : data,
|
|
_FormData && new _FormData(),
|
|
this.formSerializer
|
|
);
|
|
}
|
|
}
|
|
if (isObjectPayload || hasJSONContentType) {
|
|
headers.setContentType("application/json", false);
|
|
return stringifySafely(data);
|
|
}
|
|
return data;
|
|
}
|
|
],
|
|
transformResponse: [
|
|
function transformResponse(data) {
|
|
const transitional2 = this.transitional || defaults.transitional;
|
|
const forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing;
|
|
const JSONRequested = this.responseType === "json";
|
|
if (utils_default.isResponse(data) || utils_default.isReadableStream(data)) {
|
|
return data;
|
|
}
|
|
if (data && utils_default.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {
|
|
const silentJSONParsing = transitional2 && transitional2.silentJSONParsing;
|
|
const strictJSONParsing = !silentJSONParsing && JSONRequested;
|
|
try {
|
|
return JSON.parse(data, this.parseReviver);
|
|
} catch (e) {
|
|
if (strictJSONParsing) {
|
|
if (e.name === "SyntaxError") {
|
|
throw AxiosError_default.from(e, AxiosError_default.ERR_BAD_RESPONSE, this, null, this.response);
|
|
}
|
|
throw e;
|
|
}
|
|
}
|
|
}
|
|
return data;
|
|
}
|
|
],
|
|
/**
|
|
* A timeout in milliseconds to abort a request. If set to 0 (default) a
|
|
* timeout is not created.
|
|
*/
|
|
timeout: 0,
|
|
xsrfCookieName: "XSRF-TOKEN",
|
|
xsrfHeaderName: "X-XSRF-TOKEN",
|
|
maxContentLength: -1,
|
|
maxBodyLength: -1,
|
|
env: {
|
|
FormData: platform_default.classes.FormData,
|
|
Blob: platform_default.classes.Blob
|
|
},
|
|
validateStatus: function validateStatus(status) {
|
|
return status >= 200 && status < 300;
|
|
},
|
|
headers: {
|
|
common: {
|
|
Accept: "application/json, text/plain, */*",
|
|
"Content-Type": void 0
|
|
}
|
|
}
|
|
};
|
|
utils_default.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => {
|
|
defaults.headers[method] = {};
|
|
});
|
|
var defaults_default = defaults;
|
|
|
|
// node_modules/axios/lib/helpers/parseHeaders.js
|
|
var ignoreDuplicateOf = utils_default.toObjectSet([
|
|
"age",
|
|
"authorization",
|
|
"content-length",
|
|
"content-type",
|
|
"etag",
|
|
"expires",
|
|
"from",
|
|
"host",
|
|
"if-modified-since",
|
|
"if-unmodified-since",
|
|
"last-modified",
|
|
"location",
|
|
"max-forwards",
|
|
"proxy-authorization",
|
|
"referer",
|
|
"retry-after",
|
|
"user-agent"
|
|
]);
|
|
var parseHeaders_default = (rawHeaders) => {
|
|
const parsed = {};
|
|
let key;
|
|
let val;
|
|
let i;
|
|
rawHeaders && rawHeaders.split("\n").forEach(function parser(line) {
|
|
i = line.indexOf(":");
|
|
key = line.substring(0, i).trim().toLowerCase();
|
|
val = line.substring(i + 1).trim();
|
|
if (!key || parsed[key] && ignoreDuplicateOf[key]) {
|
|
return;
|
|
}
|
|
if (key === "set-cookie") {
|
|
if (parsed[key]) {
|
|
parsed[key].push(val);
|
|
} else {
|
|
parsed[key] = [val];
|
|
}
|
|
} else {
|
|
parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
|
|
}
|
|
});
|
|
return parsed;
|
|
};
|
|
|
|
// node_modules/axios/lib/core/AxiosHeaders.js
|
|
var $internals = /* @__PURE__ */ Symbol("internals");
|
|
var isValidHeaderValue = (value) => !/[\r\n]/.test(value);
|
|
function assertValidHeaderValue(value, header) {
|
|
if (value === false || value == null) {
|
|
return;
|
|
}
|
|
if (utils_default.isArray(value)) {
|
|
value.forEach((v) => assertValidHeaderValue(v, header));
|
|
return;
|
|
}
|
|
if (!isValidHeaderValue(String(value))) {
|
|
throw new Error(`Invalid character in header content ["${header}"]`);
|
|
}
|
|
}
|
|
function normalizeHeader(header) {
|
|
return header && String(header).trim().toLowerCase();
|
|
}
|
|
function stripTrailingCRLF(str) {
|
|
let end = str.length;
|
|
while (end > 0) {
|
|
const charCode = str.charCodeAt(end - 1);
|
|
if (charCode !== 10 && charCode !== 13) {
|
|
break;
|
|
}
|
|
end -= 1;
|
|
}
|
|
return end === str.length ? str : str.slice(0, end);
|
|
}
|
|
function normalizeValue(value) {
|
|
if (value === false || value == null) {
|
|
return value;
|
|
}
|
|
return utils_default.isArray(value) ? value.map(normalizeValue) : stripTrailingCRLF(String(value));
|
|
}
|
|
function parseTokens(str) {
|
|
const tokens = /* @__PURE__ */ Object.create(null);
|
|
const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
|
|
let match;
|
|
while (match = tokensRE.exec(str)) {
|
|
tokens[match[1]] = match[2];
|
|
}
|
|
return tokens;
|
|
}
|
|
var isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
|
|
function matchHeaderValue(context, value, header, filter2, isHeaderNameFilter) {
|
|
if (utils_default.isFunction(filter2)) {
|
|
return filter2.call(this, value, header);
|
|
}
|
|
if (isHeaderNameFilter) {
|
|
value = header;
|
|
}
|
|
if (!utils_default.isString(value)) return;
|
|
if (utils_default.isString(filter2)) {
|
|
return value.indexOf(filter2) !== -1;
|
|
}
|
|
if (utils_default.isRegExp(filter2)) {
|
|
return filter2.test(value);
|
|
}
|
|
}
|
|
function formatHeader(header) {
|
|
return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
|
|
return char.toUpperCase() + str;
|
|
});
|
|
}
|
|
function buildAccessors(obj, header) {
|
|
const accessorName = utils_default.toCamelCase(" " + header);
|
|
["get", "set", "has"].forEach((methodName) => {
|
|
Object.defineProperty(obj, methodName + accessorName, {
|
|
value: function(arg1, arg2, arg3) {
|
|
return this[methodName].call(this, header, arg1, arg2, arg3);
|
|
},
|
|
configurable: true
|
|
});
|
|
});
|
|
}
|
|
var AxiosHeaders = class {
|
|
constructor(headers) {
|
|
headers && this.set(headers);
|
|
}
|
|
set(header, valueOrRewrite, rewrite) {
|
|
const self2 = this;
|
|
function setHeader(_value, _header, _rewrite) {
|
|
const lHeader = normalizeHeader(_header);
|
|
if (!lHeader) {
|
|
throw new Error("header name must be a non-empty string");
|
|
}
|
|
const key = utils_default.findKey(self2, lHeader);
|
|
if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) {
|
|
assertValidHeaderValue(_value, _header);
|
|
self2[key || _header] = normalizeValue(_value);
|
|
}
|
|
}
|
|
const setHeaders = (headers, _rewrite) => utils_default.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
|
|
if (utils_default.isPlainObject(header) || header instanceof this.constructor) {
|
|
setHeaders(header, valueOrRewrite);
|
|
} else if (utils_default.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
|
|
setHeaders(parseHeaders_default(header), valueOrRewrite);
|
|
} else if (utils_default.isObject(header) && utils_default.isIterable(header)) {
|
|
let obj = {}, dest, key;
|
|
for (const entry of header) {
|
|
if (!utils_default.isArray(entry)) {
|
|
throw TypeError("Object iterator must return a key-value pair");
|
|
}
|
|
obj[key = entry[0]] = (dest = obj[key]) ? utils_default.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1];
|
|
}
|
|
setHeaders(obj, valueOrRewrite);
|
|
} else {
|
|
header != null && setHeader(valueOrRewrite, header, rewrite);
|
|
}
|
|
return this;
|
|
}
|
|
get(header, parser) {
|
|
header = normalizeHeader(header);
|
|
if (header) {
|
|
const key = utils_default.findKey(this, header);
|
|
if (key) {
|
|
const value = this[key];
|
|
if (!parser) {
|
|
return value;
|
|
}
|
|
if (parser === true) {
|
|
return parseTokens(value);
|
|
}
|
|
if (utils_default.isFunction(parser)) {
|
|
return parser.call(this, value, key);
|
|
}
|
|
if (utils_default.isRegExp(parser)) {
|
|
return parser.exec(value);
|
|
}
|
|
throw new TypeError("parser must be boolean|regexp|function");
|
|
}
|
|
}
|
|
}
|
|
has(header, matcher) {
|
|
header = normalizeHeader(header);
|
|
if (header) {
|
|
const key = utils_default.findKey(this, header);
|
|
return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
|
|
}
|
|
return false;
|
|
}
|
|
delete(header, matcher) {
|
|
const self2 = this;
|
|
let deleted = false;
|
|
function deleteHeader(_header) {
|
|
_header = normalizeHeader(_header);
|
|
if (_header) {
|
|
const key = utils_default.findKey(self2, _header);
|
|
if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) {
|
|
delete self2[key];
|
|
deleted = true;
|
|
}
|
|
}
|
|
}
|
|
if (utils_default.isArray(header)) {
|
|
header.forEach(deleteHeader);
|
|
} else {
|
|
deleteHeader(header);
|
|
}
|
|
return deleted;
|
|
}
|
|
clear(matcher) {
|
|
const keys = Object.keys(this);
|
|
let i = keys.length;
|
|
let deleted = false;
|
|
while (i--) {
|
|
const key = keys[i];
|
|
if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
|
|
delete this[key];
|
|
deleted = true;
|
|
}
|
|
}
|
|
return deleted;
|
|
}
|
|
normalize(format) {
|
|
const self2 = this;
|
|
const headers = {};
|
|
utils_default.forEach(this, (value, header) => {
|
|
const key = utils_default.findKey(headers, header);
|
|
if (key) {
|
|
self2[key] = normalizeValue(value);
|
|
delete self2[header];
|
|
return;
|
|
}
|
|
const normalized = format ? formatHeader(header) : String(header).trim();
|
|
if (normalized !== header) {
|
|
delete self2[header];
|
|
}
|
|
self2[normalized] = normalizeValue(value);
|
|
headers[normalized] = true;
|
|
});
|
|
return this;
|
|
}
|
|
concat(...targets) {
|
|
return this.constructor.concat(this, ...targets);
|
|
}
|
|
toJSON(asStrings) {
|
|
const obj = /* @__PURE__ */ Object.create(null);
|
|
utils_default.forEach(this, (value, header) => {
|
|
value != null && value !== false && (obj[header] = asStrings && utils_default.isArray(value) ? value.join(", ") : value);
|
|
});
|
|
return obj;
|
|
}
|
|
[Symbol.iterator]() {
|
|
return Object.entries(this.toJSON())[Symbol.iterator]();
|
|
}
|
|
toString() {
|
|
return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n");
|
|
}
|
|
getSetCookie() {
|
|
return this.get("set-cookie") || [];
|
|
}
|
|
get [Symbol.toStringTag]() {
|
|
return "AxiosHeaders";
|
|
}
|
|
static from(thing) {
|
|
return thing instanceof this ? thing : new this(thing);
|
|
}
|
|
static concat(first, ...targets) {
|
|
const computed = new this(first);
|
|
targets.forEach((target) => computed.set(target));
|
|
return computed;
|
|
}
|
|
static accessor(header) {
|
|
const internals = this[$internals] = this[$internals] = {
|
|
accessors: {}
|
|
};
|
|
const accessors = internals.accessors;
|
|
const prototype2 = this.prototype;
|
|
function defineAccessor(_header) {
|
|
const lHeader = normalizeHeader(_header);
|
|
if (!accessors[lHeader]) {
|
|
buildAccessors(prototype2, _header);
|
|
accessors[lHeader] = true;
|
|
}
|
|
}
|
|
utils_default.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
|
|
return this;
|
|
}
|
|
};
|
|
AxiosHeaders.accessor([
|
|
"Content-Type",
|
|
"Content-Length",
|
|
"Accept",
|
|
"Accept-Encoding",
|
|
"User-Agent",
|
|
"Authorization"
|
|
]);
|
|
utils_default.reduceDescriptors(AxiosHeaders.prototype, ({ value }, key) => {
|
|
let mapped = key[0].toUpperCase() + key.slice(1);
|
|
return {
|
|
get: () => value,
|
|
set(headerValue) {
|
|
this[mapped] = headerValue;
|
|
}
|
|
};
|
|
});
|
|
utils_default.freezeMethods(AxiosHeaders);
|
|
var AxiosHeaders_default = AxiosHeaders;
|
|
|
|
// node_modules/axios/lib/core/transformData.js
|
|
function transformData(fns, response) {
|
|
const config = this || defaults_default;
|
|
const context = response || config;
|
|
const headers = AxiosHeaders_default.from(context.headers);
|
|
let data = context.data;
|
|
utils_default.forEach(fns, function transform(fn) {
|
|
data = fn.call(config, data, headers.normalize(), response ? response.status : void 0);
|
|
});
|
|
headers.normalize();
|
|
return data;
|
|
}
|
|
|
|
// node_modules/axios/lib/cancel/isCancel.js
|
|
function isCancel(value) {
|
|
return !!(value && value.__CANCEL__);
|
|
}
|
|
|
|
// node_modules/axios/lib/cancel/CanceledError.js
|
|
var CanceledError = class extends AxiosError_default {
|
|
/**
|
|
* A `CanceledError` is an object that is thrown when an operation is canceled.
|
|
*
|
|
* @param {string=} message The message.
|
|
* @param {Object=} config The config.
|
|
* @param {Object=} request The request.
|
|
*
|
|
* @returns {CanceledError} The created error.
|
|
*/
|
|
constructor(message, config, request) {
|
|
super(message == null ? "canceled" : message, AxiosError_default.ERR_CANCELED, config, request);
|
|
this.name = "CanceledError";
|
|
this.__CANCEL__ = true;
|
|
}
|
|
};
|
|
var CanceledError_default = CanceledError;
|
|
|
|
// node_modules/axios/lib/core/settle.js
|
|
function settle(resolve, reject, response) {
|
|
const validateStatus2 = response.config.validateStatus;
|
|
if (!response.status || !validateStatus2 || validateStatus2(response.status)) {
|
|
resolve(response);
|
|
} else {
|
|
reject(
|
|
new AxiosError_default(
|
|
"Request failed with status code " + response.status,
|
|
[AxiosError_default.ERR_BAD_REQUEST, AxiosError_default.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
|
|
response.config,
|
|
response.request,
|
|
response
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/isAbsoluteURL.js
|
|
function isAbsoluteURL(url2) {
|
|
if (typeof url2 !== "string") {
|
|
return false;
|
|
}
|
|
return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url2);
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/combineURLs.js
|
|
function combineURLs(baseURL, relativeURL) {
|
|
return relativeURL ? baseURL.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL;
|
|
}
|
|
|
|
// node_modules/axios/lib/core/buildFullPath.js
|
|
function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
|
|
let isRelativeUrl = !isAbsoluteURL(requestedURL);
|
|
if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {
|
|
return combineURLs(baseURL, requestedURL);
|
|
}
|
|
return requestedURL;
|
|
}
|
|
|
|
// node_modules/proxy-from-env/index.js
|
|
var DEFAULT_PORTS = {
|
|
ftp: 21,
|
|
gopher: 70,
|
|
http: 80,
|
|
https: 443,
|
|
ws: 80,
|
|
wss: 443
|
|
};
|
|
function parseUrl(urlString) {
|
|
try {
|
|
return new URL(urlString);
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
function getProxyForUrl(url2) {
|
|
var parsedUrl = (typeof url2 === "string" ? parseUrl(url2) : url2) || {};
|
|
var proto = parsedUrl.protocol;
|
|
var hostname = parsedUrl.host;
|
|
var port = parsedUrl.port;
|
|
if (typeof hostname !== "string" || !hostname || typeof proto !== "string") {
|
|
return "";
|
|
}
|
|
proto = proto.split(":", 1)[0];
|
|
hostname = hostname.replace(/:\d*$/, "");
|
|
port = parseInt(port) || DEFAULT_PORTS[proto] || 0;
|
|
if (!shouldProxy(hostname, port)) {
|
|
return "";
|
|
}
|
|
var proxy = getEnv(proto + "_proxy") || getEnv("all_proxy");
|
|
if (proxy && proxy.indexOf("://") === -1) {
|
|
proxy = proto + "://" + proxy;
|
|
}
|
|
return proxy;
|
|
}
|
|
function shouldProxy(hostname, port) {
|
|
var NO_PROXY = getEnv("no_proxy").toLowerCase();
|
|
if (!NO_PROXY) {
|
|
return true;
|
|
}
|
|
if (NO_PROXY === "*") {
|
|
return false;
|
|
}
|
|
return NO_PROXY.split(/[,\s]/).every(function(proxy) {
|
|
if (!proxy) {
|
|
return true;
|
|
}
|
|
var parsedProxy = proxy.match(/^(.+):(\d+)$/);
|
|
var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;
|
|
var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;
|
|
if (parsedProxyPort && parsedProxyPort !== port) {
|
|
return true;
|
|
}
|
|
if (!/^[.*]/.test(parsedProxyHostname)) {
|
|
return hostname !== parsedProxyHostname;
|
|
}
|
|
if (parsedProxyHostname.charAt(0) === "*") {
|
|
parsedProxyHostname = parsedProxyHostname.slice(1);
|
|
}
|
|
return !hostname.endsWith(parsedProxyHostname);
|
|
});
|
|
}
|
|
function getEnv(key) {
|
|
return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || "";
|
|
}
|
|
|
|
// node_modules/axios/lib/adapters/http.js
|
|
var import_http = __toESM(require("http"), 1);
|
|
var import_https = __toESM(require("https"), 1);
|
|
var import_http2 = __toESM(require("http2"), 1);
|
|
var import_util2 = __toESM(require("util"), 1);
|
|
var import_follow_redirects = __toESM(require_follow_redirects(), 1);
|
|
var import_zlib = __toESM(require("zlib"), 1);
|
|
|
|
// node_modules/axios/lib/env/data.js
|
|
var VERSION = "1.15.0";
|
|
|
|
// node_modules/axios/lib/helpers/parseProtocol.js
|
|
function parseProtocol(url2) {
|
|
const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url2);
|
|
return match && match[1] || "";
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/fromDataURI.js
|
|
var DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;
|
|
function fromDataURI(uri, asBlob, options) {
|
|
const _Blob = options && options.Blob || platform_default.classes.Blob;
|
|
const protocol = parseProtocol(uri);
|
|
if (asBlob === void 0 && _Blob) {
|
|
asBlob = true;
|
|
}
|
|
if (protocol === "data") {
|
|
uri = protocol.length ? uri.slice(protocol.length + 1) : uri;
|
|
const match = DATA_URL_PATTERN.exec(uri);
|
|
if (!match) {
|
|
throw new AxiosError_default("Invalid URL", AxiosError_default.ERR_INVALID_URL);
|
|
}
|
|
const mime = match[1];
|
|
const isBase64 = match[2];
|
|
const body = match[3];
|
|
const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? "base64" : "utf8");
|
|
if (asBlob) {
|
|
if (!_Blob) {
|
|
throw new AxiosError_default("Blob is not supported", AxiosError_default.ERR_NOT_SUPPORT);
|
|
}
|
|
return new _Blob([buffer], { type: mime });
|
|
}
|
|
return buffer;
|
|
}
|
|
throw new AxiosError_default("Unsupported protocol " + protocol, AxiosError_default.ERR_NOT_SUPPORT);
|
|
}
|
|
|
|
// node_modules/axios/lib/adapters/http.js
|
|
var import_stream4 = __toESM(require("stream"), 1);
|
|
|
|
// node_modules/axios/lib/helpers/AxiosTransformStream.js
|
|
var import_stream = __toESM(require("stream"), 1);
|
|
var kInternals = /* @__PURE__ */ Symbol("internals");
|
|
var AxiosTransformStream = class extends import_stream.default.Transform {
|
|
constructor(options) {
|
|
options = utils_default.toFlatObject(
|
|
options,
|
|
{
|
|
maxRate: 0,
|
|
chunkSize: 64 * 1024,
|
|
minChunkSize: 100,
|
|
timeWindow: 500,
|
|
ticksRate: 2,
|
|
samplesCount: 15
|
|
},
|
|
null,
|
|
(prop, source) => {
|
|
return !utils_default.isUndefined(source[prop]);
|
|
}
|
|
);
|
|
super({
|
|
readableHighWaterMark: options.chunkSize
|
|
});
|
|
const internals = this[kInternals] = {
|
|
timeWindow: options.timeWindow,
|
|
chunkSize: options.chunkSize,
|
|
maxRate: options.maxRate,
|
|
minChunkSize: options.minChunkSize,
|
|
bytesSeen: 0,
|
|
isCaptured: false,
|
|
notifiedBytesLoaded: 0,
|
|
ts: Date.now(),
|
|
bytes: 0,
|
|
onReadCallback: null
|
|
};
|
|
this.on("newListener", (event) => {
|
|
if (event === "progress") {
|
|
if (!internals.isCaptured) {
|
|
internals.isCaptured = true;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
_read(size) {
|
|
const internals = this[kInternals];
|
|
if (internals.onReadCallback) {
|
|
internals.onReadCallback();
|
|
}
|
|
return super._read(size);
|
|
}
|
|
_transform(chunk, encoding, callback) {
|
|
const internals = this[kInternals];
|
|
const maxRate = internals.maxRate;
|
|
const readableHighWaterMark = this.readableHighWaterMark;
|
|
const timeWindow = internals.timeWindow;
|
|
const divider = 1e3 / timeWindow;
|
|
const bytesThreshold = maxRate / divider;
|
|
const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;
|
|
const pushChunk = (_chunk, _callback) => {
|
|
const bytes = Buffer.byteLength(_chunk);
|
|
internals.bytesSeen += bytes;
|
|
internals.bytes += bytes;
|
|
internals.isCaptured && this.emit("progress", internals.bytesSeen);
|
|
if (this.push(_chunk)) {
|
|
process.nextTick(_callback);
|
|
} else {
|
|
internals.onReadCallback = () => {
|
|
internals.onReadCallback = null;
|
|
process.nextTick(_callback);
|
|
};
|
|
}
|
|
};
|
|
const transformChunk = (_chunk, _callback) => {
|
|
const chunkSize = Buffer.byteLength(_chunk);
|
|
let chunkRemainder = null;
|
|
let maxChunkSize = readableHighWaterMark;
|
|
let bytesLeft;
|
|
let passed = 0;
|
|
if (maxRate) {
|
|
const now = Date.now();
|
|
if (!internals.ts || (passed = now - internals.ts) >= timeWindow) {
|
|
internals.ts = now;
|
|
bytesLeft = bytesThreshold - internals.bytes;
|
|
internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;
|
|
passed = 0;
|
|
}
|
|
bytesLeft = bytesThreshold - internals.bytes;
|
|
}
|
|
if (maxRate) {
|
|
if (bytesLeft <= 0) {
|
|
return setTimeout(() => {
|
|
_callback(null, _chunk);
|
|
}, timeWindow - passed);
|
|
}
|
|
if (bytesLeft < maxChunkSize) {
|
|
maxChunkSize = bytesLeft;
|
|
}
|
|
}
|
|
if (maxChunkSize && chunkSize > maxChunkSize && chunkSize - maxChunkSize > minChunkSize) {
|
|
chunkRemainder = _chunk.subarray(maxChunkSize);
|
|
_chunk = _chunk.subarray(0, maxChunkSize);
|
|
}
|
|
pushChunk(
|
|
_chunk,
|
|
chunkRemainder ? () => {
|
|
process.nextTick(_callback, null, chunkRemainder);
|
|
} : _callback
|
|
);
|
|
};
|
|
transformChunk(chunk, function transformNextChunk(err, _chunk) {
|
|
if (err) {
|
|
return callback(err);
|
|
}
|
|
if (_chunk) {
|
|
transformChunk(_chunk, transformNextChunk);
|
|
} else {
|
|
callback(null);
|
|
}
|
|
});
|
|
}
|
|
};
|
|
var AxiosTransformStream_default = AxiosTransformStream;
|
|
|
|
// node_modules/axios/lib/adapters/http.js
|
|
var import_events = require("events");
|
|
|
|
// node_modules/axios/lib/helpers/formDataToStream.js
|
|
var import_util = __toESM(require("util"), 1);
|
|
var import_stream2 = require("stream");
|
|
|
|
// node_modules/axios/lib/helpers/readBlob.js
|
|
var { asyncIterator } = Symbol;
|
|
var readBlob = async function* (blob) {
|
|
if (blob.stream) {
|
|
yield* blob.stream();
|
|
} else if (blob.arrayBuffer) {
|
|
yield await blob.arrayBuffer();
|
|
} else if (blob[asyncIterator]) {
|
|
yield* blob[asyncIterator]();
|
|
} else {
|
|
yield blob;
|
|
}
|
|
};
|
|
var readBlob_default = readBlob;
|
|
|
|
// node_modules/axios/lib/helpers/formDataToStream.js
|
|
var BOUNDARY_ALPHABET = platform_default.ALPHABET.ALPHA_DIGIT + "-_";
|
|
var textEncoder = typeof TextEncoder === "function" ? new TextEncoder() : new import_util.default.TextEncoder();
|
|
var CRLF = "\r\n";
|
|
var CRLF_BYTES = textEncoder.encode(CRLF);
|
|
var CRLF_BYTES_COUNT = 2;
|
|
var FormDataPart = class {
|
|
constructor(name, value) {
|
|
const { escapeName } = this.constructor;
|
|
const isStringValue = utils_default.isString(value);
|
|
let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${!isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : ""}${CRLF}`;
|
|
if (isStringValue) {
|
|
value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF));
|
|
} else {
|
|
headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}`;
|
|
}
|
|
this.headers = textEncoder.encode(headers + CRLF);
|
|
this.contentLength = isStringValue ? value.byteLength : value.size;
|
|
this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;
|
|
this.name = name;
|
|
this.value = value;
|
|
}
|
|
async *encode() {
|
|
yield this.headers;
|
|
const { value } = this;
|
|
if (utils_default.isTypedArray(value)) {
|
|
yield value;
|
|
} else {
|
|
yield* readBlob_default(value);
|
|
}
|
|
yield CRLF_BYTES;
|
|
}
|
|
static escapeName(name) {
|
|
return String(name).replace(
|
|
/[\r\n"]/g,
|
|
(match) => ({
|
|
"\r": "%0D",
|
|
"\n": "%0A",
|
|
'"': "%22"
|
|
})[match]
|
|
);
|
|
}
|
|
};
|
|
var formDataToStream = (form, headersHandler, options) => {
|
|
const {
|
|
tag = "form-data-boundary",
|
|
size = 25,
|
|
boundary = tag + "-" + platform_default.generateString(size, BOUNDARY_ALPHABET)
|
|
} = options || {};
|
|
if (!utils_default.isFormData(form)) {
|
|
throw TypeError("FormData instance required");
|
|
}
|
|
if (boundary.length < 1 || boundary.length > 70) {
|
|
throw Error("boundary must be 10-70 characters long");
|
|
}
|
|
const boundaryBytes = textEncoder.encode("--" + boundary + CRLF);
|
|
const footerBytes = textEncoder.encode("--" + boundary + "--" + CRLF);
|
|
let contentLength = footerBytes.byteLength;
|
|
const parts = Array.from(form.entries()).map(([name, value]) => {
|
|
const part = new FormDataPart(name, value);
|
|
contentLength += part.size;
|
|
return part;
|
|
});
|
|
contentLength += boundaryBytes.byteLength * parts.length;
|
|
contentLength = utils_default.toFiniteNumber(contentLength);
|
|
const computedHeaders = {
|
|
"Content-Type": `multipart/form-data; boundary=${boundary}`
|
|
};
|
|
if (Number.isFinite(contentLength)) {
|
|
computedHeaders["Content-Length"] = contentLength;
|
|
}
|
|
headersHandler && headersHandler(computedHeaders);
|
|
return import_stream2.Readable.from(
|
|
(async function* () {
|
|
for (const part of parts) {
|
|
yield boundaryBytes;
|
|
yield* part.encode();
|
|
}
|
|
yield footerBytes;
|
|
})()
|
|
);
|
|
};
|
|
var formDataToStream_default = formDataToStream;
|
|
|
|
// node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js
|
|
var import_stream3 = __toESM(require("stream"), 1);
|
|
var ZlibHeaderTransformStream = class extends import_stream3.default.Transform {
|
|
__transform(chunk, encoding, callback) {
|
|
this.push(chunk);
|
|
callback();
|
|
}
|
|
_transform(chunk, encoding, callback) {
|
|
if (chunk.length !== 0) {
|
|
this._transform = this.__transform;
|
|
if (chunk[0] !== 120) {
|
|
const header = Buffer.alloc(2);
|
|
header[0] = 120;
|
|
header[1] = 156;
|
|
this.push(header, encoding);
|
|
}
|
|
}
|
|
this.__transform(chunk, encoding, callback);
|
|
}
|
|
};
|
|
var ZlibHeaderTransformStream_default = ZlibHeaderTransformStream;
|
|
|
|
// node_modules/axios/lib/helpers/callbackify.js
|
|
var callbackify = (fn, reducer) => {
|
|
return utils_default.isAsyncFn(fn) ? function(...args) {
|
|
const cb = args.pop();
|
|
fn.apply(this, args).then((value) => {
|
|
try {
|
|
reducer ? cb(null, ...reducer(value)) : cb(null, value);
|
|
} catch (err) {
|
|
cb(err);
|
|
}
|
|
}, cb);
|
|
} : fn;
|
|
};
|
|
var callbackify_default = callbackify;
|
|
|
|
// node_modules/axios/lib/helpers/shouldBypassProxy.js
|
|
var DEFAULT_PORTS2 = {
|
|
http: 80,
|
|
https: 443,
|
|
ws: 80,
|
|
wss: 443,
|
|
ftp: 21
|
|
};
|
|
var parseNoProxyEntry = (entry) => {
|
|
let entryHost = entry;
|
|
let entryPort = 0;
|
|
if (entryHost.charAt(0) === "[") {
|
|
const bracketIndex = entryHost.indexOf("]");
|
|
if (bracketIndex !== -1) {
|
|
const host = entryHost.slice(1, bracketIndex);
|
|
const rest = entryHost.slice(bracketIndex + 1);
|
|
if (rest.charAt(0) === ":" && /^\d+$/.test(rest.slice(1))) {
|
|
entryPort = Number.parseInt(rest.slice(1), 10);
|
|
}
|
|
return [host, entryPort];
|
|
}
|
|
}
|
|
const firstColon = entryHost.indexOf(":");
|
|
const lastColon = entryHost.lastIndexOf(":");
|
|
if (firstColon !== -1 && firstColon === lastColon && /^\d+$/.test(entryHost.slice(lastColon + 1))) {
|
|
entryPort = Number.parseInt(entryHost.slice(lastColon + 1), 10);
|
|
entryHost = entryHost.slice(0, lastColon);
|
|
}
|
|
return [entryHost, entryPort];
|
|
};
|
|
var normalizeNoProxyHost = (hostname) => {
|
|
if (!hostname) {
|
|
return hostname;
|
|
}
|
|
if (hostname.charAt(0) === "[" && hostname.charAt(hostname.length - 1) === "]") {
|
|
hostname = hostname.slice(1, -1);
|
|
}
|
|
return hostname.replace(/\.+$/, "");
|
|
};
|
|
function shouldBypassProxy(location) {
|
|
let parsed;
|
|
try {
|
|
parsed = new URL(location);
|
|
} catch (_err) {
|
|
return false;
|
|
}
|
|
const noProxy = (process.env.no_proxy || process.env.NO_PROXY || "").toLowerCase();
|
|
if (!noProxy) {
|
|
return false;
|
|
}
|
|
if (noProxy === "*") {
|
|
return true;
|
|
}
|
|
const port = Number.parseInt(parsed.port, 10) || DEFAULT_PORTS2[parsed.protocol.split(":", 1)[0]] || 0;
|
|
const hostname = normalizeNoProxyHost(parsed.hostname.toLowerCase());
|
|
return noProxy.split(/[\s,]+/).some((entry) => {
|
|
if (!entry) {
|
|
return false;
|
|
}
|
|
let [entryHost, entryPort] = parseNoProxyEntry(entry);
|
|
entryHost = normalizeNoProxyHost(entryHost);
|
|
if (!entryHost) {
|
|
return false;
|
|
}
|
|
if (entryPort && entryPort !== port) {
|
|
return false;
|
|
}
|
|
if (entryHost.charAt(0) === "*") {
|
|
entryHost = entryHost.slice(1);
|
|
}
|
|
if (entryHost.charAt(0) === ".") {
|
|
return hostname.endsWith(entryHost);
|
|
}
|
|
return hostname === entryHost;
|
|
});
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/speedometer.js
|
|
function speedometer(samplesCount, min) {
|
|
samplesCount = samplesCount || 10;
|
|
const bytes = new Array(samplesCount);
|
|
const timestamps = new Array(samplesCount);
|
|
let head = 0;
|
|
let tail = 0;
|
|
let firstSampleTS;
|
|
min = min !== void 0 ? min : 1e3;
|
|
return function push(chunkLength) {
|
|
const now = Date.now();
|
|
const startedAt = timestamps[tail];
|
|
if (!firstSampleTS) {
|
|
firstSampleTS = now;
|
|
}
|
|
bytes[head] = chunkLength;
|
|
timestamps[head] = now;
|
|
let i = tail;
|
|
let bytesCount = 0;
|
|
while (i !== head) {
|
|
bytesCount += bytes[i++];
|
|
i = i % samplesCount;
|
|
}
|
|
head = (head + 1) % samplesCount;
|
|
if (head === tail) {
|
|
tail = (tail + 1) % samplesCount;
|
|
}
|
|
if (now - firstSampleTS < min) {
|
|
return;
|
|
}
|
|
const passed = startedAt && now - startedAt;
|
|
return passed ? Math.round(bytesCount * 1e3 / passed) : void 0;
|
|
};
|
|
}
|
|
var speedometer_default = speedometer;
|
|
|
|
// node_modules/axios/lib/helpers/throttle.js
|
|
function throttle(fn, freq) {
|
|
let timestamp = 0;
|
|
let threshold = 1e3 / freq;
|
|
let lastArgs;
|
|
let timer;
|
|
const invoke = (args, now = Date.now()) => {
|
|
timestamp = now;
|
|
lastArgs = null;
|
|
if (timer) {
|
|
clearTimeout(timer);
|
|
timer = null;
|
|
}
|
|
fn(...args);
|
|
};
|
|
const throttled = (...args) => {
|
|
const now = Date.now();
|
|
const passed = now - timestamp;
|
|
if (passed >= threshold) {
|
|
invoke(args, now);
|
|
} else {
|
|
lastArgs = args;
|
|
if (!timer) {
|
|
timer = setTimeout(() => {
|
|
timer = null;
|
|
invoke(lastArgs);
|
|
}, threshold - passed);
|
|
}
|
|
}
|
|
};
|
|
const flush = () => lastArgs && invoke(lastArgs);
|
|
return [throttled, flush];
|
|
}
|
|
var throttle_default = throttle;
|
|
|
|
// node_modules/axios/lib/helpers/progressEventReducer.js
|
|
var progressEventReducer = (listener, isDownloadStream, freq = 3) => {
|
|
let bytesNotified = 0;
|
|
const _speedometer = speedometer_default(50, 250);
|
|
return throttle_default((e) => {
|
|
const loaded = e.loaded;
|
|
const total = e.lengthComputable ? e.total : void 0;
|
|
const progressBytes = loaded - bytesNotified;
|
|
const rate = _speedometer(progressBytes);
|
|
const inRange = loaded <= total;
|
|
bytesNotified = loaded;
|
|
const data = {
|
|
loaded,
|
|
total,
|
|
progress: total ? loaded / total : void 0,
|
|
bytes: progressBytes,
|
|
rate: rate ? rate : void 0,
|
|
estimated: rate && total && inRange ? (total - loaded) / rate : void 0,
|
|
event: e,
|
|
lengthComputable: total != null,
|
|
[isDownloadStream ? "download" : "upload"]: true
|
|
};
|
|
listener(data);
|
|
}, freq);
|
|
};
|
|
var progressEventDecorator = (total, throttled) => {
|
|
const lengthComputable = total != null;
|
|
return [
|
|
(loaded) => throttled[0]({
|
|
lengthComputable,
|
|
total,
|
|
loaded
|
|
}),
|
|
throttled[1]
|
|
];
|
|
};
|
|
var asyncDecorator = (fn) => (...args) => utils_default.asap(() => fn(...args));
|
|
|
|
// node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js
|
|
function estimateDataURLDecodedBytes(url2) {
|
|
if (!url2 || typeof url2 !== "string") return 0;
|
|
if (!url2.startsWith("data:")) return 0;
|
|
const comma = url2.indexOf(",");
|
|
if (comma < 0) return 0;
|
|
const meta = url2.slice(5, comma);
|
|
const body = url2.slice(comma + 1);
|
|
const isBase64 = /;base64/i.test(meta);
|
|
if (isBase64) {
|
|
let effectiveLen = body.length;
|
|
const len = body.length;
|
|
for (let i = 0; i < len; i++) {
|
|
if (body.charCodeAt(i) === 37 && i + 2 < len) {
|
|
const a = body.charCodeAt(i + 1);
|
|
const b = body.charCodeAt(i + 2);
|
|
const isHex = (a >= 48 && a <= 57 || a >= 65 && a <= 70 || a >= 97 && a <= 102) && (b >= 48 && b <= 57 || b >= 65 && b <= 70 || b >= 97 && b <= 102);
|
|
if (isHex) {
|
|
effectiveLen -= 2;
|
|
i += 2;
|
|
}
|
|
}
|
|
}
|
|
let pad = 0;
|
|
let idx = len - 1;
|
|
const tailIsPct3D = (j) => j >= 2 && body.charCodeAt(j - 2) === 37 && // '%'
|
|
body.charCodeAt(j - 1) === 51 && // '3'
|
|
(body.charCodeAt(j) === 68 || body.charCodeAt(j) === 100);
|
|
if (idx >= 0) {
|
|
if (body.charCodeAt(idx) === 61) {
|
|
pad++;
|
|
idx--;
|
|
} else if (tailIsPct3D(idx)) {
|
|
pad++;
|
|
idx -= 3;
|
|
}
|
|
}
|
|
if (pad === 1 && idx >= 0) {
|
|
if (body.charCodeAt(idx) === 61) {
|
|
pad++;
|
|
} else if (tailIsPct3D(idx)) {
|
|
pad++;
|
|
}
|
|
}
|
|
const groups = Math.floor(effectiveLen / 4);
|
|
const bytes = groups * 3 - (pad || 0);
|
|
return bytes > 0 ? bytes : 0;
|
|
}
|
|
return Buffer.byteLength(body, "utf8");
|
|
}
|
|
|
|
// node_modules/axios/lib/adapters/http.js
|
|
var zlibOptions = {
|
|
flush: import_zlib.default.constants.Z_SYNC_FLUSH,
|
|
finishFlush: import_zlib.default.constants.Z_SYNC_FLUSH
|
|
};
|
|
var brotliOptions = {
|
|
flush: import_zlib.default.constants.BROTLI_OPERATION_FLUSH,
|
|
finishFlush: import_zlib.default.constants.BROTLI_OPERATION_FLUSH
|
|
};
|
|
var isBrotliSupported = utils_default.isFunction(import_zlib.default.createBrotliDecompress);
|
|
var { http: httpFollow, https: httpsFollow } = import_follow_redirects.default;
|
|
var isHttps = /https:?/;
|
|
var supportedProtocols = platform_default.protocols.map((protocol) => {
|
|
return protocol + ":";
|
|
});
|
|
var flushOnFinish = (stream4, [throttled, flush]) => {
|
|
stream4.on("end", flush).on("error", flush);
|
|
return throttled;
|
|
};
|
|
var Http2Sessions = class {
|
|
constructor() {
|
|
this.sessions = /* @__PURE__ */ Object.create(null);
|
|
}
|
|
getSession(authority, options) {
|
|
options = Object.assign(
|
|
{
|
|
sessionTimeout: 1e3
|
|
},
|
|
options
|
|
);
|
|
let authoritySessions = this.sessions[authority];
|
|
if (authoritySessions) {
|
|
let len = authoritySessions.length;
|
|
for (let i = 0; i < len; i++) {
|
|
const [sessionHandle, sessionOptions] = authoritySessions[i];
|
|
if (!sessionHandle.destroyed && !sessionHandle.closed && import_util2.default.isDeepStrictEqual(sessionOptions, options)) {
|
|
return sessionHandle;
|
|
}
|
|
}
|
|
}
|
|
const session = import_http2.default.connect(authority, options);
|
|
let removed;
|
|
const removeSession = () => {
|
|
if (removed) {
|
|
return;
|
|
}
|
|
removed = true;
|
|
let entries = authoritySessions, len = entries.length, i = len;
|
|
while (i--) {
|
|
if (entries[i][0] === session) {
|
|
if (len === 1) {
|
|
delete this.sessions[authority];
|
|
} else {
|
|
entries.splice(i, 1);
|
|
}
|
|
if (!session.closed) {
|
|
session.close();
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
};
|
|
const originalRequestFn = session.request;
|
|
const { sessionTimeout } = options;
|
|
if (sessionTimeout != null) {
|
|
let timer;
|
|
let streamsCount = 0;
|
|
session.request = function() {
|
|
const stream4 = originalRequestFn.apply(this, arguments);
|
|
streamsCount++;
|
|
if (timer) {
|
|
clearTimeout(timer);
|
|
timer = null;
|
|
}
|
|
stream4.once("close", () => {
|
|
if (!--streamsCount) {
|
|
timer = setTimeout(() => {
|
|
timer = null;
|
|
removeSession();
|
|
}, sessionTimeout);
|
|
}
|
|
});
|
|
return stream4;
|
|
};
|
|
}
|
|
session.once("close", removeSession);
|
|
let entry = [session, options];
|
|
authoritySessions ? authoritySessions.push(entry) : authoritySessions = this.sessions[authority] = [entry];
|
|
return session;
|
|
}
|
|
};
|
|
var http2Sessions = new Http2Sessions();
|
|
function dispatchBeforeRedirect(options, responseDetails) {
|
|
if (options.beforeRedirects.proxy) {
|
|
options.beforeRedirects.proxy(options);
|
|
}
|
|
if (options.beforeRedirects.config) {
|
|
options.beforeRedirects.config(options, responseDetails);
|
|
}
|
|
}
|
|
function setProxy(options, configProxy, location) {
|
|
let proxy = configProxy;
|
|
if (!proxy && proxy !== false) {
|
|
const proxyUrl = getProxyForUrl(location);
|
|
if (proxyUrl) {
|
|
if (!shouldBypassProxy(location)) {
|
|
proxy = new URL(proxyUrl);
|
|
}
|
|
}
|
|
}
|
|
if (proxy) {
|
|
if (proxy.username) {
|
|
proxy.auth = (proxy.username || "") + ":" + (proxy.password || "");
|
|
}
|
|
if (proxy.auth) {
|
|
const validProxyAuth = Boolean(proxy.auth.username || proxy.auth.password);
|
|
if (validProxyAuth) {
|
|
proxy.auth = (proxy.auth.username || "") + ":" + (proxy.auth.password || "");
|
|
} else if (typeof proxy.auth === "object") {
|
|
throw new AxiosError_default("Invalid proxy authorization", AxiosError_default.ERR_BAD_OPTION, { proxy });
|
|
}
|
|
const base64 = Buffer.from(proxy.auth, "utf8").toString("base64");
|
|
options.headers["Proxy-Authorization"] = "Basic " + base64;
|
|
}
|
|
options.headers.host = options.hostname + (options.port ? ":" + options.port : "");
|
|
const proxyHost = proxy.hostname || proxy.host;
|
|
options.hostname = proxyHost;
|
|
options.host = proxyHost;
|
|
options.port = proxy.port;
|
|
options.path = location;
|
|
if (proxy.protocol) {
|
|
options.protocol = proxy.protocol.includes(":") ? proxy.protocol : `${proxy.protocol}:`;
|
|
}
|
|
}
|
|
options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {
|
|
setProxy(redirectOptions, configProxy, redirectOptions.href);
|
|
};
|
|
}
|
|
var isHttpAdapterSupported = typeof process !== "undefined" && utils_default.kindOf(process) === "process";
|
|
var wrapAsync = (asyncExecutor) => {
|
|
return new Promise((resolve, reject) => {
|
|
let onDone;
|
|
let isDone;
|
|
const done = (value, isRejected) => {
|
|
if (isDone) return;
|
|
isDone = true;
|
|
onDone && onDone(value, isRejected);
|
|
};
|
|
const _resolve = (value) => {
|
|
done(value);
|
|
resolve(value);
|
|
};
|
|
const _reject = (reason) => {
|
|
done(reason, true);
|
|
reject(reason);
|
|
};
|
|
asyncExecutor(_resolve, _reject, (onDoneHandler) => onDone = onDoneHandler).catch(_reject);
|
|
});
|
|
};
|
|
var resolveFamily = ({ address, family }) => {
|
|
if (!utils_default.isString(address)) {
|
|
throw TypeError("address must be a string");
|
|
}
|
|
return {
|
|
address,
|
|
family: family || (address.indexOf(".") < 0 ? 6 : 4)
|
|
};
|
|
};
|
|
var buildAddressEntry = (address, family) => resolveFamily(utils_default.isObject(address) ? address : { address, family });
|
|
var http2Transport = {
|
|
request(options, cb) {
|
|
const authority = options.protocol + "//" + options.hostname + ":" + (options.port || (options.protocol === "https:" ? 443 : 80));
|
|
const { http2Options, headers } = options;
|
|
const session = http2Sessions.getSession(authority, http2Options);
|
|
const { HTTP2_HEADER_SCHEME, HTTP2_HEADER_METHOD, HTTP2_HEADER_PATH, HTTP2_HEADER_STATUS } = import_http2.default.constants;
|
|
const http2Headers = {
|
|
[HTTP2_HEADER_SCHEME]: options.protocol.replace(":", ""),
|
|
[HTTP2_HEADER_METHOD]: options.method,
|
|
[HTTP2_HEADER_PATH]: options.path
|
|
};
|
|
utils_default.forEach(headers, (header, name) => {
|
|
name.charAt(0) !== ":" && (http2Headers[name] = header);
|
|
});
|
|
const req = session.request(http2Headers);
|
|
req.once("response", (responseHeaders) => {
|
|
const response = req;
|
|
responseHeaders = Object.assign({}, responseHeaders);
|
|
const status = responseHeaders[HTTP2_HEADER_STATUS];
|
|
delete responseHeaders[HTTP2_HEADER_STATUS];
|
|
response.headers = responseHeaders;
|
|
response.statusCode = +status;
|
|
cb(response);
|
|
});
|
|
return req;
|
|
}
|
|
};
|
|
var http_default = isHttpAdapterSupported && function httpAdapter(config) {
|
|
return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {
|
|
let { data, lookup, family, httpVersion = 1, http2Options } = config;
|
|
const { responseType, responseEncoding } = config;
|
|
const method = config.method.toUpperCase();
|
|
let isDone;
|
|
let rejected = false;
|
|
let req;
|
|
httpVersion = +httpVersion;
|
|
if (Number.isNaN(httpVersion)) {
|
|
throw TypeError(`Invalid protocol version: '${config.httpVersion}' is not a number`);
|
|
}
|
|
if (httpVersion !== 1 && httpVersion !== 2) {
|
|
throw TypeError(`Unsupported protocol version '${httpVersion}'`);
|
|
}
|
|
const isHttp2 = httpVersion === 2;
|
|
if (lookup) {
|
|
const _lookup = callbackify_default(lookup, (value) => utils_default.isArray(value) ? value : [value]);
|
|
lookup = (hostname, opt, cb) => {
|
|
_lookup(hostname, opt, (err, arg0, arg1) => {
|
|
if (err) {
|
|
return cb(err);
|
|
}
|
|
const addresses = utils_default.isArray(arg0) ? arg0.map((addr) => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)];
|
|
opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family);
|
|
});
|
|
};
|
|
}
|
|
const abortEmitter = new import_events.EventEmitter();
|
|
function abort(reason) {
|
|
try {
|
|
abortEmitter.emit(
|
|
"abort",
|
|
!reason || reason.type ? new CanceledError_default(null, config, req) : reason
|
|
);
|
|
} catch (err) {
|
|
console.warn("emit error", err);
|
|
}
|
|
}
|
|
abortEmitter.once("abort", reject);
|
|
const onFinished = () => {
|
|
if (config.cancelToken) {
|
|
config.cancelToken.unsubscribe(abort);
|
|
}
|
|
if (config.signal) {
|
|
config.signal.removeEventListener("abort", abort);
|
|
}
|
|
abortEmitter.removeAllListeners();
|
|
};
|
|
if (config.cancelToken || config.signal) {
|
|
config.cancelToken && config.cancelToken.subscribe(abort);
|
|
if (config.signal) {
|
|
config.signal.aborted ? abort() : config.signal.addEventListener("abort", abort);
|
|
}
|
|
}
|
|
onDone((response, isRejected) => {
|
|
isDone = true;
|
|
if (isRejected) {
|
|
rejected = true;
|
|
onFinished();
|
|
return;
|
|
}
|
|
const { data: data2 } = response;
|
|
if (data2 instanceof import_stream4.default.Readable || data2 instanceof import_stream4.default.Duplex) {
|
|
const offListeners = import_stream4.default.finished(data2, () => {
|
|
offListeners();
|
|
onFinished();
|
|
});
|
|
} else {
|
|
onFinished();
|
|
}
|
|
});
|
|
const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
|
|
const parsed = new URL(fullPath, platform_default.hasBrowserEnv ? platform_default.origin : void 0);
|
|
const protocol = parsed.protocol || supportedProtocols[0];
|
|
if (protocol === "data:") {
|
|
if (config.maxContentLength > -1) {
|
|
const dataUrl = String(config.url || fullPath || "");
|
|
const estimated = estimateDataURLDecodedBytes(dataUrl);
|
|
if (estimated > config.maxContentLength) {
|
|
return reject(
|
|
new AxiosError_default(
|
|
"maxContentLength size of " + config.maxContentLength + " exceeded",
|
|
AxiosError_default.ERR_BAD_RESPONSE,
|
|
config
|
|
)
|
|
);
|
|
}
|
|
}
|
|
let convertedData;
|
|
if (method !== "GET") {
|
|
return settle(resolve, reject, {
|
|
status: 405,
|
|
statusText: "method not allowed",
|
|
headers: {},
|
|
config
|
|
});
|
|
}
|
|
try {
|
|
convertedData = fromDataURI(config.url, responseType === "blob", {
|
|
Blob: config.env && config.env.Blob
|
|
});
|
|
} catch (err) {
|
|
throw AxiosError_default.from(err, AxiosError_default.ERR_BAD_REQUEST, config);
|
|
}
|
|
if (responseType === "text") {
|
|
convertedData = convertedData.toString(responseEncoding);
|
|
if (!responseEncoding || responseEncoding === "utf8") {
|
|
convertedData = utils_default.stripBOM(convertedData);
|
|
}
|
|
} else if (responseType === "stream") {
|
|
convertedData = import_stream4.default.Readable.from(convertedData);
|
|
}
|
|
return settle(resolve, reject, {
|
|
data: convertedData,
|
|
status: 200,
|
|
statusText: "OK",
|
|
headers: new AxiosHeaders_default(),
|
|
config
|
|
});
|
|
}
|
|
if (supportedProtocols.indexOf(protocol) === -1) {
|
|
return reject(
|
|
new AxiosError_default("Unsupported protocol " + protocol, AxiosError_default.ERR_BAD_REQUEST, config)
|
|
);
|
|
}
|
|
const headers = AxiosHeaders_default.from(config.headers).normalize();
|
|
headers.set("User-Agent", "axios/" + VERSION, false);
|
|
const { onUploadProgress, onDownloadProgress } = config;
|
|
const maxRate = config.maxRate;
|
|
let maxUploadRate = void 0;
|
|
let maxDownloadRate = void 0;
|
|
if (utils_default.isSpecCompliantForm(data)) {
|
|
const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i);
|
|
data = formDataToStream_default(
|
|
data,
|
|
(formHeaders) => {
|
|
headers.set(formHeaders);
|
|
},
|
|
{
|
|
tag: `axios-${VERSION}-boundary`,
|
|
boundary: userBoundary && userBoundary[1] || void 0
|
|
}
|
|
);
|
|
} else if (utils_default.isFormData(data) && utils_default.isFunction(data.getHeaders)) {
|
|
headers.set(data.getHeaders());
|
|
if (!headers.hasContentLength()) {
|
|
try {
|
|
const knownLength = await import_util2.default.promisify(data.getLength).call(data);
|
|
Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);
|
|
} catch (e) {
|
|
}
|
|
}
|
|
} else if (utils_default.isBlob(data) || utils_default.isFile(data)) {
|
|
data.size && headers.setContentType(data.type || "application/octet-stream");
|
|
headers.setContentLength(data.size || 0);
|
|
data = import_stream4.default.Readable.from(readBlob_default(data));
|
|
} else if (data && !utils_default.isStream(data)) {
|
|
if (Buffer.isBuffer(data)) {
|
|
} else if (utils_default.isArrayBuffer(data)) {
|
|
data = Buffer.from(new Uint8Array(data));
|
|
} else if (utils_default.isString(data)) {
|
|
data = Buffer.from(data, "utf-8");
|
|
} else {
|
|
return reject(
|
|
new AxiosError_default(
|
|
"Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",
|
|
AxiosError_default.ERR_BAD_REQUEST,
|
|
config
|
|
)
|
|
);
|
|
}
|
|
headers.setContentLength(data.length, false);
|
|
if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {
|
|
return reject(
|
|
new AxiosError_default(
|
|
"Request body larger than maxBodyLength limit",
|
|
AxiosError_default.ERR_BAD_REQUEST,
|
|
config
|
|
)
|
|
);
|
|
}
|
|
}
|
|
const contentLength = utils_default.toFiniteNumber(headers.getContentLength());
|
|
if (utils_default.isArray(maxRate)) {
|
|
maxUploadRate = maxRate[0];
|
|
maxDownloadRate = maxRate[1];
|
|
} else {
|
|
maxUploadRate = maxDownloadRate = maxRate;
|
|
}
|
|
if (data && (onUploadProgress || maxUploadRate)) {
|
|
if (!utils_default.isStream(data)) {
|
|
data = import_stream4.default.Readable.from(data, { objectMode: false });
|
|
}
|
|
data = import_stream4.default.pipeline(
|
|
[
|
|
data,
|
|
new AxiosTransformStream_default({
|
|
maxRate: utils_default.toFiniteNumber(maxUploadRate)
|
|
})
|
|
],
|
|
utils_default.noop
|
|
);
|
|
onUploadProgress && data.on(
|
|
"progress",
|
|
flushOnFinish(
|
|
data,
|
|
progressEventDecorator(
|
|
contentLength,
|
|
progressEventReducer(asyncDecorator(onUploadProgress), false, 3)
|
|
)
|
|
)
|
|
);
|
|
}
|
|
let auth = void 0;
|
|
if (config.auth) {
|
|
const username = config.auth.username || "";
|
|
const password = config.auth.password || "";
|
|
auth = username + ":" + password;
|
|
}
|
|
if (!auth && parsed.username) {
|
|
const urlUsername = parsed.username;
|
|
const urlPassword = parsed.password;
|
|
auth = urlUsername + ":" + urlPassword;
|
|
}
|
|
auth && headers.delete("authorization");
|
|
let path2;
|
|
try {
|
|
path2 = buildURL(
|
|
parsed.pathname + parsed.search,
|
|
config.params,
|
|
config.paramsSerializer
|
|
).replace(/^\?/, "");
|
|
} catch (err) {
|
|
const customErr = new Error(err.message);
|
|
customErr.config = config;
|
|
customErr.url = config.url;
|
|
customErr.exists = true;
|
|
return reject(customErr);
|
|
}
|
|
headers.set(
|
|
"Accept-Encoding",
|
|
"gzip, compress, deflate" + (isBrotliSupported ? ", br" : ""),
|
|
false
|
|
);
|
|
const options = {
|
|
path: path2,
|
|
method,
|
|
headers: headers.toJSON(),
|
|
agents: { http: config.httpAgent, https: config.httpsAgent },
|
|
auth,
|
|
protocol,
|
|
family,
|
|
beforeRedirect: dispatchBeforeRedirect,
|
|
beforeRedirects: {},
|
|
http2Options
|
|
};
|
|
!utils_default.isUndefined(lookup) && (options.lookup = lookup);
|
|
if (config.socketPath) {
|
|
options.socketPath = config.socketPath;
|
|
} else {
|
|
options.hostname = parsed.hostname.startsWith("[") ? parsed.hostname.slice(1, -1) : parsed.hostname;
|
|
options.port = parsed.port;
|
|
setProxy(
|
|
options,
|
|
config.proxy,
|
|
protocol + "//" + parsed.hostname + (parsed.port ? ":" + parsed.port : "") + options.path
|
|
);
|
|
}
|
|
let transport;
|
|
const isHttpsRequest = isHttps.test(options.protocol);
|
|
options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;
|
|
if (isHttp2) {
|
|
transport = http2Transport;
|
|
} else {
|
|
if (config.transport) {
|
|
transport = config.transport;
|
|
} else if (config.maxRedirects === 0) {
|
|
transport = isHttpsRequest ? import_https.default : import_http.default;
|
|
} else {
|
|
if (config.maxRedirects) {
|
|
options.maxRedirects = config.maxRedirects;
|
|
}
|
|
if (config.beforeRedirect) {
|
|
options.beforeRedirects.config = config.beforeRedirect;
|
|
}
|
|
transport = isHttpsRequest ? httpsFollow : httpFollow;
|
|
}
|
|
}
|
|
if (config.maxBodyLength > -1) {
|
|
options.maxBodyLength = config.maxBodyLength;
|
|
} else {
|
|
options.maxBodyLength = Infinity;
|
|
}
|
|
if (config.insecureHTTPParser) {
|
|
options.insecureHTTPParser = config.insecureHTTPParser;
|
|
}
|
|
req = transport.request(options, function handleResponse(res) {
|
|
if (req.destroyed) return;
|
|
const streams = [res];
|
|
const responseLength = utils_default.toFiniteNumber(res.headers["content-length"]);
|
|
if (onDownloadProgress || maxDownloadRate) {
|
|
const transformStream = new AxiosTransformStream_default({
|
|
maxRate: utils_default.toFiniteNumber(maxDownloadRate)
|
|
});
|
|
onDownloadProgress && transformStream.on(
|
|
"progress",
|
|
flushOnFinish(
|
|
transformStream,
|
|
progressEventDecorator(
|
|
responseLength,
|
|
progressEventReducer(asyncDecorator(onDownloadProgress), true, 3)
|
|
)
|
|
)
|
|
);
|
|
streams.push(transformStream);
|
|
}
|
|
let responseStream = res;
|
|
const lastRequest = res.req || req;
|
|
if (config.decompress !== false && res.headers["content-encoding"]) {
|
|
if (method === "HEAD" || res.statusCode === 204) {
|
|
delete res.headers["content-encoding"];
|
|
}
|
|
switch ((res.headers["content-encoding"] || "").toLowerCase()) {
|
|
/*eslint default-case:0*/
|
|
case "gzip":
|
|
case "x-gzip":
|
|
case "compress":
|
|
case "x-compress":
|
|
streams.push(import_zlib.default.createUnzip(zlibOptions));
|
|
delete res.headers["content-encoding"];
|
|
break;
|
|
case "deflate":
|
|
streams.push(new ZlibHeaderTransformStream_default());
|
|
streams.push(import_zlib.default.createUnzip(zlibOptions));
|
|
delete res.headers["content-encoding"];
|
|
break;
|
|
case "br":
|
|
if (isBrotliSupported) {
|
|
streams.push(import_zlib.default.createBrotliDecompress(brotliOptions));
|
|
delete res.headers["content-encoding"];
|
|
}
|
|
}
|
|
}
|
|
responseStream = streams.length > 1 ? import_stream4.default.pipeline(streams, utils_default.noop) : streams[0];
|
|
const response = {
|
|
status: res.statusCode,
|
|
statusText: res.statusMessage,
|
|
headers: new AxiosHeaders_default(res.headers),
|
|
config,
|
|
request: lastRequest
|
|
};
|
|
if (responseType === "stream") {
|
|
response.data = responseStream;
|
|
settle(resolve, reject, response);
|
|
} else {
|
|
const responseBuffer = [];
|
|
let totalResponseBytes = 0;
|
|
responseStream.on("data", function handleStreamData(chunk) {
|
|
responseBuffer.push(chunk);
|
|
totalResponseBytes += chunk.length;
|
|
if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {
|
|
rejected = true;
|
|
responseStream.destroy();
|
|
abort(
|
|
new AxiosError_default(
|
|
"maxContentLength size of " + config.maxContentLength + " exceeded",
|
|
AxiosError_default.ERR_BAD_RESPONSE,
|
|
config,
|
|
lastRequest
|
|
)
|
|
);
|
|
}
|
|
});
|
|
responseStream.on("aborted", function handlerStreamAborted() {
|
|
if (rejected) {
|
|
return;
|
|
}
|
|
const err = new AxiosError_default(
|
|
"stream has been aborted",
|
|
AxiosError_default.ERR_BAD_RESPONSE,
|
|
config,
|
|
lastRequest
|
|
);
|
|
responseStream.destroy(err);
|
|
reject(err);
|
|
});
|
|
responseStream.on("error", function handleStreamError(err) {
|
|
if (req.destroyed) return;
|
|
reject(AxiosError_default.from(err, null, config, lastRequest));
|
|
});
|
|
responseStream.on("end", function handleStreamEnd() {
|
|
try {
|
|
let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);
|
|
if (responseType !== "arraybuffer") {
|
|
responseData = responseData.toString(responseEncoding);
|
|
if (!responseEncoding || responseEncoding === "utf8") {
|
|
responseData = utils_default.stripBOM(responseData);
|
|
}
|
|
}
|
|
response.data = responseData;
|
|
} catch (err) {
|
|
return reject(AxiosError_default.from(err, null, config, response.request, response));
|
|
}
|
|
settle(resolve, reject, response);
|
|
});
|
|
}
|
|
abortEmitter.once("abort", (err) => {
|
|
if (!responseStream.destroyed) {
|
|
responseStream.emit("error", err);
|
|
responseStream.destroy();
|
|
}
|
|
});
|
|
});
|
|
abortEmitter.once("abort", (err) => {
|
|
if (req.close) {
|
|
req.close();
|
|
} else {
|
|
req.destroy(err);
|
|
}
|
|
});
|
|
req.on("error", function handleRequestError(err) {
|
|
reject(AxiosError_default.from(err, null, config, req));
|
|
});
|
|
req.on("socket", function handleRequestSocket(socket) {
|
|
socket.setKeepAlive(true, 1e3 * 60);
|
|
});
|
|
if (config.timeout) {
|
|
const timeout = parseInt(config.timeout, 10);
|
|
if (Number.isNaN(timeout)) {
|
|
abort(
|
|
new AxiosError_default(
|
|
"error trying to parse `config.timeout` to int",
|
|
AxiosError_default.ERR_BAD_OPTION_VALUE,
|
|
config,
|
|
req
|
|
)
|
|
);
|
|
return;
|
|
}
|
|
req.setTimeout(timeout, function handleRequestTimeout() {
|
|
if (isDone) return;
|
|
let timeoutErrorMessage = config.timeout ? "timeout of " + config.timeout + "ms exceeded" : "timeout exceeded";
|
|
const transitional2 = config.transitional || transitional_default;
|
|
if (config.timeoutErrorMessage) {
|
|
timeoutErrorMessage = config.timeoutErrorMessage;
|
|
}
|
|
abort(
|
|
new AxiosError_default(
|
|
timeoutErrorMessage,
|
|
transitional2.clarifyTimeoutError ? AxiosError_default.ETIMEDOUT : AxiosError_default.ECONNABORTED,
|
|
config,
|
|
req
|
|
)
|
|
);
|
|
});
|
|
} else {
|
|
req.setTimeout(0);
|
|
}
|
|
if (utils_default.isStream(data)) {
|
|
let ended = false;
|
|
let errored = false;
|
|
data.on("end", () => {
|
|
ended = true;
|
|
});
|
|
data.once("error", (err) => {
|
|
errored = true;
|
|
req.destroy(err);
|
|
});
|
|
data.on("close", () => {
|
|
if (!ended && !errored) {
|
|
abort(new CanceledError_default("Request stream has been aborted", config, req));
|
|
}
|
|
});
|
|
data.pipe(req);
|
|
} else {
|
|
data && req.write(data);
|
|
req.end();
|
|
}
|
|
});
|
|
};
|
|
|
|
// node_modules/axios/lib/helpers/isURLSameOrigin.js
|
|
var isURLSameOrigin_default = platform_default.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url2) => {
|
|
url2 = new URL(url2, platform_default.origin);
|
|
return origin2.protocol === url2.protocol && origin2.host === url2.host && (isMSIE || origin2.port === url2.port);
|
|
})(
|
|
new URL(platform_default.origin),
|
|
platform_default.navigator && /(msie|trident)/i.test(platform_default.navigator.userAgent)
|
|
) : () => true;
|
|
|
|
// node_modules/axios/lib/helpers/cookies.js
|
|
var cookies_default = platform_default.hasStandardBrowserEnv ? (
|
|
// Standard browser envs support document.cookie
|
|
{
|
|
write(name, value, expires, path2, domain, secure, sameSite) {
|
|
if (typeof document === "undefined") return;
|
|
const cookie = [`${name}=${encodeURIComponent(value)}`];
|
|
if (utils_default.isNumber(expires)) {
|
|
cookie.push(`expires=${new Date(expires).toUTCString()}`);
|
|
}
|
|
if (utils_default.isString(path2)) {
|
|
cookie.push(`path=${path2}`);
|
|
}
|
|
if (utils_default.isString(domain)) {
|
|
cookie.push(`domain=${domain}`);
|
|
}
|
|
if (secure === true) {
|
|
cookie.push("secure");
|
|
}
|
|
if (utils_default.isString(sameSite)) {
|
|
cookie.push(`SameSite=${sameSite}`);
|
|
}
|
|
document.cookie = cookie.join("; ");
|
|
},
|
|
read(name) {
|
|
if (typeof document === "undefined") return null;
|
|
const match = document.cookie.match(new RegExp("(?:^|; )" + name + "=([^;]*)"));
|
|
return match ? decodeURIComponent(match[1]) : null;
|
|
},
|
|
remove(name) {
|
|
this.write(name, "", Date.now() - 864e5, "/");
|
|
}
|
|
}
|
|
) : (
|
|
// Non-standard browser env (web workers, react-native) lack needed support.
|
|
{
|
|
write() {
|
|
},
|
|
read() {
|
|
return null;
|
|
},
|
|
remove() {
|
|
}
|
|
}
|
|
);
|
|
|
|
// node_modules/axios/lib/core/mergeConfig.js
|
|
var headersToObject = (thing) => thing instanceof AxiosHeaders_default ? { ...thing } : thing;
|
|
function mergeConfig(config1, config2) {
|
|
config2 = config2 || {};
|
|
const config = {};
|
|
function getMergedValue(target, source, prop, caseless) {
|
|
if (utils_default.isPlainObject(target) && utils_default.isPlainObject(source)) {
|
|
return utils_default.merge.call({ caseless }, target, source);
|
|
} else if (utils_default.isPlainObject(source)) {
|
|
return utils_default.merge({}, source);
|
|
} else if (utils_default.isArray(source)) {
|
|
return source.slice();
|
|
}
|
|
return source;
|
|
}
|
|
function mergeDeepProperties(a, b, prop, caseless) {
|
|
if (!utils_default.isUndefined(b)) {
|
|
return getMergedValue(a, b, prop, caseless);
|
|
} else if (!utils_default.isUndefined(a)) {
|
|
return getMergedValue(void 0, a, prop, caseless);
|
|
}
|
|
}
|
|
function valueFromConfig2(a, b) {
|
|
if (!utils_default.isUndefined(b)) {
|
|
return getMergedValue(void 0, b);
|
|
}
|
|
}
|
|
function defaultToConfig2(a, b) {
|
|
if (!utils_default.isUndefined(b)) {
|
|
return getMergedValue(void 0, b);
|
|
} else if (!utils_default.isUndefined(a)) {
|
|
return getMergedValue(void 0, a);
|
|
}
|
|
}
|
|
function mergeDirectKeys(a, b, prop) {
|
|
if (prop in config2) {
|
|
return getMergedValue(a, b);
|
|
} else if (prop in config1) {
|
|
return getMergedValue(void 0, a);
|
|
}
|
|
}
|
|
const mergeMap = {
|
|
url: valueFromConfig2,
|
|
method: valueFromConfig2,
|
|
data: valueFromConfig2,
|
|
baseURL: defaultToConfig2,
|
|
transformRequest: defaultToConfig2,
|
|
transformResponse: defaultToConfig2,
|
|
paramsSerializer: defaultToConfig2,
|
|
timeout: defaultToConfig2,
|
|
timeoutMessage: defaultToConfig2,
|
|
withCredentials: defaultToConfig2,
|
|
withXSRFToken: defaultToConfig2,
|
|
adapter: defaultToConfig2,
|
|
responseType: defaultToConfig2,
|
|
xsrfCookieName: defaultToConfig2,
|
|
xsrfHeaderName: defaultToConfig2,
|
|
onUploadProgress: defaultToConfig2,
|
|
onDownloadProgress: defaultToConfig2,
|
|
decompress: defaultToConfig2,
|
|
maxContentLength: defaultToConfig2,
|
|
maxBodyLength: defaultToConfig2,
|
|
beforeRedirect: defaultToConfig2,
|
|
transport: defaultToConfig2,
|
|
httpAgent: defaultToConfig2,
|
|
httpsAgent: defaultToConfig2,
|
|
cancelToken: defaultToConfig2,
|
|
socketPath: defaultToConfig2,
|
|
responseEncoding: defaultToConfig2,
|
|
validateStatus: mergeDirectKeys,
|
|
headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)
|
|
};
|
|
utils_default.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {
|
|
if (prop === "__proto__" || prop === "constructor" || prop === "prototype") return;
|
|
const merge2 = utils_default.hasOwnProp(mergeMap, prop) ? mergeMap[prop] : mergeDeepProperties;
|
|
const configValue = merge2(config1[prop], config2[prop], prop);
|
|
utils_default.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue);
|
|
});
|
|
return config;
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/resolveConfig.js
|
|
var resolveConfig_default = (config) => {
|
|
const newConfig = mergeConfig({}, config);
|
|
let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
|
|
newConfig.headers = headers = AxiosHeaders_default.from(headers);
|
|
newConfig.url = buildURL(
|
|
buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls),
|
|
config.params,
|
|
config.paramsSerializer
|
|
);
|
|
if (auth) {
|
|
headers.set(
|
|
"Authorization",
|
|
"Basic " + btoa(
|
|
(auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : "")
|
|
)
|
|
);
|
|
}
|
|
if (utils_default.isFormData(data)) {
|
|
if (platform_default.hasStandardBrowserEnv || platform_default.hasStandardBrowserWebWorkerEnv) {
|
|
headers.setContentType(void 0);
|
|
} else if (utils_default.isFunction(data.getHeaders)) {
|
|
const formHeaders = data.getHeaders();
|
|
const allowedHeaders = ["content-type", "content-length"];
|
|
Object.entries(formHeaders).forEach(([key, val]) => {
|
|
if (allowedHeaders.includes(key.toLowerCase())) {
|
|
headers.set(key, val);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
if (platform_default.hasStandardBrowserEnv) {
|
|
withXSRFToken && utils_default.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
|
|
if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin_default(newConfig.url)) {
|
|
const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies_default.read(xsrfCookieName);
|
|
if (xsrfValue) {
|
|
headers.set(xsrfHeaderName, xsrfValue);
|
|
}
|
|
}
|
|
}
|
|
return newConfig;
|
|
};
|
|
|
|
// node_modules/axios/lib/adapters/xhr.js
|
|
var isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined";
|
|
var xhr_default = isXHRAdapterSupported && function(config) {
|
|
return new Promise(function dispatchXhrRequest(resolve, reject) {
|
|
const _config = resolveConfig_default(config);
|
|
let requestData = _config.data;
|
|
const requestHeaders = AxiosHeaders_default.from(_config.headers).normalize();
|
|
let { responseType, onUploadProgress, onDownloadProgress } = _config;
|
|
let onCanceled;
|
|
let uploadThrottled, downloadThrottled;
|
|
let flushUpload, flushDownload;
|
|
function done() {
|
|
flushUpload && flushUpload();
|
|
flushDownload && flushDownload();
|
|
_config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);
|
|
_config.signal && _config.signal.removeEventListener("abort", onCanceled);
|
|
}
|
|
let request = new XMLHttpRequest();
|
|
request.open(_config.method.toUpperCase(), _config.url, true);
|
|
request.timeout = _config.timeout;
|
|
function onloadend() {
|
|
if (!request) {
|
|
return;
|
|
}
|
|
const responseHeaders = AxiosHeaders_default.from(
|
|
"getAllResponseHeaders" in request && request.getAllResponseHeaders()
|
|
);
|
|
const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response;
|
|
const response = {
|
|
data: responseData,
|
|
status: request.status,
|
|
statusText: request.statusText,
|
|
headers: responseHeaders,
|
|
config,
|
|
request
|
|
};
|
|
settle(
|
|
function _resolve(value) {
|
|
resolve(value);
|
|
done();
|
|
},
|
|
function _reject(err) {
|
|
reject(err);
|
|
done();
|
|
},
|
|
response
|
|
);
|
|
request = null;
|
|
}
|
|
if ("onloadend" in request) {
|
|
request.onloadend = onloadend;
|
|
} else {
|
|
request.onreadystatechange = function handleLoad() {
|
|
if (!request || request.readyState !== 4) {
|
|
return;
|
|
}
|
|
if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) {
|
|
return;
|
|
}
|
|
setTimeout(onloadend);
|
|
};
|
|
}
|
|
request.onabort = function handleAbort() {
|
|
if (!request) {
|
|
return;
|
|
}
|
|
reject(new AxiosError_default("Request aborted", AxiosError_default.ECONNABORTED, config, request));
|
|
request = null;
|
|
};
|
|
request.onerror = function handleError(event) {
|
|
const msg = event && event.message ? event.message : "Network Error";
|
|
const err = new AxiosError_default(msg, AxiosError_default.ERR_NETWORK, config, request);
|
|
err.event = event || null;
|
|
reject(err);
|
|
request = null;
|
|
};
|
|
request.ontimeout = function handleTimeout() {
|
|
let timeoutErrorMessage = _config.timeout ? "timeout of " + _config.timeout + "ms exceeded" : "timeout exceeded";
|
|
const transitional2 = _config.transitional || transitional_default;
|
|
if (_config.timeoutErrorMessage) {
|
|
timeoutErrorMessage = _config.timeoutErrorMessage;
|
|
}
|
|
reject(
|
|
new AxiosError_default(
|
|
timeoutErrorMessage,
|
|
transitional2.clarifyTimeoutError ? AxiosError_default.ETIMEDOUT : AxiosError_default.ECONNABORTED,
|
|
config,
|
|
request
|
|
)
|
|
);
|
|
request = null;
|
|
};
|
|
requestData === void 0 && requestHeaders.setContentType(null);
|
|
if ("setRequestHeader" in request) {
|
|
utils_default.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
|
|
request.setRequestHeader(key, val);
|
|
});
|
|
}
|
|
if (!utils_default.isUndefined(_config.withCredentials)) {
|
|
request.withCredentials = !!_config.withCredentials;
|
|
}
|
|
if (responseType && responseType !== "json") {
|
|
request.responseType = _config.responseType;
|
|
}
|
|
if (onDownloadProgress) {
|
|
[downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);
|
|
request.addEventListener("progress", downloadThrottled);
|
|
}
|
|
if (onUploadProgress && request.upload) {
|
|
[uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);
|
|
request.upload.addEventListener("progress", uploadThrottled);
|
|
request.upload.addEventListener("loadend", flushUpload);
|
|
}
|
|
if (_config.cancelToken || _config.signal) {
|
|
onCanceled = (cancel) => {
|
|
if (!request) {
|
|
return;
|
|
}
|
|
reject(!cancel || cancel.type ? new CanceledError_default(null, config, request) : cancel);
|
|
request.abort();
|
|
request = null;
|
|
};
|
|
_config.cancelToken && _config.cancelToken.subscribe(onCanceled);
|
|
if (_config.signal) {
|
|
_config.signal.aborted ? onCanceled() : _config.signal.addEventListener("abort", onCanceled);
|
|
}
|
|
}
|
|
const protocol = parseProtocol(_config.url);
|
|
if (protocol && platform_default.protocols.indexOf(protocol) === -1) {
|
|
reject(
|
|
new AxiosError_default(
|
|
"Unsupported protocol " + protocol + ":",
|
|
AxiosError_default.ERR_BAD_REQUEST,
|
|
config
|
|
)
|
|
);
|
|
return;
|
|
}
|
|
request.send(requestData || null);
|
|
});
|
|
};
|
|
|
|
// node_modules/axios/lib/helpers/composeSignals.js
|
|
var composeSignals = (signals, timeout) => {
|
|
const { length } = signals = signals ? signals.filter(Boolean) : [];
|
|
if (timeout || length) {
|
|
let controller = new AbortController();
|
|
let aborted;
|
|
const onabort = function(reason) {
|
|
if (!aborted) {
|
|
aborted = true;
|
|
unsubscribe();
|
|
const err = reason instanceof Error ? reason : this.reason;
|
|
controller.abort(
|
|
err instanceof AxiosError_default ? err : new CanceledError_default(err instanceof Error ? err.message : err)
|
|
);
|
|
}
|
|
};
|
|
let timer = timeout && setTimeout(() => {
|
|
timer = null;
|
|
onabort(new AxiosError_default(`timeout of ${timeout}ms exceeded`, AxiosError_default.ETIMEDOUT));
|
|
}, timeout);
|
|
const unsubscribe = () => {
|
|
if (signals) {
|
|
timer && clearTimeout(timer);
|
|
timer = null;
|
|
signals.forEach((signal2) => {
|
|
signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort);
|
|
});
|
|
signals = null;
|
|
}
|
|
};
|
|
signals.forEach((signal2) => signal2.addEventListener("abort", onabort));
|
|
const { signal } = controller;
|
|
signal.unsubscribe = () => utils_default.asap(unsubscribe);
|
|
return signal;
|
|
}
|
|
};
|
|
var composeSignals_default = composeSignals;
|
|
|
|
// node_modules/axios/lib/helpers/trackStream.js
|
|
var streamChunk = function* (chunk, chunkSize) {
|
|
let len = chunk.byteLength;
|
|
if (!chunkSize || len < chunkSize) {
|
|
yield chunk;
|
|
return;
|
|
}
|
|
let pos = 0;
|
|
let end;
|
|
while (pos < len) {
|
|
end = pos + chunkSize;
|
|
yield chunk.slice(pos, end);
|
|
pos = end;
|
|
}
|
|
};
|
|
var readBytes = async function* (iterable, chunkSize) {
|
|
for await (const chunk of readStream(iterable)) {
|
|
yield* streamChunk(chunk, chunkSize);
|
|
}
|
|
};
|
|
var readStream = async function* (stream4) {
|
|
if (stream4[Symbol.asyncIterator]) {
|
|
yield* stream4;
|
|
return;
|
|
}
|
|
const reader = stream4.getReader();
|
|
try {
|
|
for (; ; ) {
|
|
const { done, value } = await reader.read();
|
|
if (done) {
|
|
break;
|
|
}
|
|
yield value;
|
|
}
|
|
} finally {
|
|
await reader.cancel();
|
|
}
|
|
};
|
|
var trackStream = (stream4, chunkSize, onProgress, onFinish) => {
|
|
const iterator2 = readBytes(stream4, chunkSize);
|
|
let bytes = 0;
|
|
let done;
|
|
let _onFinish = (e) => {
|
|
if (!done) {
|
|
done = true;
|
|
onFinish && onFinish(e);
|
|
}
|
|
};
|
|
return new ReadableStream(
|
|
{
|
|
async pull(controller) {
|
|
try {
|
|
const { done: done2, value } = await iterator2.next();
|
|
if (done2) {
|
|
_onFinish();
|
|
controller.close();
|
|
return;
|
|
}
|
|
let len = value.byteLength;
|
|
if (onProgress) {
|
|
let loadedBytes = bytes += len;
|
|
onProgress(loadedBytes);
|
|
}
|
|
controller.enqueue(new Uint8Array(value));
|
|
} catch (err) {
|
|
_onFinish(err);
|
|
throw err;
|
|
}
|
|
},
|
|
cancel(reason) {
|
|
_onFinish(reason);
|
|
return iterator2.return();
|
|
}
|
|
},
|
|
{
|
|
highWaterMark: 2
|
|
}
|
|
);
|
|
};
|
|
|
|
// node_modules/axios/lib/adapters/fetch.js
|
|
var DEFAULT_CHUNK_SIZE = 64 * 1024;
|
|
var { isFunction: isFunction2 } = utils_default;
|
|
var globalFetchAPI = (({ Request, Response }) => ({
|
|
Request,
|
|
Response
|
|
}))(utils_default.global);
|
|
var { ReadableStream: ReadableStream2, TextEncoder: TextEncoder2 } = utils_default.global;
|
|
var test = (fn, ...args) => {
|
|
try {
|
|
return !!fn(...args);
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
};
|
|
var factory = (env) => {
|
|
env = utils_default.merge.call(
|
|
{
|
|
skipUndefined: true
|
|
},
|
|
globalFetchAPI,
|
|
env
|
|
);
|
|
const { fetch: envFetch, Request, Response } = env;
|
|
const isFetchSupported = envFetch ? isFunction2(envFetch) : typeof fetch === "function";
|
|
const isRequestSupported = isFunction2(Request);
|
|
const isResponseSupported = isFunction2(Response);
|
|
if (!isFetchSupported) {
|
|
return false;
|
|
}
|
|
const isReadableStreamSupported = isFetchSupported && isFunction2(ReadableStream2);
|
|
const encodeText = isFetchSupported && (typeof TextEncoder2 === "function" ? /* @__PURE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder2()) : async (str) => new Uint8Array(await new Request(str).arrayBuffer()));
|
|
const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {
|
|
let duplexAccessed = false;
|
|
const body = new ReadableStream2();
|
|
const hasContentType = new Request(platform_default.origin, {
|
|
body,
|
|
method: "POST",
|
|
get duplex() {
|
|
duplexAccessed = true;
|
|
return "half";
|
|
}
|
|
}).headers.has("Content-Type");
|
|
body.cancel();
|
|
return duplexAccessed && !hasContentType;
|
|
});
|
|
const supportsResponseStream = isResponseSupported && isReadableStreamSupported && test(() => utils_default.isReadableStream(new Response("").body));
|
|
const resolvers = {
|
|
stream: supportsResponseStream && ((res) => res.body)
|
|
};
|
|
isFetchSupported && (() => {
|
|
["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => {
|
|
!resolvers[type] && (resolvers[type] = (res, config) => {
|
|
let method = res && res[type];
|
|
if (method) {
|
|
return method.call(res);
|
|
}
|
|
throw new AxiosError_default(
|
|
`Response type '${type}' is not supported`,
|
|
AxiosError_default.ERR_NOT_SUPPORT,
|
|
config
|
|
);
|
|
});
|
|
});
|
|
})();
|
|
const getBodyLength = async (body) => {
|
|
if (body == null) {
|
|
return 0;
|
|
}
|
|
if (utils_default.isBlob(body)) {
|
|
return body.size;
|
|
}
|
|
if (utils_default.isSpecCompliantForm(body)) {
|
|
const _request = new Request(platform_default.origin, {
|
|
method: "POST",
|
|
body
|
|
});
|
|
return (await _request.arrayBuffer()).byteLength;
|
|
}
|
|
if (utils_default.isArrayBufferView(body) || utils_default.isArrayBuffer(body)) {
|
|
return body.byteLength;
|
|
}
|
|
if (utils_default.isURLSearchParams(body)) {
|
|
body = body + "";
|
|
}
|
|
if (utils_default.isString(body)) {
|
|
return (await encodeText(body)).byteLength;
|
|
}
|
|
};
|
|
const resolveBodyLength = async (headers, body) => {
|
|
const length = utils_default.toFiniteNumber(headers.getContentLength());
|
|
return length == null ? getBodyLength(body) : length;
|
|
};
|
|
return async (config) => {
|
|
let {
|
|
url: url2,
|
|
method,
|
|
data,
|
|
signal,
|
|
cancelToken,
|
|
timeout,
|
|
onDownloadProgress,
|
|
onUploadProgress,
|
|
responseType,
|
|
headers,
|
|
withCredentials = "same-origin",
|
|
fetchOptions
|
|
} = resolveConfig_default(config);
|
|
let _fetch = envFetch || fetch;
|
|
responseType = responseType ? (responseType + "").toLowerCase() : "text";
|
|
let composedSignal = composeSignals_default(
|
|
[signal, cancelToken && cancelToken.toAbortSignal()],
|
|
timeout
|
|
);
|
|
let request = null;
|
|
const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
|
|
composedSignal.unsubscribe();
|
|
});
|
|
let requestContentLength;
|
|
try {
|
|
if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) {
|
|
let _request = new Request(url2, {
|
|
method: "POST",
|
|
body: data,
|
|
duplex: "half"
|
|
});
|
|
let contentTypeHeader;
|
|
if (utils_default.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) {
|
|
headers.setContentType(contentTypeHeader);
|
|
}
|
|
if (_request.body) {
|
|
const [onProgress, flush] = progressEventDecorator(
|
|
requestContentLength,
|
|
progressEventReducer(asyncDecorator(onUploadProgress))
|
|
);
|
|
data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
|
|
}
|
|
}
|
|
if (!utils_default.isString(withCredentials)) {
|
|
withCredentials = withCredentials ? "include" : "omit";
|
|
}
|
|
const isCredentialsSupported = isRequestSupported && "credentials" in Request.prototype;
|
|
const resolvedOptions = {
|
|
...fetchOptions,
|
|
signal: composedSignal,
|
|
method: method.toUpperCase(),
|
|
headers: headers.normalize().toJSON(),
|
|
body: data,
|
|
duplex: "half",
|
|
credentials: isCredentialsSupported ? withCredentials : void 0
|
|
};
|
|
request = isRequestSupported && new Request(url2, resolvedOptions);
|
|
let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url2, resolvedOptions));
|
|
const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response");
|
|
if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
|
|
const options = {};
|
|
["status", "statusText", "headers"].forEach((prop) => {
|
|
options[prop] = response[prop];
|
|
});
|
|
const responseContentLength = utils_default.toFiniteNumber(response.headers.get("content-length"));
|
|
const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
|
|
responseContentLength,
|
|
progressEventReducer(asyncDecorator(onDownloadProgress), true)
|
|
) || [];
|
|
response = new Response(
|
|
trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
|
|
flush && flush();
|
|
unsubscribe && unsubscribe();
|
|
}),
|
|
options
|
|
);
|
|
}
|
|
responseType = responseType || "text";
|
|
let responseData = await resolvers[utils_default.findKey(resolvers, responseType) || "text"](
|
|
response,
|
|
config
|
|
);
|
|
!isStreamResponse && unsubscribe && unsubscribe();
|
|
return await new Promise((resolve, reject) => {
|
|
settle(resolve, reject, {
|
|
data: responseData,
|
|
headers: AxiosHeaders_default.from(response.headers),
|
|
status: response.status,
|
|
statusText: response.statusText,
|
|
config,
|
|
request
|
|
});
|
|
});
|
|
} catch (err) {
|
|
unsubscribe && unsubscribe();
|
|
if (err && err.name === "TypeError" && /Load failed|fetch/i.test(err.message)) {
|
|
throw Object.assign(
|
|
new AxiosError_default(
|
|
"Network Error",
|
|
AxiosError_default.ERR_NETWORK,
|
|
config,
|
|
request,
|
|
err && err.response
|
|
),
|
|
{
|
|
cause: err.cause || err
|
|
}
|
|
);
|
|
}
|
|
throw AxiosError_default.from(err, err && err.code, config, request, err && err.response);
|
|
}
|
|
};
|
|
};
|
|
var seedCache = /* @__PURE__ */ new Map();
|
|
var getFetch = (config) => {
|
|
let env = config && config.env || {};
|
|
const { fetch: fetch2, Request, Response } = env;
|
|
const seeds = [Request, Response, fetch2];
|
|
let len = seeds.length, i = len, seed, target, map = seedCache;
|
|
while (i--) {
|
|
seed = seeds[i];
|
|
target = map.get(seed);
|
|
target === void 0 && map.set(seed, target = i ? /* @__PURE__ */ new Map() : factory(env));
|
|
map = target;
|
|
}
|
|
return target;
|
|
};
|
|
var adapter = getFetch();
|
|
|
|
// node_modules/axios/lib/adapters/adapters.js
|
|
var knownAdapters = {
|
|
http: http_default,
|
|
xhr: xhr_default,
|
|
fetch: {
|
|
get: getFetch
|
|
}
|
|
};
|
|
utils_default.forEach(knownAdapters, (fn, value) => {
|
|
if (fn) {
|
|
try {
|
|
Object.defineProperty(fn, "name", { value });
|
|
} catch (e) {
|
|
}
|
|
Object.defineProperty(fn, "adapterName", { value });
|
|
}
|
|
});
|
|
var renderReason = (reason) => `- ${reason}`;
|
|
var isResolvedHandle = (adapter2) => utils_default.isFunction(adapter2) || adapter2 === null || adapter2 === false;
|
|
function getAdapter(adapters, config) {
|
|
adapters = utils_default.isArray(adapters) ? adapters : [adapters];
|
|
const { length } = adapters;
|
|
let nameOrAdapter;
|
|
let adapter2;
|
|
const rejectedReasons = {};
|
|
for (let i = 0; i < length; i++) {
|
|
nameOrAdapter = adapters[i];
|
|
let id;
|
|
adapter2 = nameOrAdapter;
|
|
if (!isResolvedHandle(nameOrAdapter)) {
|
|
adapter2 = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
|
|
if (adapter2 === void 0) {
|
|
throw new AxiosError_default(`Unknown adapter '${id}'`);
|
|
}
|
|
}
|
|
if (adapter2 && (utils_default.isFunction(adapter2) || (adapter2 = adapter2.get(config)))) {
|
|
break;
|
|
}
|
|
rejectedReasons[id || "#" + i] = adapter2;
|
|
}
|
|
if (!adapter2) {
|
|
const reasons = Object.entries(rejectedReasons).map(
|
|
([id, state]) => `adapter ${id} ` + (state === false ? "is not supported by the environment" : "is not available in the build")
|
|
);
|
|
let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified";
|
|
throw new AxiosError_default(
|
|
`There is no suitable adapter to dispatch the request ` + s,
|
|
"ERR_NOT_SUPPORT"
|
|
);
|
|
}
|
|
return adapter2;
|
|
}
|
|
var adapters_default = {
|
|
/**
|
|
* Resolve an adapter from a list of adapter names or functions.
|
|
* @type {Function}
|
|
*/
|
|
getAdapter,
|
|
/**
|
|
* Exposes all known adapters
|
|
* @type {Object<string, Function|Object>}
|
|
*/
|
|
adapters: knownAdapters
|
|
};
|
|
|
|
// node_modules/axios/lib/core/dispatchRequest.js
|
|
function throwIfCancellationRequested(config) {
|
|
if (config.cancelToken) {
|
|
config.cancelToken.throwIfRequested();
|
|
}
|
|
if (config.signal && config.signal.aborted) {
|
|
throw new CanceledError_default(null, config);
|
|
}
|
|
}
|
|
function dispatchRequest(config) {
|
|
throwIfCancellationRequested(config);
|
|
config.headers = AxiosHeaders_default.from(config.headers);
|
|
config.data = transformData.call(config, config.transformRequest);
|
|
if (["post", "put", "patch"].indexOf(config.method) !== -1) {
|
|
config.headers.setContentType("application/x-www-form-urlencoded", false);
|
|
}
|
|
const adapter2 = adapters_default.getAdapter(config.adapter || defaults_default.adapter, config);
|
|
return adapter2(config).then(
|
|
function onAdapterResolution(response) {
|
|
throwIfCancellationRequested(config);
|
|
response.data = transformData.call(config, config.transformResponse, response);
|
|
response.headers = AxiosHeaders_default.from(response.headers);
|
|
return response;
|
|
},
|
|
function onAdapterRejection(reason) {
|
|
if (!isCancel(reason)) {
|
|
throwIfCancellationRequested(config);
|
|
if (reason && reason.response) {
|
|
reason.response.data = transformData.call(
|
|
config,
|
|
config.transformResponse,
|
|
reason.response
|
|
);
|
|
reason.response.headers = AxiosHeaders_default.from(reason.response.headers);
|
|
}
|
|
}
|
|
return Promise.reject(reason);
|
|
}
|
|
);
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/validator.js
|
|
var validators = {};
|
|
["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => {
|
|
validators[type] = function validator(thing) {
|
|
return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type;
|
|
};
|
|
});
|
|
var deprecatedWarnings = {};
|
|
validators.transitional = function transitional(validator, version, message) {
|
|
function formatMessage(opt, desc) {
|
|
return "[Axios v" + VERSION + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : "");
|
|
}
|
|
return (value, opt, opts) => {
|
|
if (validator === false) {
|
|
throw new AxiosError_default(
|
|
formatMessage(opt, " has been removed" + (version ? " in " + version : "")),
|
|
AxiosError_default.ERR_DEPRECATED
|
|
);
|
|
}
|
|
if (version && !deprecatedWarnings[opt]) {
|
|
deprecatedWarnings[opt] = true;
|
|
console.warn(
|
|
formatMessage(
|
|
opt,
|
|
" has been deprecated since v" + version + " and will be removed in the near future"
|
|
)
|
|
);
|
|
}
|
|
return validator ? validator(value, opt, opts) : true;
|
|
};
|
|
};
|
|
validators.spelling = function spelling(correctSpelling) {
|
|
return (value, opt) => {
|
|
console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
|
|
return true;
|
|
};
|
|
};
|
|
function assertOptions(options, schema, allowUnknown) {
|
|
if (typeof options !== "object") {
|
|
throw new AxiosError_default("options must be an object", AxiosError_default.ERR_BAD_OPTION_VALUE);
|
|
}
|
|
const keys = Object.keys(options);
|
|
let i = keys.length;
|
|
while (i-- > 0) {
|
|
const opt = keys[i];
|
|
const validator = schema[opt];
|
|
if (validator) {
|
|
const value = options[opt];
|
|
const result = value === void 0 || validator(value, opt, options);
|
|
if (result !== true) {
|
|
throw new AxiosError_default(
|
|
"option " + opt + " must be " + result,
|
|
AxiosError_default.ERR_BAD_OPTION_VALUE
|
|
);
|
|
}
|
|
continue;
|
|
}
|
|
if (allowUnknown !== true) {
|
|
throw new AxiosError_default("Unknown option " + opt, AxiosError_default.ERR_BAD_OPTION);
|
|
}
|
|
}
|
|
}
|
|
var validator_default = {
|
|
assertOptions,
|
|
validators
|
|
};
|
|
|
|
// node_modules/axios/lib/core/Axios.js
|
|
var validators2 = validator_default.validators;
|
|
var Axios = class {
|
|
constructor(instanceConfig) {
|
|
this.defaults = instanceConfig || {};
|
|
this.interceptors = {
|
|
request: new InterceptorManager_default(),
|
|
response: new InterceptorManager_default()
|
|
};
|
|
}
|
|
/**
|
|
* Dispatch a request
|
|
*
|
|
* @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
|
|
* @param {?Object} config
|
|
*
|
|
* @returns {Promise} The Promise to be fulfilled
|
|
*/
|
|
async request(configOrUrl, config) {
|
|
try {
|
|
return await this._request(configOrUrl, config);
|
|
} catch (err) {
|
|
if (err instanceof Error) {
|
|
let dummy = {};
|
|
Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error();
|
|
const stack = (() => {
|
|
if (!dummy.stack) {
|
|
return "";
|
|
}
|
|
const firstNewlineIndex = dummy.stack.indexOf("\n");
|
|
return firstNewlineIndex === -1 ? "" : dummy.stack.slice(firstNewlineIndex + 1);
|
|
})();
|
|
try {
|
|
if (!err.stack) {
|
|
err.stack = stack;
|
|
} else if (stack) {
|
|
const firstNewlineIndex = stack.indexOf("\n");
|
|
const secondNewlineIndex = firstNewlineIndex === -1 ? -1 : stack.indexOf("\n", firstNewlineIndex + 1);
|
|
const stackWithoutTwoTopLines = secondNewlineIndex === -1 ? "" : stack.slice(secondNewlineIndex + 1);
|
|
if (!String(err.stack).endsWith(stackWithoutTwoTopLines)) {
|
|
err.stack += "\n" + stack;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
}
|
|
}
|
|
throw err;
|
|
}
|
|
}
|
|
_request(configOrUrl, config) {
|
|
if (typeof configOrUrl === "string") {
|
|
config = config || {};
|
|
config.url = configOrUrl;
|
|
} else {
|
|
config = configOrUrl || {};
|
|
}
|
|
config = mergeConfig(this.defaults, config);
|
|
const { transitional: transitional2, paramsSerializer, headers } = config;
|
|
if (transitional2 !== void 0) {
|
|
validator_default.assertOptions(
|
|
transitional2,
|
|
{
|
|
silentJSONParsing: validators2.transitional(validators2.boolean),
|
|
forcedJSONParsing: validators2.transitional(validators2.boolean),
|
|
clarifyTimeoutError: validators2.transitional(validators2.boolean),
|
|
legacyInterceptorReqResOrdering: validators2.transitional(validators2.boolean)
|
|
},
|
|
false
|
|
);
|
|
}
|
|
if (paramsSerializer != null) {
|
|
if (utils_default.isFunction(paramsSerializer)) {
|
|
config.paramsSerializer = {
|
|
serialize: paramsSerializer
|
|
};
|
|
} else {
|
|
validator_default.assertOptions(
|
|
paramsSerializer,
|
|
{
|
|
encode: validators2.function,
|
|
serialize: validators2.function
|
|
},
|
|
true
|
|
);
|
|
}
|
|
}
|
|
if (config.allowAbsoluteUrls !== void 0) {
|
|
} else if (this.defaults.allowAbsoluteUrls !== void 0) {
|
|
config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;
|
|
} else {
|
|
config.allowAbsoluteUrls = true;
|
|
}
|
|
validator_default.assertOptions(
|
|
config,
|
|
{
|
|
baseUrl: validators2.spelling("baseURL"),
|
|
withXsrfToken: validators2.spelling("withXSRFToken")
|
|
},
|
|
true
|
|
);
|
|
config.method = (config.method || this.defaults.method || "get").toLowerCase();
|
|
let contextHeaders = headers && utils_default.merge(headers.common, headers[config.method]);
|
|
headers && utils_default.forEach(["delete", "get", "head", "post", "put", "patch", "common"], (method) => {
|
|
delete headers[method];
|
|
});
|
|
config.headers = AxiosHeaders_default.concat(contextHeaders, headers);
|
|
const requestInterceptorChain = [];
|
|
let synchronousRequestInterceptors = true;
|
|
this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
|
|
if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) {
|
|
return;
|
|
}
|
|
synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
|
|
const transitional3 = config.transitional || transitional_default;
|
|
const legacyInterceptorReqResOrdering = transitional3 && transitional3.legacyInterceptorReqResOrdering;
|
|
if (legacyInterceptorReqResOrdering) {
|
|
requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
|
|
} else {
|
|
requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
|
|
}
|
|
});
|
|
const responseInterceptorChain = [];
|
|
this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
|
|
responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
|
|
});
|
|
let promise;
|
|
let i = 0;
|
|
let len;
|
|
if (!synchronousRequestInterceptors) {
|
|
const chain = [dispatchRequest.bind(this), void 0];
|
|
chain.unshift(...requestInterceptorChain);
|
|
chain.push(...responseInterceptorChain);
|
|
len = chain.length;
|
|
promise = Promise.resolve(config);
|
|
while (i < len) {
|
|
promise = promise.then(chain[i++], chain[i++]);
|
|
}
|
|
return promise;
|
|
}
|
|
len = requestInterceptorChain.length;
|
|
let newConfig = config;
|
|
while (i < len) {
|
|
const onFulfilled = requestInterceptorChain[i++];
|
|
const onRejected = requestInterceptorChain[i++];
|
|
try {
|
|
newConfig = onFulfilled(newConfig);
|
|
} catch (error) {
|
|
onRejected.call(this, error);
|
|
break;
|
|
}
|
|
}
|
|
try {
|
|
promise = dispatchRequest.call(this, newConfig);
|
|
} catch (error) {
|
|
return Promise.reject(error);
|
|
}
|
|
i = 0;
|
|
len = responseInterceptorChain.length;
|
|
while (i < len) {
|
|
promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
|
|
}
|
|
return promise;
|
|
}
|
|
getUri(config) {
|
|
config = mergeConfig(this.defaults, config);
|
|
const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
|
|
return buildURL(fullPath, config.params, config.paramsSerializer);
|
|
}
|
|
};
|
|
utils_default.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) {
|
|
Axios.prototype[method] = function(url2, config) {
|
|
return this.request(
|
|
mergeConfig(config || {}, {
|
|
method,
|
|
url: url2,
|
|
data: (config || {}).data
|
|
})
|
|
);
|
|
};
|
|
});
|
|
utils_default.forEach(["post", "put", "patch"], function forEachMethodWithData(method) {
|
|
function generateHTTPMethod(isForm) {
|
|
return function httpMethod(url2, data, config) {
|
|
return this.request(
|
|
mergeConfig(config || {}, {
|
|
method,
|
|
headers: isForm ? {
|
|
"Content-Type": "multipart/form-data"
|
|
} : {},
|
|
url: url2,
|
|
data
|
|
})
|
|
);
|
|
};
|
|
}
|
|
Axios.prototype[method] = generateHTTPMethod();
|
|
Axios.prototype[method + "Form"] = generateHTTPMethod(true);
|
|
});
|
|
var Axios_default = Axios;
|
|
|
|
// node_modules/axios/lib/cancel/CancelToken.js
|
|
var CancelToken = class _CancelToken {
|
|
constructor(executor) {
|
|
if (typeof executor !== "function") {
|
|
throw new TypeError("executor must be a function.");
|
|
}
|
|
let resolvePromise;
|
|
this.promise = new Promise(function promiseExecutor(resolve) {
|
|
resolvePromise = resolve;
|
|
});
|
|
const token = this;
|
|
this.promise.then((cancel) => {
|
|
if (!token._listeners) return;
|
|
let i = token._listeners.length;
|
|
while (i-- > 0) {
|
|
token._listeners[i](cancel);
|
|
}
|
|
token._listeners = null;
|
|
});
|
|
this.promise.then = (onfulfilled) => {
|
|
let _resolve;
|
|
const promise = new Promise((resolve) => {
|
|
token.subscribe(resolve);
|
|
_resolve = resolve;
|
|
}).then(onfulfilled);
|
|
promise.cancel = function reject() {
|
|
token.unsubscribe(_resolve);
|
|
};
|
|
return promise;
|
|
};
|
|
executor(function cancel(message, config, request) {
|
|
if (token.reason) {
|
|
return;
|
|
}
|
|
token.reason = new CanceledError_default(message, config, request);
|
|
resolvePromise(token.reason);
|
|
});
|
|
}
|
|
/**
|
|
* Throws a `CanceledError` if cancellation has been requested.
|
|
*/
|
|
throwIfRequested() {
|
|
if (this.reason) {
|
|
throw this.reason;
|
|
}
|
|
}
|
|
/**
|
|
* Subscribe to the cancel signal
|
|
*/
|
|
subscribe(listener) {
|
|
if (this.reason) {
|
|
listener(this.reason);
|
|
return;
|
|
}
|
|
if (this._listeners) {
|
|
this._listeners.push(listener);
|
|
} else {
|
|
this._listeners = [listener];
|
|
}
|
|
}
|
|
/**
|
|
* Unsubscribe from the cancel signal
|
|
*/
|
|
unsubscribe(listener) {
|
|
if (!this._listeners) {
|
|
return;
|
|
}
|
|
const index = this._listeners.indexOf(listener);
|
|
if (index !== -1) {
|
|
this._listeners.splice(index, 1);
|
|
}
|
|
}
|
|
toAbortSignal() {
|
|
const controller = new AbortController();
|
|
const abort = (err) => {
|
|
controller.abort(err);
|
|
};
|
|
this.subscribe(abort);
|
|
controller.signal.unsubscribe = () => this.unsubscribe(abort);
|
|
return controller.signal;
|
|
}
|
|
/**
|
|
* Returns an object that contains a new `CancelToken` and a function that, when called,
|
|
* cancels the `CancelToken`.
|
|
*/
|
|
static source() {
|
|
let cancel;
|
|
const token = new _CancelToken(function executor(c) {
|
|
cancel = c;
|
|
});
|
|
return {
|
|
token,
|
|
cancel
|
|
};
|
|
}
|
|
};
|
|
var CancelToken_default = CancelToken;
|
|
|
|
// node_modules/axios/lib/helpers/spread.js
|
|
function spread(callback) {
|
|
return function wrap(arr) {
|
|
return callback.apply(null, arr);
|
|
};
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/isAxiosError.js
|
|
function isAxiosError(payload) {
|
|
return utils_default.isObject(payload) && payload.isAxiosError === true;
|
|
}
|
|
|
|
// node_modules/axios/lib/helpers/HttpStatusCode.js
|
|
var HttpStatusCode = {
|
|
Continue: 100,
|
|
SwitchingProtocols: 101,
|
|
Processing: 102,
|
|
EarlyHints: 103,
|
|
Ok: 200,
|
|
Created: 201,
|
|
Accepted: 202,
|
|
NonAuthoritativeInformation: 203,
|
|
NoContent: 204,
|
|
ResetContent: 205,
|
|
PartialContent: 206,
|
|
MultiStatus: 207,
|
|
AlreadyReported: 208,
|
|
ImUsed: 226,
|
|
MultipleChoices: 300,
|
|
MovedPermanently: 301,
|
|
Found: 302,
|
|
SeeOther: 303,
|
|
NotModified: 304,
|
|
UseProxy: 305,
|
|
Unused: 306,
|
|
TemporaryRedirect: 307,
|
|
PermanentRedirect: 308,
|
|
BadRequest: 400,
|
|
Unauthorized: 401,
|
|
PaymentRequired: 402,
|
|
Forbidden: 403,
|
|
NotFound: 404,
|
|
MethodNotAllowed: 405,
|
|
NotAcceptable: 406,
|
|
ProxyAuthenticationRequired: 407,
|
|
RequestTimeout: 408,
|
|
Conflict: 409,
|
|
Gone: 410,
|
|
LengthRequired: 411,
|
|
PreconditionFailed: 412,
|
|
PayloadTooLarge: 413,
|
|
UriTooLong: 414,
|
|
UnsupportedMediaType: 415,
|
|
RangeNotSatisfiable: 416,
|
|
ExpectationFailed: 417,
|
|
ImATeapot: 418,
|
|
MisdirectedRequest: 421,
|
|
UnprocessableEntity: 422,
|
|
Locked: 423,
|
|
FailedDependency: 424,
|
|
TooEarly: 425,
|
|
UpgradeRequired: 426,
|
|
PreconditionRequired: 428,
|
|
TooManyRequests: 429,
|
|
RequestHeaderFieldsTooLarge: 431,
|
|
UnavailableForLegalReasons: 451,
|
|
InternalServerError: 500,
|
|
NotImplemented: 501,
|
|
BadGateway: 502,
|
|
ServiceUnavailable: 503,
|
|
GatewayTimeout: 504,
|
|
HttpVersionNotSupported: 505,
|
|
VariantAlsoNegotiates: 506,
|
|
InsufficientStorage: 507,
|
|
LoopDetected: 508,
|
|
NotExtended: 510,
|
|
NetworkAuthenticationRequired: 511,
|
|
WebServerIsDown: 521,
|
|
ConnectionTimedOut: 522,
|
|
OriginIsUnreachable: 523,
|
|
TimeoutOccurred: 524,
|
|
SslHandshakeFailed: 525,
|
|
InvalidSslCertificate: 526
|
|
};
|
|
Object.entries(HttpStatusCode).forEach(([key, value]) => {
|
|
HttpStatusCode[value] = key;
|
|
});
|
|
var HttpStatusCode_default = HttpStatusCode;
|
|
|
|
// node_modules/axios/lib/axios.js
|
|
function createInstance(defaultConfig) {
|
|
const context = new Axios_default(defaultConfig);
|
|
const instance = bind(Axios_default.prototype.request, context);
|
|
utils_default.extend(instance, Axios_default.prototype, context, { allOwnKeys: true });
|
|
utils_default.extend(instance, context, null, { allOwnKeys: true });
|
|
instance.create = function create(instanceConfig) {
|
|
return createInstance(mergeConfig(defaultConfig, instanceConfig));
|
|
};
|
|
return instance;
|
|
}
|
|
var axios = createInstance(defaults_default);
|
|
axios.Axios = Axios_default;
|
|
axios.CanceledError = CanceledError_default;
|
|
axios.CancelToken = CancelToken_default;
|
|
axios.isCancel = isCancel;
|
|
axios.VERSION = VERSION;
|
|
axios.toFormData = toFormData_default;
|
|
axios.AxiosError = AxiosError_default;
|
|
axios.Cancel = axios.CanceledError;
|
|
axios.all = function all(promises) {
|
|
return Promise.all(promises);
|
|
};
|
|
axios.spread = spread;
|
|
axios.isAxiosError = isAxiosError;
|
|
axios.mergeConfig = mergeConfig;
|
|
axios.AxiosHeaders = AxiosHeaders_default;
|
|
axios.formToJSON = (thing) => formDataToJSON_default(utils_default.isHTMLForm(thing) ? new FormData(thing) : thing);
|
|
axios.getAdapter = adapters_default.getAdapter;
|
|
axios.HttpStatusCode = HttpStatusCode_default;
|
|
axios.default = axios;
|
|
var axios_default = axios;
|
|
|
|
// node_modules/axios/index.js
|
|
var {
|
|
Axios: Axios2,
|
|
AxiosError: AxiosError2,
|
|
CanceledError: CanceledError2,
|
|
isCancel: isCancel2,
|
|
CancelToken: CancelToken2,
|
|
VERSION: VERSION2,
|
|
all: all2,
|
|
Cancel,
|
|
isAxiosError: isAxiosError2,
|
|
spread: spread2,
|
|
toFormData: toFormData2,
|
|
AxiosHeaders: AxiosHeaders2,
|
|
HttpStatusCode: HttpStatusCode2,
|
|
formToJSON,
|
|
getAdapter: getAdapter2,
|
|
mergeConfig: mergeConfig2
|
|
} = axios_default;
|
|
|
|
// src/extension.ts
|
|
var fs = __toESM(require("fs"));
|
|
var path = __toESM(require("path"));
|
|
function getConfig() {
|
|
const cfg = vscode.workspace.getConfiguration("connectAiLab");
|
|
return {
|
|
ollamaBase: cfg.get("ollamaUrl", "http://127.0.0.1:11434"),
|
|
defaultModel: cfg.get("defaultModel", "gemma4:e2b"),
|
|
maxTreeFiles: cfg.get("maxContextFiles", 200),
|
|
timeout: cfg.get("requestTimeout", 300) * 1e3
|
|
};
|
|
}
|
|
var EXCLUDED_DIRS = /* @__PURE__ */ new Set([
|
|
"node_modules",
|
|
".git",
|
|
".vscode",
|
|
"out",
|
|
"dist",
|
|
"build",
|
|
".next",
|
|
".cache",
|
|
"__pycache__",
|
|
".DS_Store",
|
|
"coverage",
|
|
".turbo",
|
|
".nuxt",
|
|
".output",
|
|
"vendor",
|
|
"target"
|
|
]);
|
|
var MAX_CONTEXT_SIZE = 4e4;
|
|
var SYSTEM_PROMPT = `You are "Connect AI LAB", a premium agentic AI coding assistant running 100% offline on the user's machine.
|
|
|
|
You have THREE powerful agent actions. Use them whenever appropriate:
|
|
|
|
\u2501\u2501\u2501 ACTION 1: CREATE NEW FILES \u2501\u2501\u2501
|
|
<create_file path="relative/path/file.ext">
|
|
file content here
|
|
</create_file>
|
|
|
|
\u2501\u2501\u2501 ACTION 2: EDIT EXISTING FILES \u2501\u2501\u2501
|
|
<edit_file path="relative/path/file.ext">
|
|
<find>exact text to find in the file</find>
|
|
<replace>replacement text</replace>
|
|
</edit_file>
|
|
You can have multiple <find>/<replace> pairs inside one <edit_file> block.
|
|
|
|
\u2501\u2501\u2501 ACTION 3: RUN TERMINAL COMMANDS \u2501\u2501\u2501
|
|
<run_command>npm install express</run_command>
|
|
|
|
RULES:
|
|
1. ALWAYS respond in the same language the user uses.
|
|
2. Use agent actions automatically when the user's request requires creating, editing files, or running commands.
|
|
3. Outside of action blocks, briefly explain what you did.
|
|
4. For code that is just for explanation (not to be saved), use standard markdown code fences.
|
|
5. Be concise, professional, and helpful.
|
|
6. When editing files, the <find> text must EXACTLY match existing content in the file.`;
|
|
function activate(context) {
|
|
vscode.window.showInformationMessage("\u{1F525} Connect AI LAB V2 \uD65C\uC131\uD654 \uC644\uB8CC!");
|
|
console.log("Connect AI LAB extension activated.");
|
|
const provider = new SidebarChatProvider(context.extensionUri, context);
|
|
context.subscriptions.push(
|
|
vscode.window.registerWebviewViewProvider("connect-ai-lab-v2-view", provider, {
|
|
webviewOptions: { retainContextWhenHidden: true }
|
|
})
|
|
);
|
|
context.subscriptions.push(
|
|
vscode.commands.registerCommand("connect-ai-lab.newChat", () => {
|
|
provider.resetChat();
|
|
})
|
|
);
|
|
context.subscriptions.push(
|
|
vscode.commands.registerCommand("connect-ai-lab.exportChat", async () => {
|
|
await provider.exportChat();
|
|
})
|
|
);
|
|
context.subscriptions.push(
|
|
vscode.commands.registerCommand("connect-ai-lab.focusChat", () => {
|
|
provider.focusInput();
|
|
})
|
|
);
|
|
context.subscriptions.push(
|
|
vscode.commands.registerCommand("connect-ai-lab.explainSelection", () => {
|
|
const editor = vscode.window.activeTextEditor;
|
|
if (!editor) {
|
|
return;
|
|
}
|
|
const selection = editor.document.getText(editor.selection);
|
|
if (selection.trim()) {
|
|
provider.sendPromptFromExtension(`\uC774 \uCF54\uB4DC\uB97C \uBD84\uC11D\uD558\uACE0 \uC124\uBA85\uD574\uC918:
|
|
\`\`\`
|
|
${selection}
|
|
\`\`\``);
|
|
}
|
|
})
|
|
);
|
|
}
|
|
function deactivate() {
|
|
}
|
|
var SidebarChatProvider = class {
|
|
constructor(_extensionUri, ctx) {
|
|
this._extensionUri = _extensionUri;
|
|
this._ctx = ctx;
|
|
this._restoreHistory();
|
|
}
|
|
_extensionUri;
|
|
_view;
|
|
_chatHistory = [];
|
|
_terminal;
|
|
_ctx;
|
|
// 대화 표시용 (system prompt 제외, 유저에게 보여줄 것만 저장)
|
|
_displayMessages = [];
|
|
/** 저장된 대화 기록 복원 */
|
|
_restoreHistory() {
|
|
const saved = this._ctx.workspaceState.get("chatState");
|
|
if (saved && saved.chat && saved.chat.length > 1) {
|
|
this._chatHistory = saved.chat;
|
|
this._displayMessages = saved.display || [];
|
|
} else {
|
|
this._initHistory();
|
|
}
|
|
}
|
|
/** 대화 기록 영구 저장 (워크스페이스 단위) */
|
|
_saveHistory() {
|
|
this._ctx.workspaceState.update("chatState", {
|
|
chat: this._chatHistory,
|
|
display: this._displayMessages
|
|
});
|
|
}
|
|
_initHistory() {
|
|
this._chatHistory = [{ role: "system", content: SYSTEM_PROMPT }];
|
|
this._displayMessages = [];
|
|
}
|
|
resetChat() {
|
|
this._initHistory();
|
|
this._saveHistory();
|
|
if (this._view) {
|
|
this._view.webview.postMessage({ type: "clearChat" });
|
|
}
|
|
vscode.window.showInformationMessage("Connect AI LAB: \uC0C8 \uB300\uD654\uAC00 \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4.");
|
|
}
|
|
/** 대화를 Markdown 파일로 내보내기 */
|
|
async exportChat() {
|
|
if (this._displayMessages.length === 0) {
|
|
vscode.window.showWarningMessage("\uB0B4\uBCF4\uB0BC \uB300\uD654\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4.");
|
|
return;
|
|
}
|
|
let md = `# Connect AI LAB \u2014 \uB300\uD654 \uAE30\uB85D
|
|
|
|
_${(/* @__PURE__ */ new Date()).toLocaleString("ko-KR")}_
|
|
|
|
---
|
|
|
|
`;
|
|
for (const m of this._displayMessages) {
|
|
const label = m.role === "user" ? "**\u{1F464} You**" : "**\u2726 Connect AI LAB**";
|
|
md += `### ${label}
|
|
|
|
${m.text}
|
|
|
|
---
|
|
|
|
`;
|
|
}
|
|
const root = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
|
if (root) {
|
|
const filePath = path.join(root, `chat-export-${Date.now()}.md`);
|
|
fs.writeFileSync(filePath, md, "utf-8");
|
|
const doc = await vscode.workspace.openTextDocument(filePath);
|
|
await vscode.window.showTextDocument(doc);
|
|
vscode.window.showInformationMessage(`\uB300\uD654\uAC00 ${path.basename(filePath)}\uB85C \uC800\uC7A5\uB418\uC5C8\uC2B5\uB2C8\uB2E4.`);
|
|
}
|
|
}
|
|
/** 채팅 입력창에 포커스 (Cmd+L) */
|
|
focusInput() {
|
|
if (this._view) {
|
|
this._view.show?.(true);
|
|
this._view.webview.postMessage({ type: "focusInput" });
|
|
}
|
|
}
|
|
/** 외부에서 프롬프트 전송 (예: 코드 선택 → 설명) */
|
|
sendPromptFromExtension(prompt) {
|
|
if (this._view) {
|
|
this._view.show?.(true);
|
|
setTimeout(() => {
|
|
this._view?.webview.postMessage({ type: "injectPrompt", value: prompt });
|
|
}, 300);
|
|
}
|
|
}
|
|
// --------------------------------------------------------
|
|
// Webview Lifecycle
|
|
// --------------------------------------------------------
|
|
resolveWebviewView(webviewView, _context, _token) {
|
|
this._view = webviewView;
|
|
webviewView.webview.options = {
|
|
enableScripts: true,
|
|
localResourceRoots: [this._extensionUri]
|
|
};
|
|
webviewView.webview.onDidReceiveMessage(async (msg) => {
|
|
switch (msg.type) {
|
|
case "getModels":
|
|
await this._sendModels();
|
|
break;
|
|
case "prompt":
|
|
await this._handlePrompt(msg.value, msg.model);
|
|
break;
|
|
case "newChat":
|
|
this.resetChat();
|
|
break;
|
|
case "ready":
|
|
this._restoreDisplayMessages();
|
|
break;
|
|
}
|
|
});
|
|
webviewView.webview.html = this._getHtml();
|
|
}
|
|
// --------------------------------------------------------
|
|
// Fetch installed Ollama models
|
|
// --------------------------------------------------------
|
|
async _sendModels() {
|
|
if (!this._view) {
|
|
return;
|
|
}
|
|
const { ollamaBase, defaultModel } = getConfig();
|
|
try {
|
|
const res = await axios_default.get(`${ollamaBase}/api/tags`, { timeout: 3e3 });
|
|
let models = res.data.models.map((m) => m.name);
|
|
if (models.length === 0) {
|
|
models = [defaultModel];
|
|
} else if (!models.includes(defaultModel)) {
|
|
models.unshift(defaultModel);
|
|
}
|
|
this._view.webview.postMessage({ type: "modelsList", value: models });
|
|
} catch {
|
|
this._view.webview.postMessage({ type: "modelsList", value: [defaultModel] });
|
|
}
|
|
}
|
|
/** 저장된 대화 메시지를 웹뷰에 다시 전송 (복원) */
|
|
_restoreDisplayMessages() {
|
|
if (!this._view || this._displayMessages.length === 0) {
|
|
return;
|
|
}
|
|
this._view.webview.postMessage({
|
|
type: "restoreMessages",
|
|
value: this._displayMessages
|
|
});
|
|
}
|
|
// --------------------------------------------------------
|
|
// Build workspace file tree + read key files
|
|
// --------------------------------------------------------
|
|
_getWorkspaceContext() {
|
|
const root = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
|
if (!root) {
|
|
return "";
|
|
}
|
|
const lines = [];
|
|
let count = 0;
|
|
const walk = (dir, prefix) => {
|
|
if (count >= getConfig().maxTreeFiles) {
|
|
return;
|
|
}
|
|
let entries;
|
|
try {
|
|
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
} catch {
|
|
return;
|
|
}
|
|
entries.sort((a, b) => {
|
|
if (a.isDirectory() && !b.isDirectory()) {
|
|
return -1;
|
|
}
|
|
if (!a.isDirectory() && b.isDirectory()) {
|
|
return 1;
|
|
}
|
|
return a.name.localeCompare(b.name);
|
|
});
|
|
for (const entry of entries) {
|
|
if (count >= getConfig().maxTreeFiles) {
|
|
break;
|
|
}
|
|
if (EXCLUDED_DIRS.has(entry.name)) {
|
|
continue;
|
|
}
|
|
if (entry.name.startsWith(".") && entry.isDirectory()) {
|
|
continue;
|
|
}
|
|
if (entry.isDirectory()) {
|
|
lines.push(`${prefix}\u{1F4C1} ${entry.name}/`);
|
|
count++;
|
|
walk(path.join(dir, entry.name), prefix + " ");
|
|
} else {
|
|
lines.push(`${prefix}\u{1F4C4} ${entry.name}`);
|
|
count++;
|
|
}
|
|
}
|
|
};
|
|
walk(root, "");
|
|
let result = "";
|
|
if (lines.length > 0) {
|
|
result += `
|
|
|
|
[\uD504\uB85C\uC81D\uD2B8 \uD30C\uC77C \uAD6C\uC870]
|
|
${lines.join("\n")}`;
|
|
}
|
|
const keyFiles = [
|
|
"package.json",
|
|
"tsconfig.json",
|
|
"vite.config.ts",
|
|
"vite.config.js",
|
|
"next.config.js",
|
|
"next.config.ts",
|
|
"README.md",
|
|
"index.html",
|
|
"app.js",
|
|
"app.ts",
|
|
"main.ts",
|
|
"main.js",
|
|
"src/index.ts",
|
|
"src/index.js",
|
|
"src/App.tsx",
|
|
"src/App.jsx",
|
|
"src/main.ts",
|
|
"src/main.js"
|
|
];
|
|
let totalRead = 0;
|
|
const MAX_AUTO_READ = 15e3;
|
|
for (const kf of keyFiles) {
|
|
if (totalRead >= MAX_AUTO_READ) {
|
|
break;
|
|
}
|
|
const abs = path.join(root, kf);
|
|
if (fs.existsSync(abs)) {
|
|
try {
|
|
const content = fs.readFileSync(abs, "utf-8");
|
|
if (content.length < 5e3) {
|
|
result += `
|
|
|
|
[\uD30C\uC77C \uB0B4\uC6A9: ${kf}]
|
|
\`\`\`
|
|
${content}
|
|
\`\`\``;
|
|
totalRead += content.length;
|
|
}
|
|
} catch {
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
// --------------------------------------------------------
|
|
// Handle user prompt → Ollama → agent actions → response
|
|
// --------------------------------------------------------
|
|
async _handlePrompt(prompt, modelName) {
|
|
if (!this._view) {
|
|
return;
|
|
}
|
|
try {
|
|
const editor = vscode.window.activeTextEditor;
|
|
let contextBlock = "";
|
|
if (editor && editor.document.uri.scheme === "file") {
|
|
const text = editor.document.getText();
|
|
const name = path.basename(editor.document.fileName);
|
|
if (text.trim().length > 0 && text.length < MAX_CONTEXT_SIZE) {
|
|
contextBlock = `
|
|
|
|
[Currently open file: ${name}]
|
|
\`\`\`
|
|
${text}
|
|
\`\`\``;
|
|
}
|
|
}
|
|
const workspaceCtx = this._getWorkspaceContext();
|
|
this._chatHistory.push({
|
|
role: "user",
|
|
content: prompt + contextBlock + workspaceCtx
|
|
});
|
|
this._displayMessages.push({ text: prompt, role: "user" });
|
|
const { ollamaBase, defaultModel, timeout } = getConfig();
|
|
const response = await axios_default.post(`${ollamaBase}/api/chat`, {
|
|
model: modelName || defaultModel,
|
|
messages: this._chatHistory,
|
|
stream: false
|
|
}, { timeout });
|
|
const aiMessage = response.data.message.content;
|
|
this._chatHistory.push({ role: "assistant", content: aiMessage });
|
|
const report = this._executeActions(aiMessage);
|
|
let output = aiMessage;
|
|
if (report.length > 0) {
|
|
output += `
|
|
|
|
---
|
|
\u{1F4E6} **\uC5D0\uC774\uC804\uD2B8 \uC791\uC5C5 \uACB0\uACFC**
|
|
${report.join("\n")}`;
|
|
}
|
|
this._view.webview.postMessage({ type: "response", value: output });
|
|
this._displayMessages.push({ text: output, role: "ai" });
|
|
this._saveHistory();
|
|
} catch (error) {
|
|
const errMsg = error.code === "ECONNREFUSED" ? "\u26A0\uFE0F Ollama \uC11C\uBC84\uC5D0 \uC5F0\uACB0\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4.\n\uD130\uBBF8\uB110\uC5D0\uC11C `ollama serve`\uB97C \uC2E4\uD589\uD574\uC8FC\uC138\uC694." : `\u26A0\uFE0F \uC624\uB958: ${error.message}`;
|
|
this._view.webview.postMessage({ type: "error", value: errMsg });
|
|
}
|
|
}
|
|
// --------------------------------------------------------
|
|
// Execute ALL agent actions from AI response
|
|
// --------------------------------------------------------
|
|
_executeActions(aiMessage) {
|
|
const report = [];
|
|
const rootPath = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
|
|
if (!rootPath) {
|
|
const hasActions = /<create_file|<edit_file|<run_command/.test(aiMessage);
|
|
if (hasActions) {
|
|
report.push("\u274C \uD3F4\uB354\uAC00 \uC5F4\uB824\uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. File \u2192 Open Folder\uB85C \uD3F4\uB354\uB97C \uBA3C\uC800 \uC5F4\uC5B4\uC8FC\uC138\uC694.");
|
|
}
|
|
return report;
|
|
}
|
|
const createRegex = /<create_file\s+path="([^"]+)">([\s\S]*?)<\/create_file>/g;
|
|
let match;
|
|
let firstCreatedFile = "";
|
|
while ((match = createRegex.exec(aiMessage)) !== null) {
|
|
const relPath = match[1].trim();
|
|
const content = match[2].replace(/^\n/, "");
|
|
try {
|
|
const absPath = path.join(rootPath, relPath);
|
|
const dir = path.dirname(absPath);
|
|
if (!fs.existsSync(dir)) {
|
|
fs.mkdirSync(dir, { recursive: true });
|
|
}
|
|
fs.writeFileSync(absPath, content, "utf-8");
|
|
report.push(`\u2705 \uC0DD\uC131: ${relPath}`);
|
|
if (!firstCreatedFile) {
|
|
firstCreatedFile = absPath;
|
|
}
|
|
} catch (err) {
|
|
report.push(`\u274C \uC0DD\uC131 \uC2E4\uD328: ${relPath} \u2014 ${err.message}`);
|
|
}
|
|
}
|
|
if (firstCreatedFile) {
|
|
vscode.window.showTextDocument(vscode.Uri.file(firstCreatedFile), { preview: false });
|
|
}
|
|
const editRegex = /<edit_file\s+path="([^"]+)">([\s\S]*?)<\/edit_file>/g;
|
|
while ((match = editRegex.exec(aiMessage)) !== null) {
|
|
const relPath = match[1].trim();
|
|
const body = match[2];
|
|
const absPath = path.join(rootPath, relPath);
|
|
if (!fs.existsSync(absPath)) {
|
|
report.push(`\u274C \uD3B8\uC9D1 \uC2E4\uD328: ${relPath} \u2014 \uD30C\uC77C\uC774 \uC874\uC7AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.`);
|
|
continue;
|
|
}
|
|
try {
|
|
let fileContent = fs.readFileSync(absPath, "utf-8");
|
|
const findReplaceRegex = /<find>([\s\S]*?)<\/find>\s*<replace>([\s\S]*?)<\/replace>/g;
|
|
let frMatch;
|
|
let editCount = 0;
|
|
while ((frMatch = findReplaceRegex.exec(body)) !== null) {
|
|
const findText = frMatch[1];
|
|
const replaceText = frMatch[2];
|
|
if (fileContent.includes(findText)) {
|
|
fileContent = fileContent.replace(findText, replaceText);
|
|
editCount++;
|
|
} else {
|
|
report.push(`\u26A0\uFE0F ${relPath}: \uC77C\uCE58\uD558\uB294 \uD14D\uC2A4\uD2B8\uB97C \uCC3E\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.`);
|
|
}
|
|
}
|
|
if (editCount > 0) {
|
|
fs.writeFileSync(absPath, fileContent, "utf-8");
|
|
report.push(`\u270F\uFE0F \uD3B8\uC9D1 \uC644\uB8CC: ${relPath} (${editCount}\uAC74 \uC218\uC815)`);
|
|
vscode.window.showTextDocument(vscode.Uri.file(absPath), { preview: false });
|
|
}
|
|
} catch (err) {
|
|
report.push(`\u274C \uD3B8\uC9D1 \uC2E4\uD328: ${relPath} \u2014 ${err.message}`);
|
|
}
|
|
}
|
|
const cmdRegex = /<run_command>([\s\S]*?)<\/run_command>/g;
|
|
while ((match = cmdRegex.exec(aiMessage)) !== null) {
|
|
const cmd = match[1].trim();
|
|
try {
|
|
if (!this._terminal || this._terminal.exitStatus !== void 0) {
|
|
this._terminal = vscode.window.createTerminal({
|
|
name: "\u{1F680} Connect AI LAB",
|
|
cwd: rootPath
|
|
});
|
|
}
|
|
this._terminal.show();
|
|
this._terminal.sendText(cmd);
|
|
report.push(`\u{1F5A5}\uFE0F \uC2E4\uD589: ${cmd}`);
|
|
} catch (err) {
|
|
report.push(`\u274C \uBA85\uB839 \uC2E4\uD328: ${cmd} \u2014 ${err.message}`);
|
|
}
|
|
}
|
|
const successCount = report.filter((r) => r.startsWith("\u2705") || r.startsWith("\u270F\uFE0F") || r.startsWith("\u{1F5A5}\uFE0F")).length;
|
|
if (successCount > 0) {
|
|
vscode.window.showInformationMessage(`Connect AI LAB: ${successCount}\uAC1C \uC5D0\uC774\uC804\uD2B8 \uC791\uC5C5 \uC644\uB8CC!`);
|
|
}
|
|
return report;
|
|
}
|
|
// ============================================================
|
|
// Webview HTML — Premium UI v2
|
|
// ============================================================
|
|
// ============================================================
|
|
// Webview HTML — Premium UI v2 (Zero External Dependencies)
|
|
// ============================================================
|
|
_getHtml() {
|
|
return `<!DOCTYPE html>
|
|
<html lang="ko"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
<title>Connect AI LAB</title>
|
|
<style>
|
|
*{margin:0;padding:0;box-sizing:border-box}
|
|
:root{
|
|
--bg:#111113;--bg2:#18181b;--surface:#1e1e22;--surface2:#27272b;
|
|
--border:rgba(255,255,255,.08);--border2:rgba(255,255,255,.12);
|
|
--text:#a1a1aa;--text-bright:#fafafa;--text-dim:#52525b;
|
|
--accent:#818cf8;--accent2:#c084fc;--accent-glow:rgba(129,140,248,.15);
|
|
--input-bg:#1a1a1e;--code-bg:#0c0c0e;
|
|
--green:#34d399;--yellow:#fbbf24;--cyan:#22d3ee;--red:#fb7185;
|
|
}
|
|
html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;font-size:13px;background:var(--bg);color:var(--text);display:flex;flex-direction:column;overflow:hidden}
|
|
.header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:rgba(17,17,19,.85);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);flex-shrink:0;position:relative;z-index:10}
|
|
.header::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--accent),var(--accent2),transparent);opacity:.3}
|
|
.header-left{display:flex;align-items:center;gap:10px}
|
|
.logo{width:24px;height:24px;border-radius:6px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-size:14px;color:#fff;box-shadow:0 0 12px rgba(129,140,248,.3)}
|
|
.brand{font-weight:700;font-size:13px;color:var(--text-bright);letter-spacing:-.3px}
|
|
.header-right{display:flex;align-items:center;gap:6px}
|
|
select{background:var(--surface);color:var(--text-bright);border:1px solid var(--border2);padding:5px 10px;border-radius:6px;font-size:11px;font-family:inherit;cursor:pointer;outline:none;max-width:140px;transition:border-color .2s}
|
|
select:hover,select:focus{border-color:var(--accent)}
|
|
.btn-icon{background:var(--surface);border:1px solid var(--border2);color:var(--text-dim);width:28px;height:28px;border-radius:6px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}
|
|
.btn-icon:hover{background:var(--surface2);color:var(--text-bright);border-color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}
|
|
.chat{flex:1;overflow-y:auto;padding:20px 16px;display:flex;flex-direction:column;gap:20px}
|
|
.chat::-webkit-scrollbar{width:3px}.chat::-webkit-scrollbar-track{background:transparent}.chat::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}
|
|
.msg{display:flex;flex-direction:column;gap:6px;animation:msgIn .3s ease-out}
|
|
.msg-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:11.5px;color:var(--text)}
|
|
.msg-time{font-weight:400;font-size:10px;color:var(--text-dim);margin-left:auto}
|
|
.av{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}
|
|
.av-user{background:var(--surface2);color:var(--text)}.av-ai{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:0 0 8px rgba(129,140,248,.2)}
|
|
.msg-body{padding-left:30px;line-height:1.7;color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:13px}
|
|
.msg-user .msg-body{background:var(--surface);border:1px solid var(--border2);border-radius:12px;padding:10px 14px;margin-left:30px;color:var(--text-bright)}
|
|
.msg-body pre{background:var(--code-bg);border:1px solid var(--border2);border-radius:8px;padding:14px 16px;overflow-x:auto;margin:8px 0;font-size:12px;line-height:1.55;color:#adbac7}
|
|
.msg-body code{font-family:'SF Mono','Fira Code','Cascadia Code','Menlo',monospace;font-size:12px}
|
|
.msg-body :not(pre)>code{background:rgba(129,140,248,.1);color:var(--accent);padding:1px 6px;border-radius:4px;border:1px solid rgba(129,140,248,.15)}
|
|
.code-wrap{position:relative}
|
|
.code-lang{position:absolute;top:0;left:14px;background:var(--surface2);color:var(--text-dim);padding:1px 8px;border-radius:0 0 4px 4px;font-size:9px;font-family:'SF Mono',monospace;text-transform:uppercase;letter-spacing:.5px}
|
|
.copy-btn{position:absolute;top:6px;right:8px;background:var(--surface2);border:1px solid var(--border2);color:var(--text-dim);padding:3px 10px;border-radius:5px;font-size:10px;cursor:pointer;opacity:0;transition:all .2s;font-family:inherit;z-index:1}
|
|
.code-wrap:hover .copy-btn{opacity:1}.copy-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}
|
|
.copy-btn.copied{background:var(--green);color:#fff;border-color:var(--green);opacity:1}
|
|
.file-badge{background:rgba(251,191,36,.06);border:1px solid rgba(251,191,36,.2);border-radius:8px 8px 0 0;border-bottom:none;padding:8px 14px;font-size:11px;font-weight:600;color:var(--yellow);display:flex;align-items:center;gap:6px}
|
|
.edit-badge{background:rgba(34,211,238,.06);border:1px solid rgba(34,211,238,.2);border-radius:8px 8px 0 0;border-bottom:none;padding:8px 14px;font-size:11px;font-weight:600;color:var(--cyan);display:flex;align-items:center;gap:6px}
|
|
.cmd-badge{background:rgba(129,140,248,.06);border:1px solid rgba(129,140,248,.2);border-radius:8px;padding:10px 14px;margin:8px 0;font-size:12px;color:var(--accent);font-family:'SF Mono','Menlo',monospace;display:flex;align-items:center;gap:8px}
|
|
.agent-report{background:rgba(52,211,153,.06);border:1px solid rgba(52,211,153,.2);border-radius:8px;padding:12px 14px;margin-top:8px;font-size:12px;line-height:1.7}
|
|
.msg-error .msg-body{color:var(--red)}
|
|
.welcome{text-align:center;padding:30px 20px 10px}
|
|
.welcome-logo{width:48px;height:48px;border-radius:14px;margin:0 auto 14px;background:linear-gradient(135deg,var(--accent),var(--accent2));display:flex;align-items:center;justify-content:center;font-size:26px;color:#fff;box-shadow:0 0 30px rgba(129,140,248,.25)}
|
|
.welcome-title{font-size:18px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,var(--accent),var(--accent2));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px}
|
|
.welcome-sub{color:var(--text-dim);font-size:12px;line-height:1.6;margin-bottom:16px}
|
|
.welcome-features{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
|
|
.wf{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text)}.wf-icon{font-size:14px}
|
|
.quick-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}
|
|
.qa-btn{background:var(--surface);border:1px solid var(--border2);color:var(--text);padding:8px 14px;border-radius:8px;font-size:11px;cursor:pointer;transition:all .2s;font-family:inherit}
|
|
.qa-btn:hover{border-color:var(--accent);color:var(--text-bright);background:var(--surface2);box-shadow:0 0 12px var(--accent-glow)}
|
|
.loading-wrap{padding-left:30px;padding-top:6px;display:flex;align-items:center;gap:8px}
|
|
.loading-bar{width:120px;height:3px;background:var(--surface2);border-radius:3px;overflow:hidden;position:relative}
|
|
.loading-bar::after{content:'';position:absolute;top:0;left:-40px;width:40px;height:100%;background:linear-gradient(90deg,transparent,var(--accent),var(--accent2),transparent);animation:shimmer 1.2s ease-in-out infinite}
|
|
.loading-text{font-size:11px;color:var(--text-dim);animation:pulse 2s ease-in-out infinite}
|
|
.input-wrap{padding:10px 16px 16px;flex-shrink:0;position:relative}
|
|
.input-box{background:var(--input-bg);border:1px solid var(--border2);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;transition:all .2s;position:relative}
|
|
.input-box::before{content:'';position:absolute;inset:-1px;border-radius:13px;background:linear-gradient(135deg,var(--accent),var(--accent2));opacity:0;transition:opacity .3s;z-index:-1}
|
|
.input-box:focus-within{border-color:transparent}.input-box:focus-within::before{opacity:.4}
|
|
textarea{width:100%;background:transparent;border:none;color:var(--text-bright);font-family:inherit;font-size:13px;line-height:1.5;resize:none;outline:none;min-height:22px;max-height:150px}
|
|
textarea::placeholder{color:var(--text-dim)}
|
|
.input-footer{display:flex;align-items:center;justify-content:space-between}
|
|
.input-hint{font-size:10px;color:var(--text-dim)}
|
|
.input-btns{display:flex;gap:5px}
|
|
.send-btn{background:linear-gradient(135deg,var(--accent),var(--accent2));border:none;color:#fff;width:30px;height:30px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .15s;box-shadow:0 2px 8px rgba(129,140,248,.25)}
|
|
.send-btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(129,140,248,.35)}.send-btn:active{transform:scale(.94)}.send-btn:disabled{opacity:.25;cursor:not-allowed;transform:none;box-shadow:none}
|
|
.stop-btn{background:var(--red);border:none;color:#fff;width:30px;height:30px;border-radius:8px;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:11px}
|
|
.stop-btn.visible{display:flex}
|
|
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
|
|
@keyframes shimmer{0%{left:-40px}100%{left:120px}}
|
|
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}
|
|
</style></head><body>
|
|
<div class="header"><div class="header-left"><div class="logo">\u2726</div><span class="brand">Connect AI LAB</span></div><div class="header-right"><select id="modelSel"></select><button class="btn-icon" id="newChatBtn" title="New Chat">+</button></div></div>
|
|
<div class="chat" id="chat">
|
|
<div class="welcome">
|
|
<div class="welcome-logo">\u2726</div>
|
|
<div class="welcome-title">Connect AI LAB</div>
|
|
<div class="welcome-sub">100% \uB85C\uCEEC \xB7 100% \uC624\uD504\uB77C\uC778 \xB7 100% \uBB34\uB8CC<br>\uD504\uB85C\uC81D\uD2B8\uB97C \uC774\uD574\uD558\uACE0, \uCF54\uB4DC\uB97C \uC791\uC131\uD558\uACE0, \uC2E4\uD589\uD569\uB2C8\uB2E4.</div>
|
|
</div></div>
|
|
<div class="input-wrap"><div class="input-box">
|
|
<textarea id="input" rows="1" placeholder="\uBB34\uC5C7\uC744 \uB9CC\uB4E4\uC5B4 \uB4DC\uB9B4\uAE4C\uC694?"></textarea>
|
|
<div class="input-footer"><span class="input-hint">Enter \uC804\uC1A1 \xB7 Shift+Enter \uC904\uBC14\uAFC8</span>
|
|
<div class="input-btns"><button class="stop-btn" id="stopBtn">\u25A0</button><button class="send-btn" id="sendBtn">\u2191</button></div></div></div></div>
|
|
<script>
|
|
try {
|
|
const vscode=acquireVsCodeApi(),chat=document.getElementById('chat'),input=document.getElementById('input'),
|
|
sendBtn=document.getElementById('sendBtn'),stopBtn=document.getElementById('stopBtn'),
|
|
modelSel=document.getElementById('modelSel'),newChatBtn=document.getElementById('newChatBtn');
|
|
let loader=null,sending=false;
|
|
vscode.postMessage({type:'getModels'});
|
|
setTimeout(()=>vscode.postMessage({type:'ready'}),300);
|
|
input.addEventListener('input',()=>{input.style.height='auto';input.style.height=Math.min(input.scrollHeight,150)+'px'});
|
|
function getTime(){return new Date().toLocaleTimeString('ko-KR',{hour:'2-digit',minute:'2-digit'})}
|
|
function esc(s){const d=document.createElement('div');d.innerText=s;return d.innerHTML}
|
|
function fmt(t){
|
|
t=t.replace(new RegExp('<create_file\\s+path="([^"]+)">([\\s\\S]*?)<\\/create_file>', 'g'),(_,p,c)=>'<div class="file-badge">\u{1F4C1} '+esc(p)+' \u2014 \uC790\uB3D9 \uC0DD\uC131\uB428</div><div class="code-wrap"><pre><code>'+esc(c)+'</code></pre><button class="copy-btn" onclick="copyCode(this)">Copy</button></div>');
|
|
t=t.replace(new RegExp('<edit_file\\s+path="([^"]+)">([\\s\\S]*?)<\\/edit_file>', 'g'),(_,p,c)=>'<div class="edit-badge">\u270F\uFE0F '+esc(p)+' \u2014 \uD3B8\uC9D1\uB428</div><div class="code-wrap"><pre><code>'+esc(c)+'</code></pre><button class="copy-btn" onclick="copyCode(this)">Copy</button></div>');
|
|
t=t.replace(new RegExp('<run_command>([\\s\\S]*?)<\\/run_command>', 'g'),(_,c)=>'<div class="cmd-badge">\u25B6 '+esc(c)+'</div>');
|
|
t=t.replace(new RegExp('\\x60\\x60\\x60(\\w*)\\n([\\s\\S]*?)\\x60\\x60\\x60', 'g'),(_,lang,c)=>{const l=lang||'code';return '<div class="code-wrap"><span class="code-lang">'+l+'</span><pre><code>'+esc(c)+'</code></pre><button class="copy-btn" onclick="copyCode(this)">Copy</button></div>'});
|
|
t=t.replace(new RegExp('\\x60([^\\x60]+)\\x60', 'g'),(_,c)=>'<code>'+esc(c)+'</code>');
|
|
t=t.replace(new RegExp('\\*\\*([^*]+)\\*\\*', 'g'),'<strong>$1</strong>');
|
|
return t;
|
|
}
|
|
function copyCode(btn){const code=btn.parentElement.querySelector('code');if(!code)return;navigator.clipboard.writeText(code.innerText).then(()=>{btn.textContent='\u2713 Copied';btn.classList.add('copied');setTimeout(()=>{btn.textContent='Copy';btn.classList.remove('copied')},1500)})}
|
|
function addMsg(text,role){
|
|
const isUser=role==='user',isErr=role==='error';
|
|
const el=document.createElement('div');el.className='msg'+(isUser?' msg-user':'')+(isErr?' msg-error':'');
|
|
const head=document.createElement('div');head.className='msg-head';
|
|
head.innerHTML=(isUser?'<div class="av av-user">\u{1F464}</div><span>You</span>':'<div class="av av-ai">\u2726</div><span>Connect AI LAB</span>')+'<span class="msg-time">'+getTime()+'</span>';
|
|
const body=document.createElement('div');body.className='msg-body';
|
|
if(isUser){body.innerText=text}else{body.innerHTML=fmt(text)}
|
|
el.appendChild(head);el.appendChild(body);chat.appendChild(el);chat.scrollTop=chat.scrollHeight;
|
|
}
|
|
function showLoader(){loader=document.createElement('div');loader.className='msg';loader.innerHTML='<div class="msg-head"><div class="av av-ai">\u2726</div><span>Connect AI LAB</span><span class="msg-time">'+getTime()+'</span></div><div class="loading-wrap"><div class="loading-bar"></div><span class="loading-text">\uC0DD\uAC01\uD558\uB294 \uC911...</span></div>';chat.appendChild(loader);chat.scrollTop=chat.scrollHeight}
|
|
function hideLoader(){if(loader&&loader.parentNode)loader.parentNode.removeChild(loader);loader=null}
|
|
function setSending(v){sending=v;sendBtn.disabled=v;stopBtn.classList.toggle('visible',v);input.disabled=v;if(!v)input.focus()}
|
|
function send(){const text=input.value.trim();if(!text||sending)return;const w=document.querySelector('.welcome');if(w)w.remove();document.querySelectorAll('.quick-actions').forEach(e=>e.remove());addMsg(text,'user');input.value='';input.style.height='auto';setSending(true);showLoader();vscode.postMessage({type:'prompt',value:text,model:modelSel.value})}
|
|
document.addEventListener('click',e=>{if(e.target.classList.contains('qa-btn')){const p=e.target.getAttribute('data-prompt');if(p){input.value=p;send()}}});
|
|
sendBtn.addEventListener('click',send);
|
|
input.addEventListener('keydown',e=>{if(e.key==='Enter'&&!e.shiftKey){e.preventDefault();send()}});
|
|
newChatBtn.addEventListener('click',()=>vscode.postMessage({type:'newChat'}));
|
|
window.addEventListener('message',e=>{const msg=e.data;switch(msg.type){
|
|
case 'response':hideLoader();setSending(false);addMsg(msg.value,'ai');break;
|
|
case 'error':hideLoader();setSending(false);addMsg(msg.value,'error');break;
|
|
case 'modelsList':modelSel.innerHTML='';msg.value.forEach(m=>{const o=document.createElement('option');o.value=m;o.textContent=m;modelSel.appendChild(o)});break;
|
|
case 'clearChat':chat.innerHTML='';addMsg('\uC0C8 \uB300\uD654\uAC00 \uC2DC\uC791\uB418\uC5C8\uC2B5\uB2C8\uB2E4.','ai');break;
|
|
case 'restoreMessages':chat.innerHTML='';if(msg.value&&msg.value.length>0){msg.value.forEach(m=>addMsg(m.text,m.role))}break;
|
|
case 'focusInput':input.focus();break;
|
|
case 'injectPrompt':input.value=msg.value;input.style.height='auto';input.style.height=Math.min(input.scrollHeight,150)+'px';send();break;
|
|
} });
|
|
} catch(err) {
|
|
document.body.innerHTML = '<div style="color:#ff4444;padding:20px;background:#111;height:100%;font-size:14px;overflow:auto;"><h2>\u26A0\uFE0F WEBVIEW JS CRASH</h2><pre>' + err.name + ': ' + err.message + '
|
|
' + err.stack + '</pre></div>';
|
|
}
|
|
</script></body></html>`;
|
|
}
|
|
};
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
activate,
|
|
deactivate
|
|
});
|
|
/*! Bundled license information:
|
|
|
|
mime-db/index.js:
|
|
(*!
|
|
* mime-db
|
|
* Copyright(c) 2014 Jonathan Ong
|
|
* Copyright(c) 2015-2022 Douglas Christopher Wilson
|
|
* MIT Licensed
|
|
*)
|
|
|
|
mime-types/index.js:
|
|
(*!
|
|
* mime-types
|
|
* Copyright(c) 2014 Jonathan Ong
|
|
* Copyright(c) 2015 Douglas Christopher Wilson
|
|
* MIT Licensed
|
|
*)
|
|
*/
|