Skip to content

Commit 5c375b1

Browse files
authored
Make postprocessing sync again (phryneas#17)
* Add prettier/sync * Make postprocessing sync again
1 parent d3f2cef commit 5c375b1

File tree

4 files changed

+59
-54
lines changed

4 files changed

+59
-54
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
},
6565
"dependencies": {
6666
"@microsoft/tsdoc": "^0.15.0",
67+
"@prettier/sync": "^0.5.2",
6768
"@types/estree": "^1.0.5",
6869
"@types/unist": "^3.0.3",
6970
"mdast-util-mdx-jsx": "^3.1.3",

src/transpileCodeblocks/plugin.ts

+5-9
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ type PostProcessor = (
3131
files: VirtualFiles,
3232
parentFile?: string,
3333
defaultProcessor?: PostProcessor
34-
) => Promise<VirtualFiles>;
34+
) => VirtualFiles;
3535

3636
export interface TranspileCodeblocksSettings {
3737
compilerSettings: CompilerSettings;
@@ -212,15 +212,15 @@ ${lines.slice(Math.max(0, diagnostic.line - 5), diagnostic.line + 6).join('\n')}
212212
};
213213
};
214214

215-
export async function defaultAssembleReplacementNodes(
215+
export function defaultAssembleReplacementNodes(
216216
node: CodeNode,
217217
file: VFile,
218218
virtualFolder: string,
219219
virtualFiles: Record<string, VirtualFile>,
220220
transpilationResult: Record<string, TranspiledFile>,
221221
postProcessTs: PostProcessor,
222222
postProcessTranspiledJs: PostProcessor
223-
): Promise<Node[]> {
223+
): Node[] {
224224
return [
225225
{
226226
type: 'mdxJsxFlowElement',
@@ -334,11 +334,7 @@ export async function defaultAssembleReplacementNodes(
334334
{
335335
...node,
336336
value: rearrangeFiles(
337-
await postProcessTs(
338-
virtualFiles,
339-
file.path,
340-
defaultPostProcessTs
341-
),
337+
postProcessTs(virtualFiles, file.path, defaultPostProcessTs),
342338
virtualFolder
343339
),
344340
} satisfies CodeNode as any,
@@ -359,7 +355,7 @@ export async function defaultAssembleReplacementNodes(
359355
),
360356
}),
361357
value: rearrangeFiles(
362-
await postProcessTranspiledJs(
358+
postProcessTranspiledJs(
363359
transpilationResult,
364360
file.path,
365361
defaultPostProcessTranspiledJs

src/transpileCodeblocks/postProcessing.ts

+34-45
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,50 @@
11
import type { VirtualFiles } from './plugin.js';
2-
import prettier from 'prettier';
2+
import type { Options as PrettierOptions } from 'prettier';
3+
import prettierSync from '@prettier/sync';
34

4-
export async function defaultPostProcessTs(
5+
export function defaultPostProcessTs(
56
files: VirtualFiles,
67
parentFile?: string
7-
): Promise<VirtualFiles> {
8+
): VirtualFiles {
89
return fromEntries(
9-
await Promise.all(
10-
Object.entries(files).map(async ([name, file]) => {
11-
const prettyCode = await prettify(file.code, name, parentFile || name);
10+
Object.entries(files).map(([name, file]) => {
11+
const prettyCode = prettify(file.code, name, parentFile || name);
1212

13-
return [
14-
name,
15-
{
16-
...file,
17-
code: prettyCode.trim(),
18-
},
19-
];
20-
})
21-
)
13+
return [
14+
name,
15+
{
16+
...file,
17+
code: prettyCode.trim(),
18+
},
19+
];
20+
})
2221
);
2322
}
2423

25-
export async function defaultPostProcessTranspiledJs(
24+
export function defaultPostProcessTranspiledJs(
2625
files: VirtualFiles,
2726
parentFile?: string
28-
): Promise<VirtualFiles> {
27+
): VirtualFiles {
2928
return fromEntries(
30-
await Promise.all(
31-
Object.entries(files).map(async ([name, file]) => {
32-
const mangledCode = file.code.replace(
33-
/(\n\s*|)\/\/ (@ts-ignore|@ts-expect-error).*$/gm,
34-
''
35-
);
36-
const prettyCode = await prettify(
37-
mangledCode,
38-
name,
39-
parentFile || name
40-
);
29+
Object.entries(files).map(([name, file]) => {
30+
const mangledCode = file.code.replace(
31+
/(\n\s*|)\/\/ (@ts-ignore|@ts-expect-error).*$/gm,
32+
''
33+
);
34+
const prettyCode = prettify(mangledCode, name, parentFile || name);
4135

42-
return [
43-
name.replace(/.t(sx?)$/, '.j$1'),
44-
{
45-
...file,
46-
code: prettyCode.trim(),
47-
},
48-
];
49-
})
50-
)
36+
return [
37+
name.replace(/.t(sx?)$/, '.j$1'),
38+
{
39+
...file,
40+
code: prettyCode.trim(),
41+
},
42+
];
43+
})
5144
);
5245
}
5346

54-
let lastConfig: prettier.Options | null;
47+
let lastConfig: PrettierOptions | null;
5548
let lastParentFile: string;
5649

5750
/**
@@ -60,21 +53,17 @@ let lastParentFile: string;
6053
* @param {string} fileName
6154
* @param {string} parentFile
6255
*/
63-
async function prettify(
64-
sourceCode: string,
65-
fileName: string,
66-
parentFile: string
67-
) {
56+
function prettify(sourceCode: string, fileName: string, parentFile: string) {
6857
if (lastParentFile !== parentFile) {
69-
lastConfig = await prettier.resolveConfig(parentFile);
58+
lastConfig = prettierSync.resolveConfig(parentFile);
7059
}
7160
if (!lastConfig) {
7261
console.error(
7362
`no prettier config found for ${parentFile}, skipping prettier step`
7463
);
7564
return sourceCode;
7665
}
77-
return prettier.format(sourceCode, {
66+
return prettierSync.format(sourceCode, {
7867
...lastConfig,
7968
filepath: fileName,
8069
});

yarn.lock

+19
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,17 @@ __metadata:
487487
languageName: node
488488
linkType: hard
489489

490+
"@prettier/sync@npm:^0.5.2":
491+
version: 0.5.2
492+
resolution: "@prettier/sync@npm:0.5.2"
493+
dependencies:
494+
make-synchronized: "npm:^0.2.8"
495+
peerDependencies:
496+
prettier: "*"
497+
checksum: 10/172cdc62f4103b022f8e8d0a63839350d97bc51468ea476594bce651c2cda311e4810417f16a3c967941a8493a68468a5df27beea4c85eaeaa37e84be3acf399
498+
languageName: node
499+
linkType: hard
500+
490501
"@rollup/rollup-android-arm-eabi@npm:4.21.1":
491502
version: 4.21.1
492503
resolution: "@rollup/rollup-android-arm-eabi@npm:4.21.1"
@@ -2796,6 +2807,13 @@ __metadata:
27962807
languageName: node
27972808
linkType: hard
27982809

2810+
"make-synchronized@npm:^0.2.8":
2811+
version: 0.2.9
2812+
resolution: "make-synchronized@npm:0.2.9"
2813+
checksum: 10/d12c540719641f05f4e40bae5625b7e5ac9dded364e7f97ef3fd8baa1bcbd016f873c5281e4719e321a612635accf0a9e2c07a37d215240b549b99ed0d8a1b3f
2814+
languageName: node
2815+
linkType: hard
2816+
27992817
"mdast-util-from-markdown@npm:^2.0.0":
28002818
version: 2.0.1
28012819
resolution: "mdast-util-from-markdown@npm:2.0.1"
@@ -4108,6 +4126,7 @@ __metadata:
41084126
resolution: "remark-typescript-tools@workspace:."
41094127
dependencies:
41104128
"@microsoft/tsdoc": "npm:^0.15.0"
4129+
"@prettier/sync": "npm:^0.5.2"
41114130
"@types/estree": "npm:^1.0.5"
41124131
"@types/node": "npm:^22.5.4"
41134132
"@types/react": "npm:^18.3.5"

0 commit comments

Comments
 (0)