+4
-0
| # gqlx CLI Changelog | ||
| ## 0.3.0 | ||
| - Definition of static http headers for every outgoing request via `header` cli argument. See `gqlx-cli serve —help` for further details. | ||
| ## 0.2.1 | ||
@@ -4,0 +8,0 @@ |
@@ -1,3 +0,4 @@ | ||
| import { Request } from 'express'; | ||
| import { Request as ExpressRequest } from 'express'; | ||
| import { Service } from 'gqlx-apollo-express-server'; | ||
| import { RequestAPI, Request, Options, RequiredUriUrl } from 'request'; | ||
| import { ResolverApi, ServiceData } from '../types'; | ||
@@ -13,2 +14,2 @@ export declare const apiDefinition: { | ||
| }; | ||
| export declare function createApi(service: Service<ResolverApi, ServiceData>, req: Request | undefined): ResolverApi; | ||
| export declare function createApi(fetch: RequestAPI<Request, Options, RequiredUriUrl>, service: Service<ResolverApi, ServiceData>, req: ExpressRequest | undefined): ResolverApi; |
@@ -14,7 +14,7 @@ "use strict"; | ||
| }; | ||
| function createApi(service, req) { | ||
| function createApi(fetch, service, req) { | ||
| return { | ||
| del(url) { | ||
| const options = io_1.createOptions(service.data.url, url); | ||
| return io_1.request('DELETE', req, options); | ||
| return io_1.request(fetch, 'DELETE', req, options); | ||
| }, | ||
@@ -26,7 +26,7 @@ form(file, data) { | ||
| const options = io_1.createOptions(service.data.url, url); | ||
| return io_1.request('GET', req, options); | ||
| return io_1.request(fetch, 'GET', req, options); | ||
| }, | ||
| query(url, q) { | ||
| const options = io_1.createOptions(service.data.url, url, { query: q }); | ||
| return io_1.request('POST', req, options); | ||
| return io_1.request(fetch, 'POST', req, options); | ||
| }, | ||
@@ -38,7 +38,7 @@ listen(topic) { | ||
| const options = io_1.createOptions(service.data.url, url, body); | ||
| return io_1.request('POST', req, options); | ||
| return io_1.request(fetch, 'POST', req, options); | ||
| }, | ||
| put(url, body) { | ||
| const options = io_1.createOptions(service.data.url, url, body); | ||
| return io_1.request('PUT', req, options); | ||
| return io_1.request(fetch, 'PUT', req, options); | ||
| }, | ||
@@ -45,0 +45,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;AAEA,yCAAyC;AACzC,6BAA2D;AAG9C,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,SAAgB,SAAS,CAAC,OAA0C,EAAE,GAAwB;IAC5F,OAAO;QACL,GAAG,CAAC,GAA0B;YAC5B,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,YAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,IAAS,EAAE,IAAS;YACvB,OAAO,gBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAA0B;YAC5B,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,YAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,GAAW,EAAE,CAAS;YAC1B,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO,YAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,KAAa;YAClB,OAAO,sBAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,GAA6B,EAAE,IAAU;YAC5C,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,YAAO,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,GAAG,CAAC,GAA6B,EAAE,IAAU;YAC3C,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,YAAO,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC;AA7BD,8BA6BC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;AAEA,yCAAyC;AAEzC,6BAA2D;AAG9C,QAAA,aAAa,GAAG;IAC3B,GAAG,EAAE,IAAI;IACT,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,SAAgB,SAAS,CACvB,KAAmD,EACnD,OAA0C,EAC1C,GAA+B;IAE/B,OAAO;QACL,GAAG,CAAC,GAA0B;YAC5B,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,YAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,IAAS,EAAE,IAAS;YACvB,OAAO,gBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,GAA0B;YAC5B,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,YAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,GAAW,EAAE,CAAS;YAC1B,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO,YAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,CAAC,KAAa;YAClB,OAAO,sBAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,GAA6B,EAAE,IAAU;YAC5C,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,YAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QACD,GAAG,CAAC,GAA6B,EAAE,IAAU;YAC3C,MAAM,OAAO,GAAG,kBAAa,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,YAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC;AAjCD,8BAiCC"} |
+3
-2
@@ -1,5 +0,6 @@ | ||
| import { Request } from 'express'; | ||
| import { RequestAPI, Request, Options, RequiredUriUrl } from 'request'; | ||
| import { Request as ExpressRequest } from 'express'; | ||
| import { MutationOptions, QueryOptions } from '../types'; | ||
| export declare function request(method: string, req: Request | undefined, options: MutationOptions): Promise<unknown>; | ||
| export declare function request(fetch: RequestAPI<Request, Options, RequiredUriUrl>, method: string, req: ExpressRequest | undefined, options: MutationOptions): Promise<unknown>; | ||
| export declare function getFormData(upload: any, data: any): Promise<unknown>; | ||
| export declare function createOptions(host: string, pathOrOptions: string | (QueryOptions & Partial<MutationOptions>), body?: any): MutationOptions; |
+1
-2
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| const fetch = require("request"); | ||
| const url_1 = require("url"); | ||
@@ -9,3 +8,3 @@ const concat = require('concat-stream'); | ||
| } | ||
| function request(method, req, options) { | ||
| function request(fetch, method, req, options) { | ||
| return new Promise((resolve, reject) => { | ||
@@ -12,0 +11,0 @@ const headers = (req && req.headers) || {}; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/api/io.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"io.js","sourceRoot":"","sources":["../../src/api/io.ts"],"names":[],"mappings":"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"} |
@@ -12,6 +12,7 @@ import { Argv, Arguments } from 'yargs'; | ||
| debug?: boolean; | ||
| header?: string[]; | ||
| } | ||
| export declare const command = "serve <source>"; | ||
| export declare const describe = "Validates the schema from the given source gqlx file."; | ||
| export declare function builder(args: Argv): Argv<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<{ | ||
| export declare function builder(args: Argv): Argv<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<import("yargs").Omit<{ | ||
| source: unknown; | ||
@@ -27,2 +28,6 @@ } & { | ||
| } & { | ||
| header: (string | number)[] | undefined; | ||
| }, "header"> & { | ||
| header: never[]; | ||
| } & { | ||
| "service-url": string | undefined; | ||
@@ -29,0 +34,0 @@ } & { |
@@ -5,2 +5,3 @@ "use strict"; | ||
| const bodyParser = require("body-parser"); | ||
| const request = require("request"); | ||
| const path_1 = require("path"); | ||
@@ -23,2 +24,6 @@ const inspector_1 = require("inspector"); | ||
| .default('host', 'http://localhost') | ||
| .array('header') | ||
| .describe('header', 'Additional http headers to be set on every request') | ||
| .example('$0 serve --header="Authorization=Bearer *****"', 'sets the Authorization header to "Bearer *****" for every request') | ||
| .default('header', []) | ||
| .string('service-url') | ||
@@ -53,2 +58,9 @@ .describe('service-url', 'The root URL of the service target, if any.') | ||
| const app = express(); | ||
| const fetch = request.defaults({ | ||
| headers: argv.header && | ||
| argv.header | ||
| .map(arg => arg.split('=', 2)) // split key=value | ||
| .filter(tuple => tuple.length === 2 && tuple[1]) // remove elements without a value | ||
| .reduce((headers, [key, value]) => (Object.assign({}, headers, { [key]: headers[key] ? [...headers[key], value] : [value] })), {}), | ||
| }); | ||
| const gqlxServer = gqlx_apollo_express_server_1.configureGqlx({ | ||
@@ -61,3 +73,5 @@ port: argv.port, | ||
| }, | ||
| createApi, | ||
| createApi(...args) { | ||
| return createApi(fetch, ...args); | ||
| }, | ||
| services: [originalService], | ||
@@ -64,0 +78,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "gqlx-cli", | ||
| "description": "Command line utility for GraphQL eXtended.", | ||
| "version": "0.2.1", | ||
| "version": "0.3.0", | ||
| "main": "dist", | ||
@@ -6,0 +6,0 @@ "types": "dist", |
+12
-7
@@ -1,4 +0,5 @@ | ||
| import { Request } from 'express'; | ||
| import { Request as ExpressRequest } from 'express'; | ||
| import { Service } from 'gqlx-apollo-express-server'; | ||
| import { subscribeTo } from './listener'; | ||
| import { RequestAPI, Request, Options, RequiredUriUrl } from 'request'; | ||
| import { createOptions, request, getFormData } from './io'; | ||
@@ -17,7 +18,11 @@ import { ResolverApi, QueryOptions, MutationOptions, ServiceData } from '../types'; | ||
| export function createApi(service: Service<ResolverApi, ServiceData>, req: Request | undefined): ResolverApi { | ||
| export function createApi( | ||
| fetch: RequestAPI<Request, Options, RequiredUriUrl>, | ||
| service: Service<ResolverApi, ServiceData>, | ||
| req: ExpressRequest | undefined, | ||
| ): ResolverApi { | ||
| return { | ||
| del(url: string | QueryOptions) { | ||
| const options = createOptions(service.data.url, url); | ||
| return request('DELETE', req, options); | ||
| return request(fetch, 'DELETE', req, options); | ||
| }, | ||
@@ -29,7 +34,7 @@ form(file: any, data: any) { | ||
| const options = createOptions(service.data.url, url); | ||
| return request('GET', req, options); | ||
| return request(fetch, 'GET', req, options); | ||
| }, | ||
| query(url: string, q: string) { | ||
| const options = createOptions(service.data.url, url, { query: q }); | ||
| return request('POST', req, options); | ||
| return request(fetch, 'POST', req, options); | ||
| }, | ||
@@ -41,9 +46,9 @@ listen(topic: string) { | ||
| const options = createOptions(service.data.url, url, body); | ||
| return request('POST', req, options); | ||
| return request(fetch, 'POST', req, options); | ||
| }, | ||
| put(url: string | MutationOptions, body?: any) { | ||
| const options = createOptions(service.data.url, url, body); | ||
| return request('PUT', req, options); | ||
| return request(fetch, 'PUT', req, options); | ||
| }, | ||
| }; | ||
| } |
+8
-3
@@ -1,3 +0,3 @@ | ||
| import * as fetch from 'request'; | ||
| import { Request } from 'express'; | ||
| import { RequestAPI, Request, Options, RequiredUriUrl } from 'request'; | ||
| import { Request as ExpressRequest } from 'express'; | ||
| import { resolve } from 'url'; | ||
@@ -12,3 +12,8 @@ import { MutationOptions, QueryOptions } from '../types'; | ||
| export function request(method: string, req: Request | undefined, options: MutationOptions) { | ||
| export function request( | ||
| fetch: RequestAPI<Request, Options, RequiredUriUrl>, | ||
| method: string, | ||
| req: ExpressRequest | undefined, | ||
| options: MutationOptions, | ||
| ) { | ||
| return new Promise((resolve, reject) => { | ||
@@ -15,0 +20,0 @@ const headers = (req && req.headers) || {}; |
| import * as express from 'express'; | ||
| import * as bodyParser from 'body-parser'; | ||
| import * as request from 'request'; | ||
| import { resolve } from 'path'; | ||
| import { Argv, Arguments } from 'yargs'; | ||
| import { open } from 'inspector'; | ||
| import { configureGqlx, createService } from 'gqlx-apollo-express-server'; | ||
| import { configureGqlx, createService, Service } from 'gqlx-apollo-express-server'; | ||
| import { readFile, watch } from '../utils'; | ||
@@ -19,2 +20,3 @@ | ||
| debug?: boolean; | ||
| header?: string[]; | ||
| } | ||
@@ -37,2 +39,9 @@ | ||
| .default('host', 'http://localhost') | ||
| .array('header') | ||
| .describe('header', 'Additional http headers to be set on every request') | ||
| .example( | ||
| '$0 serve --header="Authorization=Bearer *****"', | ||
| 'sets the Authorization header to "Bearer *****" for every request', | ||
| ) | ||
| .default('header', []) | ||
| .string('service-url') | ||
@@ -74,2 +83,15 @@ .describe('service-url', 'The root URL of the service target, if any.') | ||
| const app = express(); | ||
| const fetch = request.defaults({ | ||
| headers: | ||
| argv.header && | ||
| argv.header | ||
| .map(arg => arg.split('=', 2)) // split key=value | ||
| .filter(tuple => tuple.length === 2 && tuple[1]) // remove elements without a value | ||
| .reduce( | ||
| (headers, [key, value]) => ({ ...headers, [key]: headers[key] ? [...headers[key], value] : [value] }), | ||
| {}, | ||
| ), | ||
| }); | ||
| const gqlxServer = configureGqlx({ | ||
@@ -82,3 +104,5 @@ port: argv.port, | ||
| }, | ||
| createApi, | ||
| createApi(...args) { | ||
| return createApi(fetch, ...args); | ||
| }, | ||
| services: [originalService], | ||
@@ -85,0 +109,0 @@ }); |
50006
7.26%933
5.9%22
450%