UNPKG

1.35 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.Directive = void 0;
4const graphql_1 = require("graphql");
5const directive_parsing_error_1 = require("../schema-builder/errors/directive-parsing.error");
6const lazy_metadata_storage_1 = require("../schema-builder/storages/lazy-metadata.storage");
7const type_metadata_storage_1 = require("../schema-builder/storages/type-metadata.storage");
8/**
9 * Adds a directive to specified field, type, or handler.
10 */
11function Directive(sdl) {
12 return (target, key) => {
13 validateDirective(sdl);
14 lazy_metadata_storage_1.LazyMetadataStorage.store(() => {
15 if (key) {
16 type_metadata_storage_1.TypeMetadataStorage.addDirectivePropertyMetadata({
17 target: target.constructor,
18 fieldName: key,
19 sdl,
20 });
21 }
22 else {
23 type_metadata_storage_1.TypeMetadataStorage.addDirectiveMetadata({
24 target: target,
25 sdl,
26 });
27 }
28 });
29 };
30}
31exports.Directive = Directive;
32function validateDirective(sdl) {
33 try {
34 (0, graphql_1.parse)(`type String ${sdl}`);
35 }
36 catch (err) {
37 throw new directive_parsing_error_1.DirectiveParsingError(sdl);
38 }
39}