1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.ResolveField = void 0;
|
4 | const common_1 = require("@nestjs/common");
|
5 | const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
6 | const graphql_constants_1 = require("../graphql.constants");
|
7 | const lazy_metadata_storage_1 = require("../schema-builder/storages/lazy-metadata.storage");
|
8 | const type_metadata_storage_1 = require("../schema-builder/storages/type-metadata.storage");
|
9 | const reflection_utilts_1 = require("../utils/reflection.utilts");
|
10 |
|
11 |
|
12 |
|
13 | function ResolveField(propertyNameOrFunc, typeFuncOrOptions, resolveFieldOptions) {
|
14 | return (target, key, descriptor) => {
|
15 |
|
16 | let [propertyName, typeFunc, options] = (0, shared_utils_1.isFunction)(propertyNameOrFunc)
|
17 | ? typeFuncOrOptions && typeFuncOrOptions.name
|
18 | ? [typeFuncOrOptions.name, propertyNameOrFunc, typeFuncOrOptions]
|
19 | : [undefined, propertyNameOrFunc, typeFuncOrOptions]
|
20 | : [propertyNameOrFunc, typeFuncOrOptions, resolveFieldOptions];
|
21 | (0, common_1.SetMetadata)(graphql_constants_1.RESOLVER_NAME_METADATA, propertyName)(target, key, descriptor);
|
22 | (0, common_1.SetMetadata)(graphql_constants_1.RESOLVER_PROPERTY_METADATA, true)(target, key, descriptor);
|
23 | (0, common_1.SetMetadata)(graphql_constants_1.FIELD_RESOLVER_MIDDLEWARE_METADATA, options?.middleware)(target, key, descriptor);
|
24 | options = (0, shared_utils_1.isObject)(options)
|
25 | ? {
|
26 | name: propertyName,
|
27 | ...options,
|
28 | }
|
29 | : propertyName
|
30 | ? { name: propertyName }
|
31 | : {};
|
32 | lazy_metadata_storage_1.LazyMetadataStorage.store(target.constructor, () => {
|
33 | let typeOptions, typeFn;
|
34 | try {
|
35 | const implicitTypeMetadata = (0, reflection_utilts_1.reflectTypeFromMetadata)({
|
36 | metadataKey: 'design:returntype',
|
37 | prototype: target,
|
38 | propertyKey: key,
|
39 | explicitTypeFn: typeFunc,
|
40 | typeOptions: options,
|
41 | });
|
42 | typeOptions = implicitTypeMetadata.options;
|
43 | typeFn = implicitTypeMetadata.typeFn;
|
44 | }
|
45 | catch { }
|
46 | type_metadata_storage_1.TypeMetadataStorage.addResolverPropertyMetadata({
|
47 | kind: 'external',
|
48 | methodName: key,
|
49 | schemaName: options.name || key,
|
50 | target: target.constructor,
|
51 | typeFn,
|
52 | typeOptions,
|
53 | description: options.description,
|
54 | deprecationReason: options.deprecationReason,
|
55 | complexity: options.complexity,
|
56 | });
|
57 | });
|
58 | };
|
59 | }
|
60 | exports.ResolveField = ResolveField;
|