Skip to content

Commit 968c1e3

Browse files
authored
Refactor Zod types into reusable constants (#353)
* Refactor Zod types into reusable constants * trim Zod string before length assertion
1 parent 07946be commit 968c1e3

File tree

6 files changed

+34
-26
lines changed

6 files changed

+34
-26
lines changed

src/handlers/RelatedResourcesParser.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ import {
44
InsertRelatedResourcesParams,
55
TemplateUri,
66
} from '../protocol/RelatedResourcesProtocol';
7+
import { NonEmptyZodString } from '../utils/ZodModel';
78

8-
const TemplateUriSchema = z.string().min(1);
9+
const TemplateUriSchema = NonEmptyZodString;
910

1011
const GetRelatedResourceTypesParamsSchema = z.object({
11-
parentResourceType: z.string().min(1),
12+
parentResourceType: NonEmptyZodString,
1213
});
1314

1415
const InsertRelatedResourcesParamsSchema = z.object({
15-
templateUri: z.string().min(1),
16-
relatedResourceTypes: z.array(z.string().min(1)).min(1),
17-
parentResourceType: z.string().min(1),
16+
templateUri: NonEmptyZodString,
17+
relatedResourceTypes: z.array(NonEmptyZodString).min(1),
18+
parentResourceType: NonEmptyZodString,
1819
});
1920

2021
export function parseTemplateUriParams(input: unknown): TemplateUri {

src/protocol/LspParser.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { z } from 'zod';
2+
import { NonEmptyZodString } from '../utils/ZodModel';
23
import { Identifiable } from './LspTypes';
34

45
const IdentifiableSchema = z.object({
5-
id: z.string().min(1),
6+
id: NonEmptyZodString,
67
});
78

89
export function parseIdentifiable(input: unknown): Identifiable {

src/resourceState/ResourceStateParser.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { z } from 'zod';
1+
import { NonEmptyZodString } from '../utils/ZodModel';
22

3-
const ResourceTypeNameSchema = z.string().min(1);
3+
const ResourceTypeNameSchema = NonEmptyZodString;
44

55
export function parseResourceTypeName(input: unknown): string {
66
return ResourceTypeNameSchema.parse(input);

src/s3/S3RequestParser.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { z } from 'zod';
2+
import { NonEmptyZodString } from '../utils/ZodModel';
23
import { UploadFileParams } from './S3RequestType';
34

45
const UploadFileParamsSchema = z.object({
5-
localFilePath: z.string().min(1),
6-
s3Url: z.string().min(1),
6+
localFilePath: NonEmptyZodString,
7+
s3Url: NonEmptyZodString,
78
});
89

910
export function parseUploadFileParams(input: unknown): UploadFileParams {

src/stacks/actions/StackActionParser.ts

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Capability, OnStackFailure } from '@aws-sdk/client-cloudformation';
22
import { z } from 'zod';
3+
import { NonEmptyZodString, CfnNameZodString } from '../../utils/ZodModel';
34
import {
45
ListStackResourcesParams,
56
GetStackEventsParams,
@@ -44,9 +45,9 @@ const ResourceToImportSchema = z.object({
4445
const DeploymentModeSchema = z.enum([DeploymentMode.REVERT_DRIFT]);
4546

4647
const CreateValidationParamsSchema = z.object({
47-
id: z.string().min(1),
48-
uri: z.string().min(1),
49-
stackName: z.string().min(1).max(128),
48+
id: NonEmptyZodString,
49+
uri: NonEmptyZodString,
50+
stackName: CfnNameZodString,
5051
parameters: z.array(ParameterSchema).optional(),
5152
capabilities: z.array(CapabilitySchema).optional(),
5253
resourcesToImport: z.array(ResourceToImportSchema).optional(),
@@ -61,42 +62,42 @@ const CreateValidationParamsSchema = z.object({
6162
});
6263

6364
const CreateDeploymentParamsSchema = z.object({
64-
id: z.string().min(1),
65-
stackName: z.string().min(1).max(128),
66-
changeSetName: z.string().min(1).max(128),
65+
id: NonEmptyZodString,
66+
stackName: CfnNameZodString,
67+
changeSetName: CfnNameZodString,
6768
});
6869

6970
const DeleteChangeSetParamsSchema = z.object({
70-
id: z.string().min(1),
71-
stackName: z.string().min(1).max(128),
72-
changeSetName: z.string().min(1).max(128),
71+
id: NonEmptyZodString,
72+
stackName: CfnNameZodString,
73+
changeSetName: CfnNameZodString,
7374
});
7475

7576
const DescribeChangeSetParamsSchema = z.object({
76-
stackName: z.string().min(1).max(128),
77-
changeSetName: z.string().min(1).max(128),
77+
stackName: CfnNameZodString,
78+
changeSetName: CfnNameZodString,
7879
});
7980

80-
const TemplateUriSchema = z.string().min(1);
81+
const TemplateUriSchema = NonEmptyZodString;
8182

8283
const ListStackResourcesParamsSchema = z.object({
83-
stackName: z.string().min(1),
84+
stackName: NonEmptyZodString,
8485
nextToken: z.string().optional(),
8586
maxItems: z.number().optional(),
8687
});
8788

8889
const GetStackEventsParamsSchema = z.object({
89-
stackName: z.string().min(1).max(128),
90+
stackName: CfnNameZodString,
9091
nextToken: z.string().optional(),
9192
refresh: z.boolean().optional(),
9293
});
9394

9495
const ClearStackEventsParamsSchema = z.object({
95-
stackName: z.string().min(1).max(128),
96+
stackName: CfnNameZodString,
9697
});
9798

9899
const DescribeStackParamsSchema = z.object({
99-
stackName: z.string().min(1).max(128),
100+
stackName: CfnNameZodString,
100101
});
101102

102103
export function parseCreateValidationParams(input: unknown): CreateValidationParams {

src/utils/ZodModel.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { z } from 'zod';
2+
3+
export const NonEmptyZodString = z.string().trim().min(1);
4+
export const CfnNameZodString = z.string().trim().min(1).max(128);

0 commit comments

Comments
 (0)