diff --git a/package.json b/package.json index e4a1070..5579a56 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,8 @@ "rolldown": "^1.0.0-beta.56" }, "dependencies": { - "dprint-node": "^1.0.8", + "@dprint/formatter": "^0.4.1", + "@dprint/typescript": "^0.95.13", "magic-string": "^0.30.21", "unplugin-utils": "^0.3.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f9577d..6a8def6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,12 @@ importers: .: dependencies: - dprint-node: - specifier: ^1.0.8 - version: 1.0.8 + '@dprint/formatter': + specifier: ^0.4.1 + version: 0.4.1 + '@dprint/typescript': + specifier: ^0.95.13 + version: 0.95.13 magic-string: specifier: ^0.30.21 version: 0.30.21 @@ -81,6 +84,12 @@ packages: resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} engines: {node: '>=6.9.0'} + '@dprint/formatter@0.4.1': + resolution: {integrity: sha512-IB/GXdlMOvi0UhQQ9mcY15Fxcrc2JPadmo6tqefCNV0bptFq7YBpggzpqYXldBXDa04CbKJ+rDwO2eNRPE2+/g==} + + '@dprint/typescript@0.95.13': + resolution: {integrity: sha512-lzhaiENYcsLOo+qJHzwWbZ/Ne+67eDGLwhU52Z0AnW6gHeCN1EZ8DDe5gI/f/Fvk2Jd2wlnmoyrsrYnkg/SDgw==} + '@emnapi/core@1.7.1': resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} @@ -1112,11 +1121,6 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -1128,9 +1132,6 @@ packages: resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} engines: {node: '>=12'} - dprint-node@1.0.8: - resolution: {integrity: sha512-iVKnUtYfGrYcW1ZAlfR/F59cUVL8QIhWoBJoSjkkdua/dkWIgjZfiLMeTjiB06X0ZLkQ0M2C1VbUj/CxkIf1zg==} - dts-resolver@2.1.3: resolution: {integrity: sha512-bihc7jPC90VrosXNzK0LTE2cuLP6jr0Ro8jk+kMugHReJVLIpHz/xadeq3MhuwyO4TD4OA3L1Q8pBBFRc08Tsw==} engines: {node: '>=20.19.0'} @@ -2262,6 +2263,10 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@dprint/formatter@0.4.1': {} + + '@dprint/typescript@0.95.13': {} + '@emnapi/core@1.7.1': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -3103,8 +3108,6 @@ snapshots: destr@2.0.5: {} - detect-libc@1.0.3: {} - devlop@1.1.0: dependencies: dequal: 2.0.3 @@ -3113,10 +3116,6 @@ snapshots: dotenv@17.2.3: {} - dprint-node@1.0.8: - dependencies: - detect-libc: 1.0.3 - dts-resolver@2.1.3: {} electron-to-chromium@1.5.267: {} diff --git a/src/api.ts b/src/api.ts index 350d740..631e8ec 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,4 +1,6 @@ -import dprint from 'dprint-node' +import { readFile } from 'node:fs/promises' +import { createFromBuffer, type GlobalConfiguration } from '@dprint/formatter' +import { getPath } from '@dprint/typescript' import { walk } from 'estree-walker' import MagicString from 'magic-string' import { parseSync } from 'rolldown/experimental' @@ -110,20 +112,28 @@ export function snapshot( } } -function format(code: string) { - return dprint - .format('dummy.d.ts', code, { - lineWidth: 100000000, - indentWidth: 1, - semiColons: 'asi', - preferSingleLine: true, - 'arrowFunction.useParentheses': 'force', - quoteStyle: 'alwaysSingle', +const globalConfig: GlobalConfiguration = { + indentWidth: 1, + lineWidth: 100000000, +} +const tsFormatter = createFromBuffer(await readFile(getPath())) +tsFormatter.setConfig(globalConfig, { + semiColons: 'asi', + preferSingleLine: true, + 'arrowFunction.useParentheses': 'force', + quoteStyle: 'alwaysSingle', - singleBodyPosition: 'sameLine', - bracePosition: 'sameLine', - operatorPosition: 'sameLine', - preferHanging: true, + singleBodyPosition: 'sameLine', + bracePosition: 'sameLine', + operatorPosition: 'sameLine', + preferHanging: true, +}) + +function format(code: string) { + return tsFormatter + .formatText({ + filePath: 'dummy.d.ts', + fileText: code, }) .trim() .replaceAll('\n\n', '\n')