1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| const validator = {
| get(target, name) {
| // eslint-disable-next-line no-prototype-builtins
| if (!target.hasOwnProperty(name)) {
| throw new Error(`"${name}" value does not exist in the enum`);
| } else if (typeof target[name] === 'object' && target[name] != null) {
| return new Proxy(target[name], validator);
| } else {
| return target[name];
| }
| },
| set(target, name, value) {
| throw new Error('Cannot add a new value to the enum');
| }
| };
|
| export function Enum(baseEnum) {
| return new Proxy(baseEnum, validator);
| }
|
|