haystack-codegen
Version:
Project Haystack Core code generation tools
34 lines (33 loc) • 1.03 kB
JavaScript
;
/*
* Copyright (c) 2021, J2 Innovations. All Rights Reserved
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypeGuardNode = void 0;
const util_1 = require("../nodes/util");
/**
* Generates a type guard for a type.
*/
class TypeGuardNode {
def;
name;
newLines = 1;
types = ['HNamespace'];
constructor(def, name) {
this.def = def;
this.name = name;
}
generateCode(out) {
out('/**');
out(` * Returns true if the value is a ${this.def}.`);
out(' *');
out(' * @param value The value to test.');
out(' * @param namespace The namespace to validate against.');
out(' * @returns true if the value matches.');
out(' */');
out(`export function is${(0, util_1.capitalizeFirstChar)(this.def)}(value: unknown, namespace: HNamespace): value is ${this.name} {`);
out(` return namespace.isValid('${this.def}', value)`);
out('}');
}
}
exports.TypeGuardNode = TypeGuardNode;