vite-multiple-assets
Version:
Multiple public asset directories for vite
1,154 lines • 54.2 kB
JavaScript
// src/server.ts
function _array_like_to_array(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
return arr2;
}
function _array_with_holes(arr) {
if (Array.isArray(arr)) return arr;
}
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _async_to_generator(fn) {
return function() {
var self = this, args = arguments;
return new Promise(function(resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _iterable_to_array_limit(arr, i) {
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
if (_i == null) return;
var _arr = [];
var _n = true;
var _d = false;
var _s, _e;
try {
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally{
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally{
if (_d) throw _e;
}
}
return _arr;
}
function _non_iterable_rest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _object_spread(target) {
for(var i = 1; i < arguments.length; i++){
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function(key) {
_define_property(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _object_spread_props(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _object_without_properties(source, excluded) {
if (source == null) return {};
var target = _object_without_properties_loose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for(i = 0; i < sourceSymbolKeys.length; i++){
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
function _object_without_properties_loose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for(i = 0; i < sourceKeys.length; i++){
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
function _sliced_to_array(arr, i) {
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
}
function _unsupported_iterable_to_array(o, minLen) {
if (!o) return;
if (typeof o === "string") return _array_like_to_array(o, minLen);
var n = Object.prototype.toString.call(o).slice(8, -1);
if (n === "Object" && o.constructor) n = o.constructor.name;
if (n === "Map" || n === "Set") return Array.from(n);
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
}
function _ts_generator(thisArg, body) {
var f, y, t, g, _ = {
label: 0,
sent: function() {
if (t[0] & 1) throw t[1];
return t[1];
},
trys: [],
ops: []
};
return g = {
next: verb(0),
"throw": verb(1),
"return": verb(2)
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return step([
n,
v
]);
};
}
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while(_)try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [
op[0] & 2,
t.value
];
switch(op[0]){
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return {
value: op[1],
done: false
};
case 5:
_.label++;
y = op[1];
op = [
0
];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [
6,
e
];
y = 0;
} finally{
f = t = 0;
}
if (op[0] & 5) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: true
};
}
}
function _ts_values(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function() {
if (o && i >= o.length) o = void 0;
return {
value: o && o[i++],
done: !o
};
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}
import fs4 from "fs";
import mime from "mime-types";
// src/build.ts
import fs3 from "fs";
import { basename, dirname as dirname2, isAbsolute, join as join3, resolve as resolve2 } from "path";
import mm2 from "micromatch";
import fg from "fast-glob";
// src/utils/countParentDirectory.ts
function countParentDirectory(path) {
var parent = path.split("../");
var countParent = parent.length - 1;
return {
countParent: countParent,
joinPath: Array(countParent).fill("../").join("")
};
}
// src/utils/checkIsFolder.ts
import fs from "fs";
function checkIsFolder(pathToCheck) {
return _checkIsFolder.apply(this, arguments);
}
function _checkIsFolder() {
_checkIsFolder = _async_to_generator(function(pathToCheck) {
var isFolder;
return _ts_generator(this, function(_state) {
isFolder = true;
return [
2,
fs.promises.stat(pathToCheck).then(function(stats) {
if (stats.isFile()) {
isFolder = false;
}
if (stats.isDirectory()) {
isFolder = true;
}
return isFolder;
}).catch(function(e) {})
];
});
});
return _checkIsFolder.apply(this, arguments);
}
// src/utils/copyWithResolvedSymlinks.ts
import fs2 from "fs";
import { dirname, join, resolve, sep } from "path";
import { sep as posixSep } from "path/posix";
function copyWithResolvedSymlinks(source, destination) {
return _copyWithResolvedSymlinks.apply(this, arguments);
}
function _copyWithResolvedSymlinks() {
_copyWithResolvedSymlinks = _async_to_generator(function(source, destination) {
var stat, realPath, absoluteRealPath, items, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, item, err, error;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
_state.trys.push([
0,
18,
,
19
]);
return [
4,
fs2.promises.lstat(source)
];
case 1:
stat = _state.sent();
if (!stat.isSymbolicLink()) return [
3,
4
];
return [
4,
fs2.promises.readlink(source)
];
case 2:
realPath = _state.sent();
absoluteRealPath = resolve(dirname(source), realPath);
return [
4,
copyWithResolvedSymlinks(absoluteRealPath, destination)
];
case 3:
_state.sent();
return [
3,
17
];
case 4:
if (!stat.isDirectory()) return [
3,
15
];
return [
4,
fs2.promises.mkdir(destination, {
recursive: true
})
];
case 5:
_state.sent();
return [
4,
fs2.promises.readdir(source)
];
case 6:
items = _state.sent();
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
_state.label = 7;
case 7:
_state.trys.push([
7,
12,
13,
14
]);
_iterator = items[Symbol.iterator]();
_state.label = 8;
case 8:
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
3,
11
];
item = _step.value;
return [
4,
copyWithResolvedSymlinks(replacePosixSep(join(source, item)), replacePosixSep(join(destination, item)))
];
case 9:
_state.sent();
_state.label = 10;
case 10:
_iteratorNormalCompletion = true;
return [
3,
8
];
case 11:
return [
3,
14
];
case 12:
err = _state.sent();
_didIteratorError = true;
_iteratorError = err;
return [
3,
14
];
case 13:
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
return [
7
];
case 14:
return [
3,
17
];
case 15:
return [
4,
fs2.promises.copyFile(source, destination)
];
case 16:
_state.sent();
_state.label = 17;
case 17:
return [
3,
19
];
case 18:
error = _state.sent();
return [
3,
19
];
case 19:
return [
2
];
}
});
});
return _copyWithResolvedSymlinks.apply(this, arguments);
}
function replacePosixSep(value) {
return value.replaceAll(sep, posixSep);
}
var checkSymLink = function(path) {
try {
return fs2.lstatSync(path).isSymbolicLink();
} catch (error) {
return false;
}
};
function readSymlink(path, cb) {
fs2.readlink(path, function(err, linkString) {
return cb === null || cb === void 0 ? void 0 : cb(err, linkString);
});
}
// src/utils/viteBase.ts
function removeViteBase(path, base) {
var regex = new RegExp("/?".concat(base));
return path.replace(regex, "");
}
function replaceStartCharacter(path, character) {
try {
if (path.startsWith(character)) {
return path.replace(character, "");
}
return path;
} catch (e) {
return path;
}
}
// src/utils/transformCssUrl.ts
import mm from "micromatch";
import { join as join2 } from "path";
function transformCssUrl(props) {
var mapper2 = props.mapper, code = props.code, id = props.id, viteBase2 = props.viteBase;
if (/\.(css|scss|sass|less|styl|stylus)$/.test(id)) {
return {
code: code.replace(/url\(["']?([^"')]+)["']?\)/g, function(match, url) {
if (!mm.isMatch(url, "".concat(viteBase2, "**")) && mapper2.mapper[replaceStartCharacter(url, "/")]) {
return match.replace(url, replacePosixSep(join2(viteBase2, url)));
}
return match;
})
};
}
return null;
}
// src/build.ts
function destinationResolver() {
var list = {};
var resolve4 = function(_param) {
var assets = _param.assets, dstFile = _param.dstFile, ignore = _param.opts.ignore, opts = _object_without_properties(_param.opts, [
"ignore"
]);
var files = transformFiles(assets, opts).files;
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
try {
for(var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
var asset = _step.value;
if (!(asset in list)) {
var scan = mm2.scan(asset);
list[asset] = {
base: scan.base,
glob: scan.glob,
startGlob: scan.input.indexOf(scan.glob),
isMatch: mm2.matcher(asset, _object_spread({
ignore: ignore
}, opts))
};
}
if (list[asset].isMatch(dstFile) && dstFile.slice(0, list[asset].base.length).toUpperCase() === list[asset].base.toUpperCase()) {
dstFile = dstFile.slice(list[asset].startGlob);
break;
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally{
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return dstFile;
};
return {
list: list,
resolve: resolve4
};
}
var internalDestination = destinationResolver();
function transformFiles(data, opts) {
var __data = [];
var cwd = (opts !== null && opts !== void 0 ? opts : {}).cwd;
var __files = [];
var watchPaths = [];
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
try {
for(var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
var item = _step.value;
if (typeof item === "string") {
__files.push(item);
__data.push({
input: item,
output: ""
});
} else {
var watch = item.watch, input = item.input;
if (watch) {
var path = handleWatchPath(input);
path && watchPaths.push(resolve2(cwd, path));
}
__files.push(input);
__data.push(item);
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally{
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return {
watchPaths: watchPaths,
data: __data,
files: __files
};
}
function handleWatchPath(path) {
return fg.sync(path.replace("**", ""), {
onlyFiles: false,
followSymbolicLinks: true
})[0];
}
function getFiles() {
return _getFiles.apply(this, arguments);
}
function _getFiles() {
_getFiles = _async_to_generator(function() {
var files_, opts, viteConfig, writeBundleOptions, _transformFiles, __transformFiles, data, watchPaths, cloneOpts, files, mapper2, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step;
var _arguments = arguments;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
files_ = _arguments.length > 0 && _arguments[0] !== void 0 ? _arguments[0] : [], opts = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {}, viteConfig = _arguments.length > 2 ? _arguments[2] : void 0, writeBundleOptions = _arguments.length > 3 ? _arguments[3] : void 0;
files_ = files_ || [];
_transformFiles = transformFiles(files_, opts), __transformFiles = _transformFiles.files, data = _transformFiles.data, watchPaths = _transformFiles.watchPaths;
cloneOpts = _object_spread({}, opts);
if (opts.followSymbolicLinks) {
cloneOpts.markDirectories = false;
cloneOpts.onlyFiles = false;
cloneOpts.onlyDirectories = false;
}
return [
4,
fg.glob(__transformFiles, _object_spread_props(_object_spread({
// onlyFiles: false,
ignore: [],
onlyFiles: true,
onlyDirectories: false,
markDirectories: true,
dot: true
}, cloneOpts), {
followSymbolicLinks: !opts.followSymbolicLinks,
throwErrorOnBrokenSymbolicLink: opts.followSymbolicLinks
}))
];
case 1:
files = _state.sent();
mapper2 = {};
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
try {
_loop = function() {
var filepath = _step.value;
var baseFile = filepath;
var name = baseFile;
name = internalDestination.resolve({
filepath: filepath,
baseFile: baseFile,
opts: opts,
viteConfig: viteConfig,
writeBundleOptions: writeBundleOptions,
assets: files_,
dstFile: name,
dst: opts.__dst,
__files: mapper2
});
var _dstFile = void 0;
if (opts.dst && typeof opts.dst === "function") _dstFile = opts.dst({
filepath: filepath,
baseFile: baseFile,
opts: opts,
viteConfig: viteConfig,
writeBundleOptions: writeBundleOptions,
assets: files_,
dstFile: name,
dst: opts.__dst,
__files: mapper2
});
if (_dstFile === false) return "continue";
if (_dstFile === void 0) _dstFile = name;
_dstFile = replacePosixSep(_dstFile);
var indexMatch = data.findIndex(function(item) {
return mm2.isMatch(filepath, item.input);
});
var dataMatch = data[indexMatch];
var _ref = dataMatch || {}, _ref_output = _ref.output, output = _ref_output === void 0 ? "" : _ref_output, _ref_flatten = _ref.flatten, flatten = _ref_flatten === void 0 ? false : _ref_flatten;
var replaceOutput = output.replace(/^\/+/, "");
name = output ? replacePosixSep(join3(replaceOutput, flatten ? basename(filepath) : _dstFile)) : _dstFile;
var _countParentDirectory = countParentDirectory(filepath), countParent = _countParentDirectory.countParent, joinPath = _countParentDirectory.joinPath;
mapper2[name] = {
path: resolve2(opts.cwd, filepath),
output: dirname2(name),
isSymLink: opts.followSymbolicLinks ? checkSymLink(filepath) : false,
root: countParent ? resolve2(opts.cwd, joinPath) : ""
};
};
for(_iterator = files[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally{
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return [
2,
{
mapper: mapper2,
watchPaths: watchPaths
}
];
}
});
});
return _getFiles.apply(this, arguments);
}
function buildMiddleWare(writeBundleOptions) {
return _buildMiddleWare.apply(this, arguments);
}
function _buildMiddleWare() {
_buildMiddleWare = _async_to_generator(function(writeBundleOptions) {
var assets, opts, viteConfig, _ref, mapper2, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, err;
var _arguments = arguments;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
assets = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : [], opts = _arguments.length > 2 && _arguments[2] !== void 0 ? _arguments[2] : {}, viteConfig = _arguments.length > 3 ? _arguments[3] : void 0;
return [
4,
getFiles(assets, opts, viteConfig, writeBundleOptions)
];
case 1:
_ref = _state.sent(), mapper2 = _ref.mapper;
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
_state.label = 2;
case 2:
_state.trys.push([
2,
7,
8,
9
]);
_loop = function() {
var _step_value, _dstFile, filepath, output, path, root, dstFile, pathDst, dirnamePathDst;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
_step_value = _sliced_to_array(_step.value, 2), _dstFile = _step_value[0], filepath = _step_value[1];
output = filepath.output, path = filepath.path, root = filepath.root;
dstFile = isAbsolute(_dstFile) ? _dstFile : replacePosixSep(join3(opts.__dst, output || _dstFile));
pathDst = output ? replacePosixSep(join3(dstFile, basename(path))) : dstFile;
dirnamePathDst = dirname2(pathDst);
return [
4,
fs3.promises.mkdir(dirnamePathDst, {
recursive: true
}).then(/*#__PURE__*/ _async_to_generator(function() {
var check;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
return [
4,
checkIsFolder(path)
];
case 1:
check = _state.sent();
return [
2,
!check ? fs3.promises.copyFile(path, pathDst) : null
];
}
});
})).catch(/*#__PURE__*/ function() {
var _ref = _async_to_generator(function(reason) {
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
if (!(reason.code === "EISDIR" /* EISDIR */ || reason.code === "ERR_FS_EISDIR" /* ERR_FS_EISDIR */ )) return [
3,
2
];
return [
4,
fs3.promises.mkdir(dstFile)
];
case 1:
return [
2,
_state.sent()
];
case 2:
if (reason.code === "ENOENT" /* ENOENT */ && reason.path && reason.dest) {
readSymlink(path, /*#__PURE__*/ function() {
var _ref = _async_to_generator(function(err, linkString) {
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
if (!err) return [
3,
1
];
return [
3,
3
];
case 1:
return [
4,
copyWithResolvedSymlinks(resolve2(root, linkString), pathDst)
];
case 2:
_state.sent();
_state.label = 3;
case 3:
return [
2
];
}
});
});
return function(err, linkString) {
return _ref.apply(this, arguments);
};
}());
} else throw reason;
_state.label = 3;
case 3:
return [
2
];
}
});
});
return function(reason) {
return _ref.apply(this, arguments);
};
}())
];
case 1:
_state.sent();
return [
2
];
}
});
};
_iterator = Object.entries(mapper2)[Symbol.iterator]();
_state.label = 3;
case 3:
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
3,
6
];
return [
5,
_ts_values(_loop())
];
case 4:
_state.sent();
_state.label = 5;
case 5:
_iteratorNormalCompletion = true;
return [
3,
3
];
case 6:
return [
3,
9
];
case 7:
err = _state.sent();
_didIteratorError = true;
_iteratorError = err;
return [
3,
9
];
case 8:
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally{
if (_didIteratorError) {
throw _iteratorError;
}
}
return [
7
];
case 9:
return [
2
];
}
});
});
return _buildMiddleWare.apply(this, arguments);
}
// src/server.ts
import Watchpack from "watchpack";
import { resolve as resolve3 } from "path";
var mimeTypes = {
".html": "text/html",
".js": "text/javascript",
".css": "text/css",
".png": "image/png",
".jpg": "image/jpeg",
".gif": "image/gif",
".svg": "image/svg+xml",
".json": "application/json",
".woff": "font/woff",
".woff2": "font/woff2",
".ttf": "font/ttf",
".eot": "font/eot",
".otf": "font/otf",
".wasm": "application/wasm",
".mjs": "text/javascript",
".txt": "text/plain",
".xml": "text/xml",
".mp3": "audio/mpeg",
".mp4": "video/mp4",
".webm": "video/webm",
".webp": "image/webp",
".wgsl": "text/wgsl",
".ico": "image/x-icon",
".tiff": "image/tiff",
".gz": "application/gzip",
".zip": "application/zip",
".rar": "application/x-rar-compressed",
".7z": "application/x-7z-compressed"
};
function getContentType(file) {
return mime.lookup(file);
}
function handleWriteToServe(res, req, contentType, path) {
var cacheOption = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {};
try {
for(var key in cacheOption){
res.setHeader(key, cacheOption[key]);
}
res.setHeader("Content-Type", contentType);
res.write(fs4.readFileSync(path));
res.end();
} catch (e) {
res.write("");
res.end();
}
}
var wp = new Watchpack({
aggregateTimeout: 1e3,
followSymlinks: true
});
function handleRestartChangFolder(watchPaths, server) {
wp.watch({
directories: watchPaths,
startTime: Date.now() - 1e4
});
wp.on("change", function() {
server.restart();
});
wp.on("remove", function() {
server.restart();
});
}
function ServerMiddleWare(payload) {
return _ServerMiddleWare.apply(this, arguments);
}
function _ServerMiddleWare() {
_ServerMiddleWare = _async_to_generator(function(payload) {
var _payload_viteConfig, server, assets, options, data, _ref, tmp, types, ssr, _ref_cacheOptions, cacheOptions, _ref1, fileObject, watchPaths, _tmp, mergeMimeTypes, base;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
server = payload.server, assets = payload.assets, options = payload.options, data = payload.data;
_ref = options || {}, tmp = _ref.mimeTypes, types = tmp === void 0 ? {} : tmp, ssr = _ref.ssr, _ref_cacheOptions = _ref.cacheOptions, cacheOptions = _ref_cacheOptions === void 0 ? {} : _ref_cacheOptions;
if (!assets || !assets.length) return [
2
];
_tmp = data;
if (_tmp) return [
3,
2
];
return [
4,
getFiles(assets, payload.options, payload.viteConfig)
];
case 1:
_tmp = _state.sent();
_state.label = 2;
case 2:
_ref1 = _tmp, fileObject = _ref1.mapper, watchPaths = _ref1.watchPaths;
mergeMimeTypes = _object_spread({}, mimeTypes, types);
wp.close();
(watchPaths === null || watchPaths === void 0 ? void 0 : watchPaths.length) && handleRestartChangFolder(watchPaths, server);
base = replaceStartCharacter((_payload_viteConfig = payload.viteConfig) === null || _payload_viteConfig === void 0 ? void 0 : _payload_viteConfig.base, "/");
return [
2,
function() {
server.middlewares.use(/*#__PURE__*/ function() {
var _ref = _async_to_generator(function(req, res, next) {
var _req_originalUrl, pathname, _fileObject_removeViteBase, file, path;
return _ts_generator(this, function(_state) {
pathname = new URL((_req_originalUrl = req.originalUrl) !== null && _req_originalUrl !== void 0 ? _req_originalUrl : "", "http://".concat(req.headers.host)).pathname.slice(1);
file = (_fileObject_removeViteBase = fileObject[removeViteBase(pathname, base)]) !== null && _fileObject_removeViteBase !== void 0 ? _fileObject_removeViteBase : fileObject[removeViteBase(decodeURIComponent(pathname), base)];
path = file === null || file === void 0 ? void 0 : file.path;
if (file === null || file === void 0 ? void 0 : file.isSymLink) {
readSymlink(path, function(err, linkString) {
if (!err) {
path = resolve3(file.root, linkString);
handleBeforeWriteToServe({
res: res,
req: req,
ssr: ssr,
cacheOptions: cacheOptions,
path: path,
file: file,
mergeMimeTypes: mergeMimeTypes
}, function() {
return next();
});
}
});
return [
2
];
}
handleBeforeWriteToServe({
res: res,
req: req,
ssr: ssr,
cacheOptions: cacheOptions,
path: path,
file: file,
mergeMimeTypes: mergeMimeTypes
}, function() {
return next();
});
return [
2
];
});
});
return function(req, res, next) {
return _ref.apply(this, arguments);
};
}());
}
];
}
});
});
return _ServerMiddleWare.apply(this, arguments);
}
function handleBeforeWriteToServe(data, handleNext) {
var path = data.path, file = data.file, mergeMimeTypes = data.mergeMimeTypes, cacheOptions = data.cacheOptions, ssr = data.ssr, req = data.req, res = data.res;
if (file) {
var extension = path.substring(path.lastIndexOf("."));
var contentType = mergeMimeTypes[extension] || getContentType(path) || mergeMimeTypes[".html"] || getContentType(".html");
if (ssr) res.addListener("pipe", function() {
handleWriteToServe(res, req, contentType, path, cacheOptions);
});
else {
handleWriteToServe(res, req, contentType, path, cacheOptions);
}
return;
}
handleNext();
}
// src/astroIntegration.ts
function AstroIntegration(assets) {
var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
return {
name: "vite-multiple-assets-astro-integration",
hooks: {
"astro:config:setup": function(param) {
var updateConfig = param.updateConfig;
updateConfig({
vite: {
plugins: [
DynamicPublicDirectory(assets, options)
]
}
});
},
"astro:server:setup": /*#__PURE__*/ function() {
var _ref = _async_to_generator(function(param) {
var server, middleware;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
server = param.server;
return [
4,
ServerMiddleWare({
server: server,
assets: assets,
options: options
})
];
case 1:
middleware = _state.sent();
if (!middleware) return [
2
];
middleware();
return [
2
];
}
});
});
return function(_) {
return _ref.apply(this, arguments);
};
}()
}
};
}
// src/index.ts
var mapper;
var viteBase;
function resolveInternalConfig(param) {
var opts = param.opts, writeBundleOptions = param.writeBundleOptions, viteConfig = param.viteConfig, force = param.force;
force !== null && force !== void 0 ? force : force = false;
opts !== null && opts !== void 0 ? opts : opts = {};
var _opts_cacheOptions;
(_opts_cacheOptions = opts.cacheOptions) !== null && _opts_cacheOptions !== void 0 ? _opts_cacheOptions : opts.cacheOptions = {};
var _opts_ignore;
(_opts_ignore = opts.ignore) !== null && _opts_ignore !== void 0 ? _opts_ignore : opts.ignore = [];
var _opts_onlyFiles;
(_opts_onlyFiles = opts.onlyFiles) !== null && _opts_onlyFiles !== void 0 ? _opts_onlyFiles : opts.onlyFiles = true;
var _opts_onlyDirectories;
(_opts_onlyDirectories = opts.onlyDirectories) !== null && _opts_onlyDirectories !== void 0 ? _opts_onlyDirectories : opts.onlyDirectories = false;
var _opts_markDirectories;
(_opts_markDirectories = opts.markDirectories) !== null && _opts_markDirectories !== void 0 ? _opts_markDirectories : opts.markDirectories = true;
var _opts_dot;
(_opts_dot = opts.dot) !== null && _opts_dot !== void 0 ? _opts_dot : opts.dot = true;
if (writeBundleOptions || force === "bundle" || force === true) {
var _ref, _viteConfig_build_outDir, _ref1, _opts___dst;
(_opts___dst = opts.__dst) !== null && _opts___dst !== void 0 ? _opts___dst : opts.__dst = (_ref1 = (_ref = typeof opts.dst === "string" ? opts.dst : void 0) !== null && _ref !== void 0 ? _ref : writeBundleOptions === null || writeBundleOptions === void 0 ? void 0 : writeBundleOptions.dir) !== null && _ref1 !== void 0 ? _ref1 : force ? (_viteConfig_build_outDir = viteConfig === null || viteConfig === void 0 ? void 0 : viteConfig.build.outDir) !== null && _viteConfig_build_outDir !== void 0 ? _viteConfig_build_outDir : "./dist" : void 0;
if (!opts.__dst) throw new Error("options.dir is undefined");
var _opts_dst;
(_opts_dst = opts.dst) !== null && _opts_dst !== void 0 ? _opts_dst : opts.dst = opts.__dst;
}
if (viteConfig || force === "vite" || force === true) {
var _viteConfig_root, _opts_cwd;
(_opts_cwd = opts.cwd) !== null && _opts_cwd !== void 0 ? _opts_cwd : opts.cwd = (_viteConfig_root = viteConfig =