1import { execFileSync } from "node:child_process"
2import { mkdtempSync, rmSync } from "node:fs"
3import { join } from "node:path"
4import { fileURLToPath, pathToFileURL } from "node:url"
5import { fixture, roots } from "./cases.ts"
6const directory = mkdtempSync(fileURLToPath(new URL("./.aot-", import.meta.url)))
7try {
8 const file = join(directory, "generated.mjs")
9 execFileSync(process.execPath, [fileURLToPath(new URL("./generate.mts", import.meta.url)), file])
10 const generated = await import(pathToFileURL(file).href)
11 generated.install(roots)
12} finally {
13 rmSync(directory, { recursive: true, force: true })
14}
15export const parseValid = () => fixture("parseValid")
16export const parseExtra = () => fixture("parseExtra")
17export const parseInvalid = () => fixture("parseInvalid")
18export const isValid = () => fixture("isValid")
19export const isInvalid = () => fixture("isInvalid")
20export const encode = () => fixture("encode")
21export const strict = () => fixture("strict")
22export const nested = () => fixture("nested")
23export const array = () => fixture("array")
24export const arrayInvalid = () => fixture("arrayInvalid")
25export const tuple = () => fixture("tuple")
26export const record = () => fixture("record")
27export const recordTransformedKeys = () => fixture("recordTransformedKeys")
28export const union = () => fixture("union")
29export const oneOf = () => fixture("oneOf")
30export const transform = () => fixture("transform")
31export const transformInvalid = () => fixture("transformInvalid")
32export const rootTransform = () => fixture("rootTransform")
33export const middleware = () => fixture("middleware")
34export const recursive = () => fixture("recursive")
35export const suspendRoot = () => fixture("suspendRoot")
36export const declaration = () => fixture("declaration")
37export const makeStruct = () => fixture("makeStruct")
38export const makeArray = () => fixture("makeArray")
39export const makeUnion = () => fixture("makeUnion")