lean4-code-actions
Version:
Refactorings and snippets for Lean 4
36 lines (27 loc) • 1.21 kB
text/typescript
import { getDuplicatesRefinement } from 'libs/utils/zod'
import { z } from 'zod'
import { IdSchema } from '../Id'
export const GenericArtifactSchema = z.object({
id: IdSchema,
notes: z.string().optional(),
// isFinished: z.boolean(), // not needed because artifact.isFinished === isDefined(artifact.value)
createdBy: IdSchema,
createdOn: z.date(),
pausedUntil: z.date().optional(),
})
export const GenericArtifactsSchema = z.array(GenericArtifactSchema)
.superRefine(getDuplicatesRefinement('GenericArtifact', parseGenericArtifactUid))
export const GenericArtifactUidSchema = GenericArtifactSchema.pick({
id: true,
})
export type GenericArtifact = z.infer<typeof GenericArtifactSchema>
export type GenericArtifactUid = z.infer<typeof GenericArtifactUidSchema>
export function parseGenericArtifact(artifact: GenericArtifact): GenericArtifact {
return GenericArtifactSchema.parse(artifact)
}
export function parseGenericArtifacts(artifacts: GenericArtifact[]): GenericArtifact[] {
return GenericArtifactsSchema.parse(artifacts)
}
export function parseGenericArtifactUid(artifactUid: GenericArtifactUid): GenericArtifactUid {
return GenericArtifactUidSchema.parse(artifactUid)
}