// ========================================================================== // Squidex Headless CMS // ========================================================================== // Copyright (c) Squidex UG (haftungsbeschraenkt) // All rights reserved. Licensed under the MIT license. // ========================================================================== using Squidex.Infrastructure; namespace Squidex.Web { public readonly struct Deferred { private readonly Lazy> value; public Task Value { get => value.Value; } private Deferred(Func> value) { this.value = new Lazy>(value); } public static Deferred Response(Func factory) { Guard.NotNull(factory); return new Deferred(() => Task.FromResult(factory())); } public static Deferred AsyncResponse(Func> factory) { Guard.NotNull(factory); return new Deferred(async () => (await factory())!); } } }