UNPKG

5.8 kBJavaScriptView Raw
1#!/usr/bin/env node
2"use strict";
3var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11var __generator = (this && this.__generator) || function (thisArg, body) {
12 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14 function verb(n) { return function (v) { return step([n, v]); }; }
15 function step(op) {
16 if (f) throw new TypeError("Generator is already executing.");
17 while (_) try {
18 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19 if (y = 0, t) op = [op[0] & 2, t.value];
20 switch (op[0]) {
21 case 0: case 1: t = op; break;
22 case 4: _.label++; return { value: op[1], done: false };
23 case 5: _.label++; y = op[1]; op = [0]; continue;
24 case 7: op = _.ops.pop(); _.trys.pop(); continue;
25 default:
26 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30 if (t[2]) _.ops.pop();
31 _.trys.pop(); continue;
32 }
33 op = body.call(thisArg, _);
34 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36 }
37};
38Object.defineProperty(exports, "__esModule", { value: true });
39var fs = require("fs");
40var yargs = require("yargs");
41var mkdirp = require("mkdirp");
42var path = require("path");
43var PrismaGenerator_1 = require("./PrismaGenerator");
44var PrismaTypescriptGenerator_1 = require("./PrismaTypescriptGenerator");
45var PrismaFlowGenerator_1 = require("./PrismaFlowGenerator");
46var graphql_1 = require("graphql");
47var graphql_import_1 = require("graphql-import");
48var argv = yargs
49 .usage("Usage: $0 -i [input] -g [generator] -b [outputBinding]")
50 .options({
51 input: {
52 alias: 'i',
53 describe: 'Path to schema.graphql, schema.js or schema.ts file',
54 type: 'string',
55 },
56 // schema path instead
57 language: {
58 alias: 'l',
59 describe: 'Type of the generator. Available generators: typescript, javascript, flow',
60 type: 'string',
61 },
62 outputBinding: {
63 alias: 'b',
64 describe: 'Output binding. Example: binding.ts',
65 type: 'string',
66 },
67 outputTypedefs: {
68 alias: 't',
69 describe: 'Output type defs. Example: typeDefs.graphql',
70 type: 'string',
71 },
72})
73 .demandOption(['i', 'l', 'b']).argv;
74run(argv).catch(function (e) { return console.error(e); });
75function run(argv) {
76 return __awaiter(this, void 0, void 0, function () {
77 var input, language, outputBinding, outputTypedefs, schema, args, generatorInstance, code;
78 return __generator(this, function (_a) {
79 input = argv.input, language = argv.language, outputBinding = argv.outputBinding, outputTypedefs = argv.outputTypedefs;
80 schema = getSchemaFromInput(input);
81 args = {
82 schema: schema,
83 inputSchemaPath: path.resolve(input),
84 outputBindingPath: path.resolve(outputBinding),
85 };
86 if (language === 'typescript') {
87 require('ts-node').register();
88 }
89 switch (language) {
90 case 'typescript':
91 generatorInstance = new PrismaTypescriptGenerator_1.PrismaTypescriptGenerator(args);
92 break;
93 case 'flow':
94 generatorInstance = new PrismaFlowGenerator_1.PrismaFlowGenerator(args);
95 break;
96 default:
97 generatorInstance = new PrismaGenerator_1.PrismaGenerator(args);
98 }
99 code = generatorInstance.render();
100 mkdirp(path.dirname(outputBinding));
101 fs.writeFileSync(outputBinding, code);
102 if (outputTypedefs) {
103 mkdirp(path.dirname(outputTypedefs));
104 fs.writeFileSync(outputTypedefs, graphql_1.printSchema(schema));
105 }
106 console.log('Done generating binding');
107 return [2 /*return*/];
108 });
109 });
110}
111function getSchemaFromInput(input) {
112 if (input.endsWith('.graphql') || input.endsWith('.gql')) {
113 return graphql_1.buildSchema(graphql_import_1.importSchema(input));
114 }
115 if (input.endsWith('.js') || input.endsWith('.ts')) {
116 if (input.endsWith('.ts')) {
117 require('ts-node').register();
118 }
119 var schema = require(path.resolve(input));
120 if (schema.default) {
121 return schema.default;
122 }
123 return schema;
124 }
125}
126//# sourceMappingURL=bin.js.map
\No newline at end of file