invokeHooks.js 951 B

12345678910111213141516171819202122232425262728293031
  1. import { isDefined } from './isDefined.js';
  2. export async function invokeDidStartHook(targets, hook) {
  3. const didEndHooks = (await Promise.all(targets.map((target) => hook(target)))).filter(isDefined);
  4. didEndHooks.reverse();
  5. return async (...args) => {
  6. for (const didEndHook of didEndHooks) {
  7. didEndHook(...args);
  8. }
  9. };
  10. }
  11. export function invokeSyncDidStartHook(targets, hook) {
  12. const didEndHooks = targets
  13. .map((target) => hook(target))
  14. .filter(isDefined);
  15. didEndHooks.reverse();
  16. return (...args) => {
  17. for (const didEndHook of didEndHooks) {
  18. didEndHook(...args);
  19. }
  20. };
  21. }
  22. export async function invokeHooksUntilDefinedAndNonNull(targets, hook) {
  23. for (const target of targets) {
  24. const value = await hook(target);
  25. if (value != null) {
  26. return value;
  27. }
  28. }
  29. return null;
  30. }
  31. //# sourceMappingURL=invokeHooks.js.map