Statiq.Framework

A flexible and extensible static content generation framework for .NET.

MIT License

Stars
425

Bot releases are hidden (Show)

Statiq.Framework - 1.0.0-beta.72 Latest Release

Published by daveaglick 9 months ago

  • Added a DocumentSourceComparer class that implements IEqualityComparer<IDocument> and can be used to compare documents by source path.
  • Added a IEnumerable<IDocument>.ContainsBySource() extension method to check if a collection of documents contains a document with a given source path.
  • Added an improved warning message and early exit out of recursive settings expansion.
  • Added a MediaTypes.IsMediaType() method to help determine if a given path matches specified media type(s).
Statiq.Framework - 1.0.0-beta.71

Published by daveaglick about 1 year ago

  • Modified the behavior of computed metadata values to cache the value for a given document when using the => prefix. The previous behavior that evaluates a computed value every time it's accessed can still be used by prefixing with -> instead. In theory this change shouldn't result in any differences in behavior since documents are immutable in the first place (so caching wouldn't be any different from re-evaluating), but if you have computed metadata values that consider state outside the document (such as something like DateTime.Now), you'll need to switch those to use the -> prefix instead.
  • Updated JavaScriptEngineSwitcher.Core and JavaScriptEngineSwitcher.Jint.
  • Updated highlight.js used in Statiq.Highlight (#269).
Statiq.Framework - 1.0.0-beta.70

Published by daveaglick over 1 year ago

  • Updated Markdig to 0.31.0 to fix an upstream bug when using alt text on images (#267).
  • Updated Spectre.Console (#247, thanks @devlead).
  • Updated JavaScriptEngineSwitcher (#246, thanks @devlead).
  • Updated Microsoft.Data.SqlClient (#248, thanks @devlead).
  • Updated System.Linq.Async (#249, thanks @devlead).
  • Updated YamlDotNet (#263, thanks @NikoMix).
  • Updated NetEscapades.Configuration.Yaml in reaction to update to YamlDotNet.
  • Ensures that the GenerateFeeds module always sets a feed title, even if one isn't provided.
  • Added a warning to GenerateFeeds if a feed link isn't set, either through the Host setting or otherwise.
Statiq.Framework - 1.0.0-beta.69

Published by daveaglick over 1 year ago

  • Added a configurator for the IEngineManager and a corresponding bootstrapper ConfigureEngineManager() extension method to allow customizing the engine manager used in most commands just prior to it executing the engine (useful for last-minute pipeline customization and some other niche use cases).
Statiq.Framework - 1.0.0-beta.68

Published by daveaglick over 1 year ago

  • Improved the HttpClient.SendWithRetryAsync() extension to log retries at the information level since they may indicate other problems, and to retry during internal HttpClient timeouts.
  • Improved exception logging to the console by making sure internal cancellations and timeout exceptions are logged (previously they were silent, which could create the impression nothing went wrong).
Statiq.Framework - 1.0.0-beta.67

Published by daveaglick over 1 year ago

  • Fixed a bug that still resulted in file cleaning even when CleanMode.None is set (I.e. --noclean).
  • RenderMarkdown no longer escapes @ characters inside mailto links (#254).
  • Added a EscapeAtInMarkdown setting that can control @ escaping in Markdown files by the RenderMarkdown module on a file-by-file basis (#254).
Statiq.Framework - 1.0.0-beta.66

Published by daveaglick over 1 year ago

  • Fixed a bug in ExtractFrontMatter to ensure front matter is extracted when the delimiter is on the last line of the file.
Statiq.Framework - 1.0.0-beta.65

Published by daveaglick almost 2 years ago

  • Added a new pipeline PostProcessHasDependencies property that indicates the post-process phase of a pipeline should depend on the post-process phase(s) of the pipeline dependencies. This is helpful in certain situations where you need a pipeline to run after other post-process phases from dependencies.
  • Added a GenerateRedirects.AlwaysCreateAdditionalOutput() method to allow creating additional redirect files even if no redirects are specified (I.e. if redirects are also being generated from another source).
  • Added additional overloads to GenerateRedirects.WithAdditionalOutput() that can accept the execution context in the delegate and/or return a Task.
Statiq.Framework - 1.0.0-beta.64

Published by daveaglick almost 2 years ago

  • Fixed ElseIf when Predicate.RequiresDocument is false in ExecuteIf module (#255, #256, thanks @nils-a).
  • Adds the ability to configure a specific date/time as "current". All code and themes should now use IExecutionState.GetCurrentDateTime() instead of DateTime.Now, etc.
  • Removes console background color for better compatibility with different console themes (#257).
  • Outputs the configured log level on execution.
Statiq.Framework - 1.0.0-beta.63

Published by daveaglick almost 2 years ago

  • Fixed generation of document source paths for symbols in AnalyzeCSharp to use the symbol ID and generate shorter names so very long symbols don't create paths that are too long (#244).
Statiq.Framework - 1.0.0-beta.62

Published by daveaglick over 2 years ago

  • Changed Statiq.App.props to Statiq.App.targets to resolve some import ordering bugs.
  • Added a Keys.IgnoreExternalDestinations setting to ignore when document destinations are not relative to the output path since some use cases may require writing documents elsewhere.
Statiq.Framework - 1.0.0-beta.61

Published by daveaglick over 2 years ago

  • Updated the referenced version of ImageSharp in the Statiq.Images library (#242, thanks @olevett).
  • Fixed some HtmlKeys copy-paste errors (#240, thanks @pascalberger).
Statiq.Framework - 1.0.0-beta.60

Published by daveaglick over 2 years ago

  • Added support for surfacing tuple information in the AnalyzeCSharp module.
Statiq.Framework - 1.0.0-beta.59

Published by daveaglick over 2 years ago

  • Added support for regular expressions to the ExtractFrontMatter module (#231).
  • Added IPipelineOutputs.ExceptPipelines() extension method to get outputs from all but a set of specified pipelines.
  • IPipelineOutputs.ExceptPipeline() now returns documents in natural order like IPipelineOutputs.FromPipeline() does.
  • Added AnalyzeCSharp.IncludeEmptyNamespaces() option to control whether recursively empty namespaces are output.
Statiq.Framework - 1.0.0-beta.58

Published by daveaglick over 2 years ago

  • Updated Buildalyzer in Statiq.CodeAnalysis to 4.1.0 which removes some dependencies on .NET Framework and resolves some package resolution problems.
Statiq.Framework - 1.0.0-beta.57

Published by daveaglick over 2 years ago

  • Added support for "raw" code fences to the RenderMarkdown module that bypasses markdown processing.
  • Fixed a bug when instantiating a ShortcodeResult from the bootstrapper due to lack of availability of an execution context (since the engine hasn't been created yet).
  • Added WithNestedElements() to the GatherHeadings module to control whether nested HTML element content is included in the heading text (the default is now that it is not, other than links).
  • Fixed a bug with certain modules double-encoding character references (https://github.com/statiqdev/Statiq.Web/issues/981).
  • Added a new StartProcessArgument class and WithArgument()/WithArguments() methods to the StartProcess module that makes it easier to define multiple arguments inside a single config delegate.
Statiq.Framework - 1.0.0-beta.56

Published by daveaglick over 2 years ago

  • Added DocumentList<TDocument>.GetDestination(NormalizedPath destinationPath), .GetSource(NormalizedPath sourcePath), and .GetRelativeSource(NormalizedPath sourcePath) to better provide single document results from a document list.
  • Added IPipelineOutputs.GetDestination(NormalizedPath destinationPath), .GetSource(NormalizedPath sourcePath), and .GetRelativeSource(NormalizedPath sourcePath) to better provide single document results from pipeline output collections.
  • Added IDocument.Timestamp that holds a timestamp of document instantiation and is useful for ordering documents based on "most recent" semantics.
  • Uses the new IDocument.Timestamp property to order certain document results like the PipelineOutputs enumerator, PipelineOutputs.ExceptPipeline(), IEnumerable<IDocument>.FilterDestinations(), and IEnumerable<IDocument>.FilterSources() in descending creation order (in other words, document results that otherwise don't have a natural order are ordered by timestamp now) (#226).
  • Fixed a bug when multiple modules call IEngine.GetJavaScriptEnginePool() for the first time concurrently.
  • Added CodeAnalysisKeys.Implements to the documents produced by the AnalyzeCSharp module to represent the interface member(s) being implemented by properties, events, and methods.
  • Added the ability to inject Sass variables via metadata by prefixing with "Sass_" which should make providing theme customizations a lot easier.
Statiq.Framework - 1.0.0-beta.55

Published by daveaglick almost 3 years ago

  • Added a new MarkdownExtensions metadata key that can add Markdown (I.e. Markdig) extension types per-document or per-execution using metadata/settings (#222).
  • Removed the recently added PathCollection.RemoveDefault() method and instead allow optionally specifying whether paths that get added to a PathCollection are removable (the default is true).
  • Removed the recently added notion of "initial settings" due to being confusing and instead moved settings initialization up in the order of bootstrapper operations (this shouldn't result in a breaking change, but be on the lookout for problems).
Statiq.Framework - 1.0.0-beta.54

Published by daveaglick almost 3 years ago

  • Added a new RetryModules module that provides simple retry behavior for it's child modules (it essentially wraps module execution with Polly).
  • Added a new PathCollection.RemoveDefault() method that only removes the default paths, and used it to clear only default paths when alternate input paths are specified on the command line.
Statiq.Framework - 1.0.0-beta.53

Published by daveaglick almost 3 years ago

  • Breaking change: IFileSystem must now be injected and passed to BaseCommand when creating custom commands that derive from it.
  • Breaking change: IEngine.FileSystem is now a IReadOnlyFileSystem instead of IFileSystem (I.e. the file system can no longer be edited one the engine has been created).
  • Breaking change: The file system can no longer be configured through Bootstrapper.ConfigureEngine() and must be done through Bootstrapper.ConfigureFileSystem() or one of the other more specific file system bootstrapper extensions like Bootstrapper.SetRootPath().
  • Changed the Statiq.Razor Razor compilers to use collectible assemblies in a custom load context for better memory usage and caching behavior. This isn't a breaking change but was somewhat risky so keep an eye out for any problems related to Razor compilation and please open issues if you notice any regressions.
  • Updated Markdig in Statiq.Markdown to 0.26.0.
  • Fixed a number of inconsistencies with the way the @ symbol was being escaped in Markdown documents (using \@ should now work reliably, see https://github.com/statiqdev/Discussions/discussions/109).
  • Engine now accepts a IReadOnlyFileSystem as a constructor argument (a new file system will be created if one is not provided).
  • Added bootstrapper support for "initial" settings which are set before other parts of the bootstrapper (like the file system or services). Use these new initial settings bootstrapper extensions when you need to add a setting very early in the bootstrapper process just after reading configuration files (for most use cases the existing settings extensions continue to be preferred).
  • Updated Buildalyzer in Statiq.CodeAnalysis to 3.2.6.
  • Updated Microsoft.CodeAnalysis.CSharp in Statiq.Core to 3.11.0.
  • Improved diagnostic logging of compilation message in Statiq.Razor.
  • Made the output ordering of the ReadFiles module deterministic which will help certain caching scenarios where cache codes are generated by combining output files including order.
  • Added a CacheDocuments.WithoutSourceMapping() extension to toggle a new mode for the CacheDocuments module where all inputs are mapped to all outputs and the entire cache is invalidated when one input changes.
  • Changed dynamic Razor assemblies to use the path and file name in their assembly names instead of a random file name (#220).
  • Added a warning when a Razor partial or view uses a @model directive that could be overridden by a @inherits directive in an import.