UNPKG

@ptc-org/nestjs-query-graphql

Version:
35 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getReferences = getReferences; exports.Reference = Reference; const nestjs_query_core_1 = require("@ptc-org/nestjs-query-core"); const common_1 = require("../common"); const constants_1 = require("./constants"); const reflector = new nestjs_query_core_1.ArrayReflector(constants_1.REFERENCE_KEY); function getReferenceDescriptors(DTOClass) { return (0, nestjs_query_core_1.getPrototypeChain)(DTOClass).reduce((references, cls) => { const referenceNames = references.map((r) => r.name); const metaReferences = reflector.get(cls) ?? []; const inheritedReferences = metaReferences.filter((t) => !referenceNames.includes(t.name)); return [...inheritedReferences, ...references]; }, []); } function convertReferencesToOpts(references, baseOpts) { return references.reduce((referenceOpts, r) => { const opts = (0, common_1.mergeBaseResolverOpts)({ ...r.relationOpts, DTO: r.relationTypeFunc(), keys: r.keys }, baseOpts ?? {}); return { ...referenceOpts, [r.name]: opts }; }, {}); } function getReferences(DTOClass, opts) { const referenceDescriptors = getReferenceDescriptors(DTOClass); return convertReferencesToOpts(referenceDescriptors, opts); } function Reference(name, relationTypeFunc, // eslint-disable-next-line @typescript-eslint/no-explicit-any keys, relationOpts) { return (DTOClass) => { reflector.append(DTOClass, { name, keys, relationOpts, relationTypeFunc }); return DTOClass; }; } //# sourceMappingURL=reference.decorator.js.map