index.js 979 B

123456789101112131415161718192021222324
  1. import { AbortController } from 'node-abort-controller';
  2. import { Stopper } from './stoppable.js';
  3. export function ApolloServerPluginDrainHttpServer(options) {
  4. const stopper = new Stopper(options.httpServer);
  5. return {
  6. async serverWillStart() {
  7. return {
  8. async drainServer() {
  9. const hardDestroyAbortController = new AbortController();
  10. const stopGracePeriodMillis = options.stopGracePeriodMillis ?? 10000;
  11. let timeout;
  12. if (stopGracePeriodMillis < Infinity) {
  13. timeout = setTimeout(() => hardDestroyAbortController.abort(), stopGracePeriodMillis);
  14. }
  15. await stopper.stop(hardDestroyAbortController.signal);
  16. if (timeout) {
  17. clearTimeout(timeout);
  18. }
  19. },
  20. };
  21. },
  22. };
  23. }
  24. //# sourceMappingURL=index.js.map