UNPKG

vite-multiple-assets

Version:
1,169 lines (1,168 loc) 58.3 kB
"use strict"; 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 _type_of(obj) { "@swc/helpers - typeof"; return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; } 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."); } 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 __export = function(target, all) { for(var name in all)__defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = function(to, from, except, desc) { if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") { var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined; try { var _loop = function() { var key = _step.value; if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: function() { return from[key]; }, enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); }; for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_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 to; }; var __toESM = function(mod, isNodeMode, target) { return 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 = function(mod) { return __copyProps(__defProp({}, "__esModule", { value: true }), mod); }; // src/index.ts var src_exports = {}; __export(src_exports, { DynamicPublicDirectory: function() { return DynamicPublicDirectory; }, ServerMiddleWare: function() { return ServerMiddleWare; }, astroMultipleAssets: function() { return AstroIntegration; }, default: function() { return DynamicPublicDirectory; }, resolveInternalConfig: function() { return resolveInternalConfig; } }); module.exports = __toCommonJS(src_exports); // src/server.ts var import_fs4 = __toESM(require("fs")); var import_mime_types = __toESM(require("mime-types")); // src/build.ts var import_fs3 = __toESM(require("fs")); var import_path3 = require("path"); var import_micromatch2 = __toESM(require("micromatch")); var import_fast_glob = __toESM(require("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 var import_fs = __toESM(require("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, import_fs.default.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 var import_fs2 = __toESM(require("fs")); var import_path = require("path"); var import_posix = require("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, import_fs2.default.promises.lstat(source) ]; case 1: stat = _state.sent(); if (!stat.isSymbolicLink()) return [ 3, 4 ]; return [ 4, import_fs2.default.promises.readlink(source) ]; case 2: realPath = _state.sent(); absoluteRealPath = (0, import_path.resolve)((0, import_path.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, import_fs2.default.promises.mkdir(destination, { recursive: true }) ]; case 5: _state.sent(); return [ 4, import_fs2.default.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((0, import_path.join)(source, item)), replacePosixSep((0, import_path.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, import_fs2.default.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(import_path.sep, import_posix.sep); } var checkSymLink = function(path) { try { return import_fs2.default.lstatSync(path).isSymbolicLink(); } catch (error) { return false; } }; function readSymlink(path, cb) { import_fs2.default.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 var import_micromatch = __toESM(require("micromatch")); var import_path2 = require("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 (!import_micromatch.default.isMatch(url, "".concat(viteBase2, "**")) && mapper2.mapper[replaceStartCharacter(url, "/")]) { return match.replace(url, replacePosixSep((0, import_path2.join)(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 = import_micromatch2.default.scan(asset); list[asset] = { base: scan.base, glob: scan.glob, startGlob: scan.input.indexOf(scan.glob), isMatch: import_micromatch2.default.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((0, import_path3.resolve)(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 import_fast_glob.default.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, import_fast_glob.default.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 import_micromatch2.default.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((0, import_path3.join)(replaceOutput, flatten ? (0, import_path3.basename)(filepath) : _dstFile)) : _dstFile; var _countParentDirectory = countParentDirectory(filepath), countParent = _countParentDirectory.countParent, joinPath = _countParentDirectory.joinPath; mapper2[name] = { path: (0, import_path3.resolve)(opts.cwd, filepath), output: (0, import_path3.dirname)(name), isSymLink: opts.followSymbolicLinks ? checkSymLink(filepath) : false, root: countParent ? (0, import_path3.resolve)(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 = (0, import_path3.isAbsolute)(_dstFile) ? _dstFile : replacePosixSep((0, import_path3.join)(opts.__dst, output || _dstFile)); pathDst = output ? replacePosixSep((0, import_path3.join)(dstFile, (0, import_path3.basename)(path))) : dstFile; dirnamePathDst = (0, import_path3.dirname)(pathDst); return [ 4, import_fs3.default.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 ? import_fs3.default.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, import_fs3.default.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((0, import_path3.resolve)(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 var import_watchpack = __toESM(require("watchpack")); var import_path4 = require("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 import_mime_types.default.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(import_fs4.default.readFileSync(path)); res.end(); } catch (e) { res.write(""); res.end(); } } var wp = new import_watchpack.default({ 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 = (0, import_path4.resolve)(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: {