Skip to content

Commit fcbe77a

Browse files
authored
feat: add beforeSerialize and afterSerialize (#13)
1 parent 9168e3a commit fcbe77a

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
[![npm latest version](https://img.shields.io/npm/v/path-serializer?style=flat-square&color=98c379)](https://www.npmjs.com/package/path-serializer)
44

5-
1. stabilize pnpm dependencies path and update dependencies smoothly
5+
1. stabilize pnpm dependencies path in snapshot
66
2. transform win32 path to posix path
7+
3. escapeEOL \r\n -> \n
78
and more...
89

910
```ts
@@ -31,7 +32,7 @@ expect.addSnapshotSerializer(
3132
);
3233
```
3334

34-
The specific usage can be found in [./src/types.ts](https://github.com/rspack-contrib/path-serializer/blob/main/src/types.ts)
35+
More features can be found in [./src/types.ts](https://github.com/rspack-contrib/path-serializer/blob/main/src/types.ts)
3536

3637
## Showcases
3738

src/createSnapshotSerializer.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ export function createSnapshotSerializer(
2525
replace: customMatchers = [],
2626
replacePost: customPostMatchers = [],
2727
features = {},
28+
beforeSerialize,
29+
afterSerialize,
2830
} = options || {};
2931

3032
const {
@@ -76,6 +78,11 @@ export function createSnapshotSerializer(
7678
},
7779
serialize(val: unknown) {
7880
let replaced: string = val as string;
81+
82+
if (beforeSerialize) {
83+
replaced = beforeSerialize(replaced);
84+
}
85+
7986
if (transformWin32Path) {
8087
replaced = normalizeCodeToPosix(replaced);
8188
}
@@ -95,6 +102,10 @@ export function createSnapshotSerializer(
95102
if (addDoubleQuotes) {
96103
replaced = `"${replaced}"`;
97104
}
105+
106+
if (afterSerialize) {
107+
replaced = afterSerialize(replaced);
108+
}
98109
return replaced;
99110
},
100111
};

src/types.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@ export interface Features {
2323
*/
2424
replacePnpmInner?: boolean;
2525
/**
26+
* <TEMP>
2627
* @default true
2728
*/
2829
replaceTmpDir?: boolean;
2930
/**
31+
* <HOME>
3032
* @default true
3133
*/
3234
replaceHomeDir?: boolean;
@@ -42,6 +44,7 @@ export interface Features {
4244
*/
4345
transformWin32Path?: boolean;
4446
/**
47+
* "" -> \"\"
4548
* @default true
4649
*/
4750
escapeDoubleQuotes?: boolean;
@@ -53,7 +56,7 @@ export interface Features {
5356
/**
5457
* \u001b[1mBold Text\u001b[0m
5558
* -> <CLR=BOLD>Bold Text<CLR=0>
56-
* @default true
59+
* @default true
5760
*/
5861
transformCLR?: boolean;
5962
}
@@ -72,13 +75,21 @@ export interface SnapshotSerializerOptions {
7275
*/
7376
workspace?: string;
7477
/**
75-
* @description replace -> workspace root pnpmInner temp home -> replacePost
78+
* @description beforeSerialize -> replace -> workspace root pnpmInner temp home -> replacePost -> afterSerialize
79+
*/
80+
beforeSerialize?: (val: string) => string;
81+
/**
82+
* @description beforeSerialize -> replace -> workspace root pnpmInner temp home -> replacePost -> afterSerialize
7683
*/
7784
replace?: PathMatcher[];
7885
/**
79-
* @description replace -> workspace root pnpmInner temp home -> replacePost
86+
* @description beforeSerialize -> replace -> workspace root pnpmInner temp home -> replacePost -> afterSerialize
8087
*/
8188
replacePost?: PathMatcher[];
89+
/**
90+
* @description beforeSerialize -> replace -> workspace root pnpmInner temp home -> replacePost -> afterSerialize
91+
*/
92+
afterSerialize?: (val: string) => string;
8293
features?: Features;
8394
}
8495

0 commit comments

Comments
 (0)