UNPKG

shallow-render

Version:

Shallow rendering test utility for Angular

39 lines 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.outputProxy = exports.PropertyNotAnEventEmitterOrSignalOutputError = exports.PropertyNotMarkedAsOutputError = void 0; const core_1 = require("@angular/core"); const custom_error_1 = require("../models/custom-error"); const reflect_1 = require("./reflect"); const className = (object) => (object && object.constructor && object.constructor.name) || '<UnknownClass>'; class PropertyNotMarkedAsOutputError extends custom_error_1.CustomError { constructor(key, component) { super(`${String(key)} is not marked with the @Output() decorator. ` + `Check that it is properly defined and set on the ${className(component)} class`); } } exports.PropertyNotMarkedAsOutputError = PropertyNotMarkedAsOutputError; class PropertyNotAnEventEmitterOrSignalOutputError extends custom_error_1.CustomError { constructor(key, component) { super(`${String(key)} is not an instance of an EventEmitter or a Signal Output. ` + `Check that it is properly defined and set on the ${className(component)} class`); } } exports.PropertyNotAnEventEmitterOrSignalOutputError = PropertyNotAnEventEmitterOrSignalOutputError; // eslint-disable-next-line @typescript-eslint/ban-types const outputProxy = (component) => { const outputs = reflect_1.reflect.getInputsAndOutputs(component.constructor).outputs.map(o => o.propertyName); return new Proxy({}, { get: (_, key) => { if (!outputs.includes(String(key))) { throw new PropertyNotMarkedAsOutputError(key, component); } const maybeOutput = component[key]; if (!(maybeOutput instanceof core_1.EventEmitter) && !(maybeOutput instanceof core_1.OutputEmitterRef)) { throw new PropertyNotAnEventEmitterOrSignalOutputError(key, component); } return maybeOutput; }, }); }; exports.outputProxy = outputProxy; //# sourceMappingURL=output-proxy.js.map