diff --git a/index.js b/index.js index 2399edb..45e65a6 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,7 @@ +/** + * @todo change these to their new locations (`prettier/plugins/`) with + * the next major release. + */ const { parsers: babelParsers } = require('prettier/parser-babel'); const { parsers: htmlParsers } = require('prettier/parser-html'); const { parsers: typescriptParsers } = require('prettier/parser-typescript'); @@ -53,7 +57,6 @@ const plugin = { default: false, category: 'OrganizeImports', description: 'Skip destructive code actions like removing unused imports.', - since: '2.0.0', }, }, parsers: { diff --git a/package.json b/package.json index e31dcae..779b796 100644 --- a/package.json +++ b/package.json @@ -39,11 +39,10 @@ }, "devDependencies": { "@types/node": "18.11.9", - "@types/prettier": "2.7.3", "@volar/vue-language-plugin-pug": "1.0.9", "@volar/vue-typescript": "1.0.9", "ava": "3.15.0", - "prettier": "2.7.1", + "prettier": "3.0.0", "typescript": "5.1.6" }, "prettier": { diff --git a/test/_utils.js b/test/_utils.js index f37ca2e..2ee57df 100644 --- a/test/_utils.js +++ b/test/_utils.js @@ -4,7 +4,8 @@ const prettier = require('prettier'); * @param {string} code * @param {prettier.Options} [options] */ -module.exports.prettify = (code, options) => prettier.format(code, { plugins: ['.'], filepath: 'file.ts', ...options }); +module.exports.prettify = async (code, options) => + prettier.format(code, { plugins: ['./index.js'], filepath: 'file.ts', ...options }); /** * @param {prettier.Options['parser']} parser @@ -18,8 +19,8 @@ module.exports.getMacro = (parser) => { * @param {prettier.Options} [options.options] * @param {(res: string) => string} [options.transformer] */ - function macro(t, input, expected, { options = {}, transformer = (res) => res.split('\n')[0] } = {}) { - const formattedCode = module.exports.prettify(input, { parser, ...options }); + async function macro(t, input, expected, { options = {}, transformer = (res) => res.split('\n')[0] } = {}) { + const formattedCode = await module.exports.prettify(input, { parser, ...options }); t.is(transformer(formattedCode), expected); } diff --git a/test/main.js b/test/main.js index b207729..e99a1bb 100644 --- a/test/main.js +++ b/test/main.js @@ -70,11 +70,11 @@ test( { transformer: (res) => res.split('\n')[1] }, ); -test('does not remove unused imports with `organizeImportsSkipDestructiveCodeActions` enabled', (t) => { +test('does not remove unused imports with `organizeImportsSkipDestructiveCodeActions` enabled', async (t) => { const code = `import { foo } from "./bar"; `; - const formattedCode = prettify(code, { organizeImportsSkipDestructiveCodeActions: true }); + const formattedCode = await prettify(code, { organizeImportsSkipDestructiveCodeActions: true }); t.is(formattedCode, code); }); diff --git a/test/vue.js b/test/vue.js index b0dc23a..9dea519 100644 --- a/test/vue.js +++ b/test/vue.js @@ -2,7 +2,7 @@ const test = require('ava').default; const ts = require('typescript'); const { prettify } = require('./_utils'); -test('works with TypeScript code inside Vue files', (t) => { +test('works with TypeScript code inside Vue files', async (t) => { const code = ` `; - const formattedCode = prettify(code, { filepath: 'file.vue' }); + const formattedCode = await prettify(code, { filepath: 'file.vue' }); t.is(formattedCode.split('\n')[1], `import { compile, defineComponent } from "vue";`); }); -test('works with Vue setup scripts', (t) => { +test('works with Vue setup scripts', async (t) => { const code = ` `; - const formattedCode = prettify(code, { filepath: 'file.vue' }); + const formattedCode = await prettify(code, { filepath: 'file.vue' }); t.is(formattedCode.split('\n')[1], `import { defineComponent } from "vue";`); }); -test('preserves new lines and comments in Vue files', (t) => { +test('preserves new lines and comments in Vue files', async (t) => { const code = ` `; - const formattedCode = prettify(code, { filepath: 'file.vue' }); + const formattedCode = await prettify(code, { filepath: 'file.vue' }); t.is(formattedCode, code); }); -test('works with pug templates in Vue files', (t) => { +test('works with pug templates in Vue files', async (t) => { const code = ` @@ -86,12 +86,12 @@ Foo `; - const formattedCode = prettify(code, { filepath: 'file.vue' }); + const formattedCode = await prettify(code, { filepath: 'file.vue' }); t.is(formattedCode, expected); }); -test.serial('works with Volar language plugins when not running from the project root', (t) => { +test.serial('works with Volar language plugins when not running from the project root', async (t) => { const originalGetCurrentDir = ts.sys.getCurrentDirectory; ts.sys.getCurrentDirectory = () => '/'; @@ -114,7 +114,7 @@ Foo `; - const formattedCode = prettify(code, { filepath: 'file.vue' }); + const formattedCode = await prettify(code, { filepath: 'file.vue' }); t.is(formattedCode, expected);