123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- "use strict";
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
- }) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
- }));
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
- }) : function(o, v) {
- o["default"] = v;
- });
- var __importStar = (this && this.__importStar) || function (mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
- };
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.testWebpack5 = exports.genMatchResource = exports.stringifyRequest = exports.getOptions = exports.resolveTemplateTSOptions = exports.needHMR = void 0;
- const querystring_1 = __importDefault(require("querystring"));
- const path = __importStar(require("path"));
- function needHMR(vueLoaderOptions, compilerOptions) {
- var _a;
- const isServer = (_a = vueLoaderOptions.isServerBuild) !== null && _a !== void 0 ? _a : compilerOptions.target === 'node';
- const isProduction = compilerOptions.mode === 'production' ||
- process.env.NODE_ENV === 'production';
- return !isServer && !isProduction && vueLoaderOptions.hotReload !== false;
- }
- exports.needHMR = needHMR;
- function resolveTemplateTSOptions(descriptor, options) {
- var _a, _b, _c;
- if (options.enableTsInTemplate === false)
- return null;
- const lang = ((_a = descriptor.script) === null || _a === void 0 ? void 0 : _a.lang) || ((_b = descriptor.scriptSetup) === null || _b === void 0 ? void 0 : _b.lang);
- const isTS = !!(lang && /tsx?$/.test(lang));
- let expressionPlugins = ((_c = options === null || options === void 0 ? void 0 : options.compilerOptions) === null || _c === void 0 ? void 0 : _c.expressionPlugins) || [];
- if (isTS && !expressionPlugins.includes('typescript')) {
- expressionPlugins = [...expressionPlugins, 'typescript'];
- }
- return {
- isTS,
- expressionPlugins,
- };
- }
- exports.resolveTemplateTSOptions = resolveTemplateTSOptions;
- // loader utils removed getOptions in 3.x, but it's not available on webpack 4
- // loader context
- function getOptions(loaderContext) {
- const query = loaderContext.query;
- if (typeof query === 'string' && query !== '') {
- return parseQuery(query);
- }
- if (!query || typeof query !== 'object') {
- // Not object-like queries are not supported.
- return {};
- }
- return query;
- }
- exports.getOptions = getOptions;
- const specialValues = {
- null: null,
- true: true,
- false: false,
- };
- function parseQuery(query) {
- if (query.substr(0, 1) !== '?') {
- throw new Error("A valid query string passed to parseQuery should begin with '?'");
- }
- query = query.substr(1);
- if (!query) {
- return {};
- }
- if (query.substr(0, 1) === '{' && query.substr(-1) === '}') {
- return JSON.parse(query);
- }
- const queryArgs = query.split(/[,&]/g);
- const result = Object.create(null);
- queryArgs.forEach((arg) => {
- const idx = arg.indexOf('=');
- if (idx >= 0) {
- let name = arg.substr(0, idx);
- let value = decodeURIComponent(arg.substr(idx + 1));
- // eslint-disable-next-line no-prototype-builtins
- if (specialValues.hasOwnProperty(value)) {
- value = specialValues[value];
- }
- if (name.substr(-2) === '[]') {
- name = decodeURIComponent(name.substr(0, name.length - 2));
- if (!Array.isArray(result[name])) {
- result[name] = [];
- }
- result[name].push(value);
- }
- else {
- name = decodeURIComponent(name);
- result[name] = value;
- }
- }
- else {
- if (arg.substr(0, 1) === '-') {
- result[decodeURIComponent(arg.substr(1))] = false;
- }
- else if (arg.substr(0, 1) === '+') {
- result[decodeURIComponent(arg.substr(1))] = true;
- }
- else {
- result[decodeURIComponent(arg)] = true;
- }
- }
- });
- return result;
- }
- const matchRelativePath = /^\.\.?[/\\]/;
- function isAbsolutePath(str) {
- return path.posix.isAbsolute(str) || path.win32.isAbsolute(str);
- }
- function isRelativePath(str) {
- return matchRelativePath.test(str);
- }
- function stringifyRequest(loaderContext, request) {
- const splitted = request.split('!');
- const context = loaderContext.context ||
- // @ts-ignore
- (loaderContext.options && loaderContext.options.context);
- return JSON.stringify(splitted
- .map((part) => {
- // First, separate singlePath from query, because the query might contain paths again
- const splittedPart = part.match(/^(.*?)(\?.*)/);
- const query = splittedPart ? splittedPart[2] : '';
- let singlePath = splittedPart ? splittedPart[1] : part;
- if (isAbsolutePath(singlePath) && context) {
- singlePath = path.relative(context, singlePath);
- if (isAbsolutePath(singlePath)) {
- // If singlePath still matches an absolute path, singlePath was on a different drive than context.
- // In this case, we leave the path platform-specific without replacing any separators.
- // @see https://github.com/webpack/loader-utils/pull/14
- return singlePath + query;
- }
- if (isRelativePath(singlePath) === false) {
- // Ensure that the relative path starts at least with ./ otherwise it would be a request into the modules directory (like node_modules).
- singlePath = './' + singlePath;
- }
- }
- return singlePath.replace(/\\/g, '/') + query;
- })
- .join('!'));
- }
- exports.stringifyRequest = stringifyRequest;
- function genMatchResource(context, resourcePath, resourceQuery, lang) {
- resourceQuery = resourceQuery || '';
- const loaders = [];
- const parsedQuery = querystring_1.default.parse(resourceQuery.slice(1));
- // process non-external resources
- if ('vue' in parsedQuery && !('external' in parsedQuery)) {
- const currentRequest = context.loaders
- .slice(context.loaderIndex)
- .map((obj) => obj.request);
- loaders.push(...currentRequest);
- }
- const loaderString = loaders.join('!');
- return `${resourcePath}${lang ? `.${lang}` : ''}${resourceQuery}!=!${loaderString ? `${loaderString}!` : ''}${resourcePath}${resourceQuery}`;
- }
- exports.genMatchResource = genMatchResource;
- const testWebpack5 = (compiler) => {
- var _a;
- if (!compiler) {
- return false;
- }
- const webpackVersion = (_a = compiler === null || compiler === void 0 ? void 0 : compiler.webpack) === null || _a === void 0 ? void 0 : _a.version;
- return Boolean(webpackVersion && Number(webpackVersion.split('.')[0]) > 4);
- };
- exports.testWebpack5 = testWebpack5;
|