1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.Resolver = void 0;
|
4 | const common_1 = require("@nestjs/common");
|
5 | const constants_1 = require("@nestjs/common/constants");
|
6 | const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
|
7 | require("reflect-metadata");
|
8 | const lazy_metadata_storage_1 = require("../schema-builder/storages/lazy-metadata.storage");
|
9 | const type_metadata_storage_1 = require("../schema-builder/storages/type-metadata.storage");
|
10 | const resolvers_utils_1 = require("./resolvers.utils");
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | function getObjectOrInterfaceTypeNameIfExists(nameOrType) {
|
16 | const ctor = (0, resolvers_utils_1.getClassOrUndefined)(nameOrType);
|
17 | const objectMetadata = type_metadata_storage_1.TypeMetadataStorage.getObjectTypeMetadataByTarget(ctor);
|
18 | if (!objectMetadata) {
|
19 | const interfaceMetadata = type_metadata_storage_1.TypeMetadataStorage.getInterfaceMetadataByTarget(ctor);
|
20 | if (!interfaceMetadata) {
|
21 | return;
|
22 | }
|
23 | return interfaceMetadata.name;
|
24 | }
|
25 | return objectMetadata.name;
|
26 | }
|
27 |
|
28 |
|
29 |
|
30 | function Resolver(nameOrTypeOrOptions, options) {
|
31 | return (target, key, descriptor) => {
|
32 | if (typeof target === 'function') {
|
33 | (0, common_1.SetMetadata)(constants_1.ENTRY_PROVIDER_WATERMARK, true)(target);
|
34 | }
|
35 | const [nameOrType, resolverOptions] = typeof nameOrTypeOrOptions === 'object' && nameOrTypeOrOptions !== null
|
36 | ? [undefined, nameOrTypeOrOptions]
|
37 | : [nameOrTypeOrOptions, options];
|
38 | let name = nameOrType && (0, resolvers_utils_1.getClassName)(nameOrType);
|
39 | if ((0, shared_utils_1.isFunction)(nameOrType)) {
|
40 | const objectName = getObjectOrInterfaceTypeNameIfExists(nameOrType);
|
41 | objectName && (name = objectName);
|
42 | }
|
43 | (0, resolvers_utils_1.addResolverMetadata)(undefined, name, target, key, descriptor);
|
44 | if (!(0, shared_utils_1.isString)(nameOrType)) {
|
45 | lazy_metadata_storage_1.LazyMetadataStorage.store(target, () => {
|
46 | const typeFn = (0, resolvers_utils_1.getResolverTypeFn)(nameOrType, target);
|
47 | type_metadata_storage_1.TypeMetadataStorage.addResolverMetadata({
|
48 | target: target,
|
49 | typeFn: typeFn,
|
50 | isAbstract: (resolverOptions && resolverOptions.isAbstract) || false,
|
51 | });
|
52 | });
|
53 | }
|
54 | };
|
55 | }
|
56 | exports.Resolver = Resolver;
|