Introduce a apollo-server-plugin-base as a foundation for plugins.

This commit is contained in:
Jesse Rosenberger 2018-10-04 22:53:55 +03:00
parent 98d4fc3674
commit 94a146a07e
No known key found for this signature in database
GPG key ID: C0CCCF81AA6C08D8
7 changed files with 80 additions and 0 deletions

4
package-lock.json generated
View file

@ -2176,6 +2176,7 @@
"apollo-server-caching": "file:packages/apollo-server-caching",
"apollo-server-env": "file:packages/apollo-server-env",
"apollo-server-errors": "file:packages/apollo-server-errors",
"apollo-server-plugin-base": "file:packages/apollo-server-plugin-base",
"apollo-tracing": "file:packages/apollo-tracing",
"graphql-extensions": "file:packages/graphql-extensions",
"graphql-subscriptions": "^0.5.8",
@ -2321,6 +2322,9 @@
"micro": "^9.3.2"
}
},
"apollo-server-plugin-base": {
"version": "file:packages/apollo-server-plugin-base"
},
"apollo-tracing": {
"version": "file:packages/apollo-tracing",
"requires": {

View file

@ -0,0 +1,6 @@
*
!src/**/*
!dist/**/*
dist/**/*.test.*
!package.json
!README.md

View file

@ -0,0 +1,4 @@
# Change Log
### vNEXT

View file

@ -0,0 +1 @@
# `apollo-server-plugin-base`

View file

@ -0,0 +1,21 @@
{
"name": "apollo-server-plugin-base",
"version": "0.0.1",
"description": "Apollo Server plugin base classes",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"clean": "rm -rf dist",
"compile": "tsc",
"prepare": "npm run clean && npm run compile"
},
"keywords": [],
"author": "Apollo <opensource@apollographql.com>",
"license": "MIT",
"engines": {
"node": ">=6"
},
"dependencies": {
"apollo-server-caching": "file:../apollo-server-caching"
}
}

View file

@ -0,0 +1,35 @@
import { GraphQLSchema } from 'graphql';
import { KeyValueCache } from 'apollo-server-caching';
export abstract class ApolloServerPluginBase {
[key: string]: any;
constructor(public options?: any) {}
serverWillStart?(parent: any): void;
}
interface ApolloServerRequestListenerInterface {
start?(): void;
}
export abstract class ApolloServerRequestListenerBase
implements ApolloServerRequestListenerInterface {
constructor() {}
start?(): void;
}
interface PluginEventBase {
name: string;
args?: any;
}
export interface PluginEventServerWillStart extends PluginEventBase {
args: {
schema: GraphQLSchema;
persistedQueries?: {
cache: KeyValueCache;
};
engine?: any;
};
}
export type PluginEvent = PluginEventServerWillStart;

View file

@ -0,0 +1,9 @@
{
"extends": "../../tsconfig",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist"
},
"include": ["src/**/*"],
"exclude": ["**/__tests__", "**/__mocks__"]
}