graphql-modules
Version:
Create reusable, maintainable, testable and extendable GraphQL modules
27 lines (26 loc) • 759 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.forwardRef = forwardRef;
exports.resolveForwardRef = resolveForwardRef;
const utils_1 = require("./utils");
const forwardRefSymbol = Symbol('__forward_ref__');
/**
* Useful in "circular dependencies of modules" situation
*/
function forwardRef(forwardRefFn) {
forwardRefFn[forwardRefSymbol] = forwardRef;
forwardRefFn.toString = function () {
return (0, utils_1.stringify)(this());
};
return forwardRefFn;
}
function resolveForwardRef(type) {
if (typeof type === 'function' &&
type.hasOwnProperty(forwardRefSymbol) &&
type[forwardRefSymbol] === forwardRef) {
return type();
}
else {
return type;
}
}