-
Notifications
You must be signed in to change notification settings - Fork 7
/
scratchpad.ts
36 lines (33 loc) · 1.33 KB
/
scratchpad.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* I am the scratchpad!
* Normally, debugging the macro is difficult because placing a "debugger" statement isn't sufficient
* since the test files are compiled with babel into normal Javascript.
* (and you can't make the Babel CLI stop on a debugger statement because in order to stop a debugger
* statement, you have to use node --inspect-brk. Doing ./script.js where the script has a debugger
* statement does nothing. Doing node --inspect-brk node_modules/.bin/babel doesn't work either, it
* just crashes).
*
* However, this file isn't compiled with the babel CLI. Rather it's required using
* @babel/register. So node --inspect-brk scratchpad.js will require this file
* and compile it, while stopping on any debugger statements in the macro.
*
* All of this is to say. If you want to use a debugger statement inside the macro,
* place the input code you want to debug here. And run "pnpm run scratchpad".
*/
import { createDetailedValidator } from "../dist/typecheck.macro";
const val = createDetailedValidator<
| number
| {
a?: [
number | { a: [number, Array<number | string>] },
number,
...string[]
];
b: "bar" | false | 42;
c: Array<Array<number | boolean | "bar" | "zar">>;
}
>();
const errs = [];
const result = val(null, errs);
console.log(result);
console.log(errs);