Skip to content

Commit 6532a1d

Browse files
authored
Upgrade zod from v3 to v4 (#136)
1 parent dc2d1ed commit 6532a1d

File tree

12 files changed

+83
-79
lines changed

12 files changed

+83
-79
lines changed

lib/src/formatters/shared/base.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export default class BaseFormatter<OutputFileType, APIDataType = unknown> {
130130

131131
public async format(): Promise<void> {
132132
const data = await this.fetchAPIData();
133-
const files = await this.transformAPIData(data);
133+
const files = this.transformAPIData(data);
134134
await this.writeFiles(files);
135135
}
136136

lib/src/http/variables.ts

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,49 +9,39 @@ const ZBaseVariable = z.object({
99
name: z.string(),
1010
});
1111

12-
const ZVariableNumber = ZBaseVariable.merge(
13-
z.object({
14-
type: z.literal("number"),
15-
data: z.object({
16-
example: z.union([z.number(), z.string()]),
17-
fallback: z.union([z.number(), z.string()]).optional(),
18-
}),
19-
})
20-
);
12+
const ZVariableNumber = ZBaseVariable.extend({
13+
type: z.literal("number"),
14+
data: z.object({
15+
example: z.union([z.number(), z.string()]),
16+
fallback: z.union([z.number(), z.string()]).optional(),
17+
}),
18+
});
2119

22-
const ZVariableString = ZBaseVariable.merge(
23-
z.object({
24-
type: z.literal("string"),
25-
data: z.object({
26-
example: z.string(),
27-
fallback: z.string().optional(),
28-
}),
29-
})
30-
);
20+
const ZVariableString = ZBaseVariable.extend({
21+
type: z.literal("string"),
22+
data: z.object({
23+
example: z.string(),
24+
fallback: z.string().optional(),
25+
}),
26+
});
3127

32-
const ZVariableHyperlink = ZBaseVariable.merge(
33-
z.object({
34-
type: z.literal("hyperlink"),
35-
data: z.object({
36-
text: z.string(),
37-
url: z.string(),
38-
}),
39-
})
40-
);
28+
const ZVariableHyperlink = ZBaseVariable.extend({
29+
type: z.literal("hyperlink"),
30+
data: z.object({
31+
text: z.string(),
32+
url: z.string(),
33+
}),
34+
});
4135

42-
const ZVariableList = ZBaseVariable.merge(
43-
z.object({
44-
type: z.literal("list"),
45-
data: z.array(z.string()),
46-
})
47-
);
36+
const ZVariableList = ZBaseVariable.extend({
37+
type: z.literal("list"),
38+
data: z.array(z.string()),
39+
});
4840

49-
const ZVariableMap = ZBaseVariable.merge(
50-
z.object({
51-
type: z.literal("map"),
52-
data: z.record(z.string()),
53-
})
54-
);
41+
const ZVariableMap = ZBaseVariable.extend({
42+
type: z.literal("map"),
43+
data: z.record(z.string(), z.string()),
44+
});
5545

5646
const ZVariable = z.discriminatedUnion("type", [
5747
ZVariableString,

lib/src/outputs/android.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { z } from "zod";
22
import { ZBaseOutputFilters } from "./shared";
33

4-
export const ZAndroidOutput = ZBaseOutputFilters.extend({
5-
format: z.literal("android"),
6-
framework: z.undefined(),
7-
}).strict();
4+
export const ZAndroidOutput = z.strictObject(
5+
ZBaseOutputFilters.extend({
6+
format: z.literal("android"),
7+
}).shape
8+
);

lib/src/outputs/iosStrings.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { z } from "zod";
22
import { ZBaseOutputFilters } from "./shared";
33

4-
export const ZIOSStringsOutput = ZBaseOutputFilters.extend({
5-
format: z.literal("ios-strings"),
6-
framework: z.undefined(),
7-
}).strict();
4+
export const ZIOSStringsOutput = z.strictObject(
5+
ZBaseOutputFilters.extend({
6+
format: z.literal("ios-strings"),
7+
}).shape
8+
);

lib/src/outputs/iosStringsDict.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { z } from "zod";
22
import { ZBaseOutputFilters } from "./shared";
33

4-
export const ZIOSStringsDictOutput = ZBaseOutputFilters.extend({
5-
format: z.literal("ios-stringsdict"),
6-
framework: z.undefined(),
7-
}).strict();
4+
export const ZIOSStringsDictOutput = z.strictObject(
5+
ZBaseOutputFilters.extend({
6+
format: z.literal("ios-stringsdict"),
7+
}).shape
8+
);

lib/src/outputs/json.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
11
import { z } from "zod";
22
import { ZBaseOutputFilters } from "./shared";
33

4-
const ZBaseJSONOutput = ZBaseOutputFilters.extend({
5-
format: z.literal("json"),
6-
framework: z.undefined(),
7-
}).strict();
4+
const ZBaseJSONOutput = z.strictObject(
5+
ZBaseOutputFilters.extend({
6+
format: z.literal("json"),
7+
}).shape
8+
);
89

9-
const Zi18NextJSONOutput = ZBaseJSONOutput.extend({
10-
framework: z.literal("i18next"),
11-
type: z.literal("module").or(z.literal("commonjs")).optional(),
12-
}).strict();
10+
const Zi18NextJSONOutput = z.strictObject(
11+
ZBaseOutputFilters.extend({
12+
format: z.literal("json"),
13+
framework: z.literal("i18next"),
14+
type: z.literal("module").or(z.literal("commonjs")).optional(),
15+
}).shape
16+
);
1317

14-
const ZVueI18nJSONOutput = ZBaseJSONOutput.extend({
15-
framework: z.literal("vue-i18n"),
16-
type: z.literal("module").or(z.literal("commonjs")).optional(),
17-
}).strict();
18+
const ZVueI18nJSONOutput = z.strictObject(
19+
ZBaseOutputFilters.extend({
20+
format: z.literal("json"),
21+
framework: z.literal("vue-i18n"),
22+
type: z.literal("module").or(z.literal("commonjs")).optional(),
23+
}).shape
24+
);
1825

1926
export const ZJSONOutput = z.discriminatedUnion("framework", [
2027
ZBaseJSONOutput,

lib/src/outputs/jsonICU.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { z } from "zod";
22
import { ZBaseOutputFilters } from "./shared";
33

4-
export const ZJSONICUOutput = ZBaseOutputFilters.extend({
5-
format: z.literal("json_icu"),
6-
framework: z.undefined(),
7-
}).strict();
4+
export const ZJSONICUOutput = z.strictObject(
5+
ZBaseOutputFilters.extend({
6+
format: z.literal("json_icu"),
7+
}).shape
8+
);

lib/src/outputs/shared.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { ZTagsFilter, ZTextStatus } from "../http/types";
66
* They are all optional by default unless otherwise specified in the output config.
77
*/
88
export const ZBaseOutputFilters = z.object({
9+
framework: z.undefined().optional(),
910
projects: z.array(z.object({ id: z.string() })).optional(),
1011
components: z
1112
.object({

lib/src/services/apiToken/promptForApiToken.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ export const validate = async (token: string) => {
1414
* @returns The collected token
1515
*/
1616
export default async function promptForApiToken() {
17+
// @ts-expect-error - Enquirer types are not updated for the validate function
1718
const response = await prompt<{ token: string }>({
1819
type: "input",
1920
name: "token",
2021
message: "What is your API key?",
21-
// @ts-expect-error - Enquirer types are not updated for the validate function
2222
validate,
2323
});
2424

lib/src/services/projectConfig.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@ import { ZBaseOutputFilters } from "../outputs/shared";
77
import { ZOutput } from "../outputs";
88
import DittoError, { ErrorType } from "../utils/DittoError";
99

10-
const ZProjectConfigYAML = ZBaseOutputFilters.extend({
11-
outputs: z.array(ZOutput),
12-
}).strict();
10+
const ZProjectConfigYAML = z.strictObject(
11+
ZBaseOutputFilters.extend({
12+
outputs: z.array(ZOutput),
13+
}).shape
14+
);
1315

1416
export type ProjectConfigYAML = z.infer<typeof ZProjectConfigYAML>;
1517

@@ -63,7 +65,7 @@ function readProjectConfigData(
6365
throw new DittoError({
6466
type: ErrorType.ConfigParseError,
6567
data: {
66-
formattedError: JSON.stringify(parsedYAML.error.flatten(), null, 2),
68+
formattedError: z.prettifyError(parsedYAML.error),
6769
messagePrefix: "There is an error in your project config file.",
6870
},
6971
});

0 commit comments

Comments
 (0)