@@ -7,18 +7,16 @@ import jsesc from 'jsesc'
77import lineColumn from 'line-column'
88import * as prettierParserAngular from 'prettier/plugins/angular'
99import * as prettierParserBabel from 'prettier/plugins/babel'
10+ import * as prettierParserCss from 'prettier/plugins/postcss'
1011// @ts -ignore
1112import * as recast from 'recast'
1213import { createPlugin } from './create-plugin.js'
1314import type { Matcher } from './options.js'
14- import { loadPlugins } from './plugins.js'
1515import { sortClasses , sortClassList } from './sorting.js'
1616import { defineTransform , type TransformOptions } from './transform.js'
1717import type { StringChange , TransformerEnv } from './types'
1818import { spliceChangesIntoString , visit , type Path } from './utils.js'
1919
20- let base = await loadPlugins ( )
21-
2220const ESCAPE_SEQUENCE_PATTERN = / \\ ( [ ' " \\ n r t b f v 0 - 7 x u U ] ) / g
2321
2422function tryParseAngularAttribute ( value : string , env : TransformerEnv ) {
@@ -672,7 +670,7 @@ function transformCss(ast: any, env: TransformerEnv) {
672670 // Otherwise we let prettier re-parse the params into its custom value AST
673671 // based on postcss-value parser.
674672 try {
675- let parser = base . parsers . css
673+ let parser = prettierParserCss . parsers . css
676674
677675 let root = parser . parse ( `@import ${ params } ;` , {
678676 // We can't pass env.options directly because css.parse overwrites
@@ -1015,6 +1013,9 @@ type HtmlNode = { type: 'attribute'; name: string; value: string } | { kind: 'at
10151013let html = defineTransform < HtmlNode > ( {
10161014 staticAttrs : [ 'class' ] ,
10171015
1016+ load : [ 'prettier/plugins/html' ] ,
1017+ compatible : [ 'prettier-plugin-organize-attributes' ] ,
1018+
10181019 parsers : {
10191020 html : { } ,
10201021 lwc : { } ,
@@ -1034,6 +1035,7 @@ type GlimmerNode =
10341035
10351036let glimmer = defineTransform < GlimmerNode > ( {
10361037 staticAttrs : [ 'class' ] ,
1038+ load : [ 'prettier/plugins/glimmer' ] ,
10371039
10381040 parsers : {
10391041 glimmer : { } ,
@@ -1050,6 +1052,9 @@ type CssNode = {
10501052}
10511053
10521054let css = defineTransform < CssNode > ( {
1055+ load : [ 'prettier/plugins/postcss' ] ,
1056+ compatible : [ 'prettier-plugin-css-order' ] ,
1057+
10531058 parsers : {
10541059 css : { } ,
10551060 scss : { } ,
@@ -1061,28 +1066,37 @@ let css = defineTransform<CssNode>({
10611066
10621067let js = defineTransform < import ( '@babel/types' ) . Node > ( {
10631068 staticAttrs : [ 'class' , 'className' ] ,
1069+ compatible : [
1070+ // The following plugins must come *before* the jsdoc plugin for it to
1071+ // function correctly. Additionally `multiline-arrays` usually needs to be
1072+ // placed before import sorting plugins.
1073+ //
1074+ // https://github.com/electrovir/prettier-plugin-multiline-arrays#compatibility
1075+ 'prettier-plugin-multiline-arrays' ,
1076+ '@ianvs/prettier-plugin-sort-imports' ,
1077+ '@trivago/prettier-plugin-sort-imports' ,
1078+ 'prettier-plugin-organize-imports' ,
1079+ 'prettier-plugin-sort-imports' ,
1080+ 'prettier-plugin-jsdoc' ,
1081+ ] ,
10641082
10651083 parsers : {
1066- babel : { } ,
1067- 'babel-flow' : { } ,
1068- 'babel-ts' : { } ,
1069- __js_expression : { } ,
1070- typescript : { } ,
1071- meriyah : { } ,
1072- acorn : { } ,
1073- flow : { } ,
1074- oxc : { } ,
1075- 'oxc-ts' : { } ,
1076- hermes : { } ,
1077-
1078- ...( base . parsers . astroExpressionParser
1079- ? {
1080- astroExpressionParser : {
1081- staticAttrs : [ 'class' ] ,
1082- dynamicAttrs : [ 'class:list' ] ,
1083- } ,
1084- }
1085- : { } ) ,
1084+ babel : { load : [ 'prettier/plugins/babel' ] } ,
1085+ 'babel-flow' : { load : [ 'prettier/plugins/babel' ] } ,
1086+ 'babel-ts' : { load : [ 'prettier/plugins/babel' ] } ,
1087+ __js_expression : { load : [ 'prettier/plugins/babel' ] } ,
1088+ typescript : { load : [ 'prettier/plugins/typescript' ] } ,
1089+ meriyah : { load : [ 'prettier/plugins/meriyah' ] } ,
1090+ acorn : { load : [ 'prettier/plugins/acorn' ] } ,
1091+ flow : { load : [ 'prettier/plugins/flow' ] } ,
1092+ oxc : { load : [ '@prettier/plugin-oxc' ] } ,
1093+ 'oxc-ts' : { load : [ '@prettier/plugin-oxc' ] } ,
1094+ hermes : { load : [ '@prettier/plugin-hermes' ] } ,
1095+ astroExpressionParser : {
1096+ load : [ 'prettier-plugin-astro' ] ,
1097+ staticAttrs : [ 'class' ] ,
1098+ dynamicAttrs : [ 'class:list' ] ,
1099+ } ,
10861100 } ,
10871101
10881102 transform : transformJavaScript ,
@@ -1094,6 +1108,7 @@ type SvelteNode = import('svelte/compiler').AST.SvelteNode & {
10941108
10951109let svelte = defineTransform < SvelteNode > ( {
10961110 staticAttrs : [ 'class' ] ,
1111+ load : [ 'prettier-plugin-svelte' ] ,
10971112
10981113 parsers : {
10991114 svelte : { } ,
@@ -1140,6 +1155,7 @@ type AstroNode =
11401155let astro = defineTransform < AstroNode > ( {
11411156 staticAttrs : [ 'class' , 'className' ] ,
11421157 dynamicAttrs : [ 'class:list' , 'className' ] ,
1158+ load : [ 'prettier-plugin-astro' ] ,
11431159
11441160 parsers : {
11451161 astro : { } ,
@@ -1152,6 +1168,7 @@ type MarkoNode = import('@marko/compiler').types.Node
11521168
11531169let marko = defineTransform < MarkoNode > ( {
11541170 staticAttrs : [ 'class' ] ,
1171+ load : [ 'prettier-plugin-marko' ] ,
11551172
11561173 parsers : {
11571174 marko : { } ,
@@ -1183,6 +1200,7 @@ type TwigNode =
11831200
11841201let twig = defineTransform < TwigNode > ( {
11851202 staticAttrs : [ 'class' ] ,
1203+ load : [ '@zackad/prettier-plugin-twig' ] ,
11861204
11871205 parsers : {
11881206 twig : { } ,
@@ -1198,6 +1216,7 @@ interface PugNode {
11981216
11991217let pug = defineTransform < PugNode > ( {
12001218 staticAttrs : [ 'class' ] ,
1219+ load : [ '@prettier/plugin-pug' ] ,
12011220
12021221 parsers : {
12031222 pug : { } ,
@@ -1216,23 +1235,25 @@ type LiquidNode =
12161235
12171236let liquid = defineTransform < LiquidNode > ( {
12181237 staticAttrs : [ 'class' ] ,
1238+ load : [ '@shopify/prettier-plugin-liquid' ] ,
12191239
12201240 parsers : { 'liquid-html' : { } } ,
12211241
12221242 transform : transformLiquid ,
12231243} )
12241244
1225- export const { parsers, printers } = createPlugin ( base , [
1245+ export const { parsers, printers } = createPlugin ( [
1246+ //
12261247 html ,
12271248 glimmer ,
12281249 css ,
12291250 js ,
1230- ... ( base . parsers . svelte ? [ svelte ] : [ ] ) ,
1231- ... ( base . parsers . astro ? [ astro ] : [ ] ) ,
1232- ... ( base . parsers . marko ? [ marko ] : [ ] ) ,
1233- ... ( base . parsers . twig ? [ twig ] : [ ] ) ,
1234- ... ( base . parsers . pug ? [ pug ] : [ ] ) ,
1235- ... ( base . parsers [ ' liquid-html' ] ? [ liquid ] : [ ] ) ,
1251+ svelte ,
1252+ astro ,
1253+ marko ,
1254+ twig ,
1255+ pug ,
1256+ liquid ,
12361257] )
12371258
12381259export interface PluginOptions {
0 commit comments