|
|
|
# Extollo runtime type validation proof-of-concept
|
|
|
|
|
|
|
|
You can read more about this proof-of-concept here:
|
|
|
|
|
|
|
|
To run it:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
pnpm i
|
|
|
|
pnpm build
|
|
|
|
```
|
|
|
|
|
|
|
|
The intermediate files are generated in the `exbuild/` directory, and the final compiled output is in the `lib/` directory.
|
|
|
|
|
|
|
|
Access the Zod schema:
|
|
|
|
|
|
|
|
```txt
|
|
|
|
node --experimental-repl-await lib/cli.js shell
|
|
|
|
powered by Extollo, © 2022 Garrett Mills
|
|
|
|
Access your application using the "app" global.
|
|
|
|
(extollo) ➤ Home = require('./lib/app/http/controllers/main/Home.controller').Home
|
|
|
|
[class Home extends Controller]
|
|
|
|
(extollo) ➤ home = new Home
|
|
|
|
Home { request: undefined }
|
|
|
|
(extollo) ➤ home.getValidator().getZod().shape
|
|
|
|
{
|
|
|
|
username: ZodString {
|
|
|
|
spa: [Function (anonymous)],
|
|
|
|
superRefine: [Function (anonymous)],
|
|
|
|
_def: { checks: [Array], typeName: 'ZodString' },
|
|
|
|
transform: [Function: bound ],
|
|
|
|
default: [Function: bound ],
|
|
|
|
_regex: [Function (anonymous)],
|
|
|
|
nonempty: [Function (anonymous)]
|
|
|
|
},
|
|
|
|
password: ZodString {
|
|
|
|
spa: [Function (anonymous)],
|
|
|
|
superRefine: [Function (anonymous)],
|
|
|
|
_def: { checks: [Array], typeName: 'ZodString' },
|
|
|
|
transform: [Function: bound ],
|
|
|
|
default: [Function: bound ],
|
|
|
|
_regex: [Function (anonymous)],
|
|
|
|
nonempty: [Function (anonymous)]
|
|
|
|
},
|
|
|
|
rememberMe: ZodOptional {
|
|
|
|
spa: [Function (anonymous)],
|
|
|
|
superRefine: [Function (anonymous)],
|
|
|
|
_def: { innerType: [ZodBoolean], typeName: 'ZodOptional' },
|
|
|
|
transform: [Function: bound ],
|
|
|
|
default: [Function: bound ]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|