frontend/.pnpm-store/v3/files/cf/cd24ed22f04d4641e018647c7c30bf7ea57e70189b5b803ccc1d1f6214128f577fa14a92d53ba1cf71da639a1cd58ad59e324546cc9df75a9cccbea97ad86e

98 lines
3.0 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLanguage = exports.isAliasOf = exports.getLanguageFromAlias = exports.addLanguageAlias = exports.getLanguageDefaults = exports.SOURCE_MAP_PROP_MAP = exports.ALIAS_MAP = void 0;
const path_1 = require("path");
const utils_1 = require("./utils");
const LANGUAGE_DEFAULTS = {
sass: {
indentedSyntax: true,
stripIndent: true,
},
pug: {
stripIndent: true,
},
coffeescript: {
stripIndent: true,
},
stylus: {
stripIndent: true,
},
// We need to defer this require to make sugarss an optional dependency.
sugarss: () => ({
stripIndent: true,
// eslint-disable-next-line @typescript-eslint/no-require-imports, node/global-require
parser: require('sugarss'),
}),
};
exports.ALIAS_MAP = new Map([
['pcss', 'css'],
['postcss', 'css'],
['sugarss', 'css'],
['sass', 'scss'],
['styl', 'stylus'],
['js', 'javascript'],
['coffee', 'coffeescript'],
['ts', 'typescript'],
]);
exports.SOURCE_MAP_PROP_MAP = {
babel: [['sourceMaps'], true],
typescript: [['compilerOptions', 'sourceMap'], true],
scss: [['sourceMap'], true],
less: [['sourceMap'], {}],
stylus: [['sourcemap'], true],
postcss: [['map'], true],
coffeescript: [['sourceMap'], true],
globalStyle: [['sourceMap'], true],
};
function getLanguageDefaults(lang) {
const defaults = LANGUAGE_DEFAULTS[lang];
if (!defaults)
return null;
if (typeof defaults === 'function') {
return defaults();
}
return defaults;
}
exports.getLanguageDefaults = getLanguageDefaults;
function addLanguageAlias(entries) {
return entries.forEach((entry) => exports.ALIAS_MAP.set(...entry));
}
exports.addLanguageAlias = addLanguageAlias;
function getLanguageFromAlias(alias) {
return exports.ALIAS_MAP.get(alias) || alias;
}
exports.getLanguageFromAlias = getLanguageFromAlias;
function isAliasOf(alias, lang) {
return lang !== alias && getLanguageFromAlias(alias) === lang;
}
exports.isAliasOf = isAliasOf;
const getLanguage = (attributes) => {
let alias = null;
if (attributes.lang) {
// istanbul ignore if
if (typeof attributes.lang !== 'string') {
throw new Error('lang attribute must be string');
}
alias = attributes.lang;
}
else if (attributes.type) {
// istanbul ignore if
if (typeof attributes.type !== 'string') {
throw new Error('type attribute must be string');
}
alias = attributes.type.replace(/^(text|application)\/(.*)$/, '$2');
}
else if (typeof attributes.src === 'string' &&
utils_1.isValidLocalPath(attributes.src)) {
const parts = path_1.basename(attributes.src).split('.');
if (parts.length > 1) {
alias = parts.pop();
}
}
return {
lang: getLanguageFromAlias(alias),
alias,
};
};
exports.getLanguage = getLanguage;