@lbu/code-gen
Version:
Generate various boring parts of your server
55 lines (43 loc) • 1.13 kB
JavaScript
import { inspect } from "util";
import { isNil } from "@lbu/stdlib";
import { TypeBuilder } from "./TypeBuilder.js";
import { buildOrInfer } from "./utils.js";
export class AnyOfType extends TypeBuilder {
static baseData = {};
build() {
const result = super.build();
const set = new Set();
result.values = [];
for (const v of this.internalValues) {
const buildValue = buildOrInfer(v);
const stringValueOfBuild = inspect(buildValue, {
colors: false,
pretty: false,
depth: 18, // About 5 levels of object types
});
if (!set.has(stringValueOfBuild)) {
set.add(stringValueOfBuild);
result.values.push(buildValue);
}
}
return result;
}
constructor(group, name) {
super("anyOf", group, name);
this.data = {
...this.data,
...AnyOfType.getBaseData(),
};
}
/**
* @param {...TypeBuilderLike} [items]
* @returns {AnyOfType}
*/
values(...items) {
if (isNil(this.internalValues)) {
this.internalValues = [];
}
this.internalValues.push(...items);
return this;
}
}