graphql-extensions
Advanced tools
Comparing version
@@ -1,13 +0,10 @@ | ||
import { GraphQLSchema, GraphQLError, GraphQLField, GraphQLFieldResolver, GraphQLResolveInfo, ExecutionArgs, DocumentNode } from 'graphql'; | ||
import { GraphQLSchema, GraphQLField, GraphQLFieldResolver, GraphQLResolveInfo, ExecutionArgs, DocumentNode } from 'graphql'; | ||
import { Request } from 'apollo-server-env'; | ||
export { Request } from 'apollo-server-env'; | ||
import { GraphQLResponse } from 'apollo-server-core/dist/requestPipelineAPI'; | ||
export { GraphQLResponse }; | ||
export declare type EndHandler = (...errors: Array<Error>) => void; | ||
export interface GraphQLResponse { | ||
data?: object; | ||
errors?: Array<GraphQLError & object>; | ||
extensions?: object; | ||
} | ||
export declare class GraphQLExtension<TContext = any> { | ||
requestDidStart?(o: { | ||
request: Request; | ||
request: Pick<Request, 'url' | 'method' | 'headers'>; | ||
queryString?: string; | ||
@@ -47,3 +44,3 @@ parsedQuery?: DocumentNode; | ||
requestDidStart(o: { | ||
request: Request; | ||
request: Pick<Request, 'url' | 'method' | 'headers'>; | ||
queryString?: string; | ||
@@ -50,0 +47,0 @@ parsedQuery?: DocumentNode; |
@@ -60,10 +60,22 @@ "use strict"; | ||
this.extensions.forEach(extension => { | ||
const endHandler = startInvoker(extension); | ||
if (endHandler) { | ||
endHandlers.push(endHandler); | ||
try { | ||
const endHandler = startInvoker(extension); | ||
if (endHandler) { | ||
endHandlers.push(endHandler); | ||
} | ||
} | ||
catch (error) { | ||
console.error(error); | ||
} | ||
}); | ||
return (...errors) => { | ||
endHandlers.reverse(); | ||
endHandlers.forEach(endHandler => endHandler(...errors)); | ||
for (const endHandler of endHandlers) { | ||
try { | ||
endHandler(...errors); | ||
} | ||
catch (error) { | ||
console.error(error); | ||
} | ||
} | ||
}; | ||
@@ -70,0 +82,0 @@ } |
{ | ||
"name": "graphql-extensions", | ||
"version": "0.2.1", | ||
"version": "0.3.0-alpha.0", | ||
"description": "Add extensions to GraphQL servers", | ||
"main": "./dist/index.js", | ||
"types": "./dist/index.d.ts", | ||
"scripts": { | ||
"clean": "rm -rf dist", | ||
"compile": "tsc", | ||
"prepare": "npm run clean && npm run compile", | ||
"lint": "prettier -l 'src/**/*.ts' && tslint -p tsconfig.json 'src/**/*.ts'", | ||
"lint-fix": "prettier --write 'src/**/*.ts' && tslint --fix -p tsconfig.json 'src/**/*.ts'" | ||
}, | ||
"repository": { | ||
@@ -23,4 +16,5 @@ "type": "git", | ||
}, | ||
"dependencies": { | ||
"apollo-server-env": "^2.0.3" | ||
"devDependencies": { | ||
"apollo-server-core": "2.2.0-alpha.0", | ||
"apollo-server-env": "2.1.0-alpha.0" | ||
}, | ||
@@ -30,3 +24,3 @@ "peerDependencies": { | ||
}, | ||
"gitHead": "86dd95e223460f8e1768141a8cefa58bcd409b03" | ||
"gitHead": "dec2b94a0e309c1c75b3e9f3d7b4011e36a7e48a" | ||
} |
import { | ||
GraphQLSchema, | ||
GraphQLError, | ||
GraphQLObjectType, | ||
@@ -17,2 +16,5 @@ getNamedType, | ||
import { GraphQLResponse } from 'apollo-server-core/dist/requestPipelineAPI'; | ||
export { GraphQLResponse }; | ||
export type EndHandler = (...errors: Array<Error>) => void; | ||
@@ -24,16 +26,7 @@ // A StartHandlerInvoker is a function that, given a specific GraphQLExtension, | ||
ext: GraphQLExtension<TContext>, | ||
) => void; | ||
) => EndHandler | void; | ||
// Copied from runQuery in apollo-server-core. | ||
// XXX Will this work properly if it's an identical interface of the | ||
// same name? | ||
export interface GraphQLResponse { | ||
data?: object; | ||
errors?: Array<GraphQLError & object>; | ||
extensions?: object; | ||
} | ||
export class GraphQLExtension<TContext = any> { | ||
public requestDidStart?(o: { | ||
request: Request; | ||
request: Pick<Request, 'url' | 'method' | 'headers'>; | ||
queryString?: string; | ||
@@ -78,3 +71,3 @@ parsedQuery?: DocumentNode; | ||
public requestDidStart(o: { | ||
request: Request; | ||
request: Pick<Request, 'url' | 'method' | 'headers'>; | ||
queryString?: string; | ||
@@ -165,5 +158,9 @@ parsedQuery?: DocumentNode; | ||
// Invoke the start handler, which may return an end handler. | ||
const endHandler = startInvoker(extension); | ||
if (endHandler) { | ||
endHandlers.push(endHandler); | ||
try { | ||
const endHandler = startInvoker(extension); | ||
if (endHandler) { | ||
endHandlers.push(endHandler); | ||
} | ||
} catch (error) { | ||
console.error(error); | ||
} | ||
@@ -176,3 +173,9 @@ }); | ||
endHandlers.reverse(); | ||
endHandlers.forEach(endHandler => endHandler(...errors)); | ||
for (const endHandler of endHandlers) { | ||
try { | ||
endHandler(...errors); | ||
} catch (error) { | ||
console.error(error); | ||
} | ||
} | ||
}; | ||
@@ -179,0 +182,0 @@ } |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
26508
1.5%1
-50%475
2.59%0
-100%2
Infinity%- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed