UNPKG

3.52 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var isGlob = require("is-glob");
4var isValidPath = require("is-valid-path");
5var chalk_1 = require("chalk");
6var glob = require("glob");
7var graphql_tools_1 = require("graphql-tools");
8var fs_1 = require("fs");
9var graphql_import_1 = require("graphql-import");
10var path = require("path");
11var fs = require("fs");
12var errors_1 = require("../../errors");
13var SchemaFromTypedefs = /** @class */ (function () {
14 function SchemaFromTypedefs() {
15 }
16 SchemaFromTypedefs.prototype.canHandle = function (globPath) {
17 return isGlob(globPath) || (isValidPath(globPath) && globPath.endsWith('.graphql'));
18 };
19 SchemaFromTypedefs.prototype.handle = function (globPath, cliOptions) {
20 var globFiles = glob.sync(globPath, { cwd: process.cwd() });
21 if (!globFiles || globFiles.length === 0) {
22 throw new errors_1.DetailedError("\n \n Unable to find matching files for glob: " + globPath + "\n\n Please check following:\n\n CLI: \n \n $ gql-gen --schema " + globPath + " ...\n\n API:\n \n generate({\n schema: '" + globPath + "',\n ...\n });\n\n ");
23 }
24 var mergeLogic = function (arr) { return arr; };
25 if ('mergeSchema' in cliOptions) {
26 var patternArr = cliOptions.mergeSchema.split('#');
27 var mergeModuleName = patternArr[0];
28 var mergeFunctionName = patternArr[1];
29 if (!mergeModuleName || !mergeFunctionName) {
30 throw new errors_1.DetailedError("\n\n You have to specify your merge logic with 'mergeSchema' option.\n\n The pattern is following:\n \n " + chalk_1.default.bold('path/to/file') + "#" + chalk_1.default.bold('merge') + "\n\n - path/to/file - points to JavaScript module\n - merge - name of exported function\n \n \n CLI:\n\n $ gql-gen --mergeSchema path/to/file#merge\n\n API:\n\n generate({\n mergeSchema: 'path/to/file#merge',\n ...\n });\n\n ");
31 }
32 var localFilePath = path.resolve(process.cwd(), mergeModuleName);
33 var localFileExists = fs.existsSync(localFilePath);
34 var mergeModule = require(localFileExists ? localFilePath : mergeModuleName);
35 if (!(mergeFunctionName in mergeModule)) {
36 throw new errors_1.DetailedError("\n \n Provided " + mergeFunctionName + " function couldn't be found in " + mergeModule + "\n\n You probably forgot to export " + mergeFunctionName + " function\n\n export const " + mergeFunctionName + " ...\n\n ");
37 }
38 mergeLogic = mergeModule[mergeFunctionName];
39 }
40 var typeDefs = globFiles.length > 1
41 ? mergeLogic(globFiles.map(function (filePath) { return fs_1.readFileSync(filePath, 'utf-8'); }))
42 : graphql_import_1.importSchema(globFiles[0]);
43 return graphql_tools_1.makeExecutableSchema({
44 typeDefs: typeDefs,
45 allowUndefinedInResolve: true,
46 resolvers: {},
47 resolverValidationOptions: { requireResolversForResolveType: false }
48 });
49 };
50 return SchemaFromTypedefs;
51}());
52exports.SchemaFromTypedefs = SchemaFromTypedefs;
53//# sourceMappingURL=schema-from-typedefs.js.map
\No newline at end of file