From 5dd2d20ccb05ee31ece1351c9c6000794eb6ee2e Mon Sep 17 00:00:00 2001 From: Matthew Francis Brunetti Date: Thu, 18 Mar 2021 03:26:28 -0400 Subject: [PATCH] feat: Implement smart default onCrash --- src/interfaces/ServiceConfig.ts | 2 +- src/validateAndNormalizeConfig.ts | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/interfaces/ServiceConfig.ts b/src/interfaces/ServiceConfig.ts index e3cc197..0114116 100644 --- a/src/interfaces/ServiceConfig.ts +++ b/src/interfaces/ServiceConfig.ts @@ -69,7 +69,7 @@ export interface ServiceConfig { /** * A function to be executed each time the service crashes. - * Defaults to `() => {}`. + * Defaults to `ctx => { if (!ctx.isServiceReady) throw new Error('Crashed before becoming ready') }`. * * This function is called with an {@link OnCrashContext} object as its only argument. * diff --git a/src/validateAndNormalizeConfig.ts b/src/validateAndNormalizeConfig.ts index 8d59a4b..42e03aa 100644 --- a/src/validateAndNormalizeConfig.ts +++ b/src/validateAndNormalizeConfig.ts @@ -80,11 +80,13 @@ function processServiceConfig( const merged = { dependencies: [], cwd: '.', - // no default command + command: undefined, // no default command env: process.env, ready: () => Promise.resolve(), forceKillTimeout: 5000, - onCrash: () => {}, + onCrash: (ctx: OnCrashContext) => { + if (!ctx.isServiceReady) throw new Error('Crashed before becoming ready') + }, logTailLength: 0, minimumRestartDelay: 1000, ...removeUndefinedProperties(defaults),