vite-plugin-asciidoc
Version:
[](https://www.npmjs.com/package/vite-plugin-asciidoc)
99 lines (98 loc) • 4.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getImportCode = exports.processHtml = exports.srcsetType = exports.srcType = exports.getModuleCode = exports.getExportCode = void 0;
const sources_plugin_1 = __importDefault(require("html-loader/dist/plugins/sources-plugin"));
const path_1 = __importDefault(require("path"));
var utils_1 = require("html-loader/dist/utils");
Object.defineProperty(exports, "getExportCode", { enumerable: true, get: function () { return utils_1.getExportCode; } });
Object.defineProperty(exports, "getModuleCode", { enumerable: true, get: function () { return utils_1.getModuleCode; } });
Object.defineProperty(exports, "srcType", { enumerable: true, get: function () { return utils_1.srcType; } });
Object.defineProperty(exports, "srcsetType", { enumerable: true, get: function () { return utils_1.srcsetType; } });
function processHtml(html, sources, context, imports, errors, replacements) {
const process = (0, sources_plugin_1.default)({
sources: {
list: sources,
},
context,
imports,
errors,
replacements,
});
return process(html);
}
exports.processHtml = processHtml;
const GET_SOURCE_FROM_IMPORT_NAME = '___HTML_LOADER_GET_SOURCE_FROM_IMPORT___';
function getImportCode(html, context, imports) {
if (imports.length === 0) {
return '';
}
const fileURLToHelper = contextify(context, require.resolve('./runtime/getUrl.js'));
let code = `import ${GET_SOURCE_FROM_IMPORT_NAME} from "${fileURLToHelper}";\n`;
for (const item of imports) {
const { format, importName, request } = item;
switch (format) {
case 'import':
code += `import ${importName} from ${JSON.stringify(request)};\n`;
break;
case 'url':
default:
code += `var ${importName} = new URL(${JSON.stringify(request)}, import.meta.url);\n`;
}
}
return `// Imports\n${code}`;
}
exports.getImportCode = getImportCode;
function contextify(context, request) {
return request
.split('!')
.map(r => absoluteToRequest(context, r))
.join('!');
}
const WINDOWS_ABS_PATH_REGEXP = /^[a-zA-Z]:[\\/]|^\\\\/;
const WINDOWS_PATH_SEPARATOR_REGEXP = /\\/g;
const RELATIVE_PATH_REGEXP = /^\.\.?[/\\]/;
function absoluteToRequest(context, maybeAbsolutePath) {
if (maybeAbsolutePath[0] === '/') {
if (maybeAbsolutePath.length > 1
&& maybeAbsolutePath[maybeAbsolutePath.length - 1] === '/') {
// this 'path' is actually a regexp generated by dynamic requires.
// Don't treat it as an absolute path.
return maybeAbsolutePath;
}
const querySplitPos = maybeAbsolutePath.indexOf('?');
let resource = querySplitPos === -1
? maybeAbsolutePath
: maybeAbsolutePath.slice(0, querySplitPos);
resource = path_1.default.posix.relative(context, resource);
if (!resource.startsWith('../')) {
resource = `./${resource}`;
}
return querySplitPos === -1
? resource
: resource + maybeAbsolutePath.slice(querySplitPos);
}
if (WINDOWS_ABS_PATH_REGEXP.test(maybeAbsolutePath)) {
const querySplitPos = maybeAbsolutePath.indexOf('?');
let resource = querySplitPos === -1
? maybeAbsolutePath
: maybeAbsolutePath.slice(0, querySplitPos);
resource = path_1.default.win32.relative(context, resource);
if (!WINDOWS_ABS_PATH_REGEXP.test(resource)) {
resource = resource.replace(WINDOWS_PATH_SEPARATOR_REGEXP, '/');
if (!resource.startsWith('../')) {
resource = `./${resource}`;
}
}
return querySplitPos === -1
? resource
: resource + maybeAbsolutePath.slice(querySplitPos);
}
if (!RELATIVE_PATH_REGEXP.test(maybeAbsolutePath)) {
return `./${maybeAbsolutePath.replace(WINDOWS_PATH_SEPARATOR_REGEXP, '/')}`;
}
// not an absolute path
return maybeAbsolutePath;
}