using System; using Oqtane.Shared; namespace Oqtane.Models { /// /// Resource Objects describe a JavaScript or CSS file which is needed by the Module to work. /// public class Resource { private string _url; /// /// A so the Interop can properly create `script` or `link` tags /// public ResourceType ResourceType { get; set; } /// /// Path to the resource (note that querytring parameters can be included for cache busting ie. ?v=#) /// public string Url { get => _url; set { _url = (value.Contains("://")) ? value : (!value.StartsWith("/") && !value.StartsWith("~") ? "/" : "") + value; } } /// /// Integrity checks to increase the security of resources accessed. Especially common in CDN resources. /// public string Integrity { get; set; } /// /// Cross-Origin rules for this Resources. Usually `anonymous` /// public string CrossOrigin { get; set; } /// /// For Scripts a Bundle can be used to identify dependencies and ordering in the script loading process /// public string Bundle { get; set; } /// /// For Stylesheets this defines the relative position for cascading purposes /// public ResourceLevel Level { get; set; } /// /// For Scripts this defines if the resource should be included in the Head or Body /// public ResourceLocation Location { get; set; } /// /// For Scripts this allows type="module" registrations - not applicable to Stylesheets /// public bool ES6Module { get; set; } /// /// Allows specification of inline script - not applicable to Stylesheets /// public string Content { get; set; } /// /// The namespace of the component that declared the resource - only used in SiteRouter /// public string Namespace { get; set; } [Obsolete("ResourceDeclaration is deprecated", false)] public ResourceDeclaration Declaration { get; set; } } }