@unibeautify/beautifier-prettier
Version:
Prettier beautifier for Unibeautify
65 lines • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const unibeautify_1 = require("unibeautify");
const readPkgUp = require("read-pkg-up");
const options_1 = require("./options");
const { pkg } = readPkgUp.sync({ cwd: __dirname });
exports.beautifier = {
name: "Prettier",
package: pkg,
dependencies: [
{
type: unibeautify_1.DependencyType.Node,
name: "Prettier",
package: "prettier",
},
],
options: {
CSS: options_1.default.Style,
GraphQL: options_1.default.GraphQL,
JavaScript: options_1.default.Script,
JSON: options_1.default.JSON,
JSON5: options_1.default.JSON,
JSX: options_1.default.Script,
Less: options_1.default.Style,
Markdown: options_1.default.Markdown,
SCSS: options_1.default.Style,
TypeScript: options_1.default.Script,
Vue: options_1.default.Vue,
},
resolveConfig: ({ filePath, dependencies }) => {
if (!filePath) {
return Promise.resolve({});
}
const resolveConfig = dependencies.get("Prettier").package.resolveConfig;
return resolveConfig(filePath, { useCache: false }).then((config) => ({
config,
}));
},
beautify({ text, options, language, filePath, dependencies, beautifierConfig, }) {
return new Promise((resolve, reject) => {
const prettier = dependencies.get("Prettier")
.package;
const parser = parserForLanguage(prettier, language);
if (!parser) {
return reject(new Error(`Prettier Parser not found for langauge ${language.name}.`));
}
const finalOptions = beautifierConfig && beautifierConfig.config
? beautifierConfig.config
: options;
const result = prettier.format(text, Object.assign({}, finalOptions, { parser, filepath: filePath }));
return resolve(result);
});
},
};
function parserForLanguage(prettier, language) {
const prettierLanguage = prettier
.getSupportInfo()
.languages.find(lang => lang.name === language.name);
if (prettierLanguage) {
return prettierLanguage.parsers[0];
}
return undefined;
}
exports.default = exports.beautifier;
//# sourceMappingURL=index.js.map