All files / src/start-application start-application.injectable.ts

100% Statements 32/32
100% Branches 5/5
100% Functions 1/1
100% Lines 32/32

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 331x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 5x 5x 5x 5x 5x 5x 5x 5x 5x 4x 3x 1x 5x 1x 1x 1x 1x 1x  
import { getInjectable, getInjectionToken } from "@ogre-tools/injectable";
import { runManyFor } from "@k8slens/run-many";
import * as timeSlots from "./time-slots";
 
export type StartApplication = () => Promise<void>;
 
export const startApplicationInjectionToken = getInjectionToken<StartApplication>({
  id: "start-application-injection-token",
});
 
const startApplicationInjectable = getInjectable({
  id: "start-application",
 
  instantiate: (di): StartApplication => {
    const runManyAsync = runManyFor(di);
    const beforeApplicationIsLoading = runManyAsync(
      timeSlots.beforeApplicationIsLoadingInjectionToken,
    );
    const onLoadOfApplication = runManyAsync(timeSlots.onLoadOfApplicationInjectionToken);
    const afterApplicationIsLoaded = runManyAsync(timeSlots.afterApplicationIsLoadedInjectionToken);
 
    return async () => {
      await beforeApplicationIsLoading();
      await onLoadOfApplication();
      await afterApplicationIsLoaded();
    };
  },
 
  injectionToken: startApplicationInjectionToken,
});
 
export default startApplicationInjectable;