All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add configurable
default_json_depthsetting inDatum.ymlto controlConvertTo-Jsonserialization depth (default:4) (#136). - Add integration tests for deep structure merge and truncation warning detection (#136).
- Added complete documentation system under
docs/with index and seven reference guides:AboutDatum.md— module overview, core concepts, and examples.CmdletReference.md— full parameter reference for all public functions.DatumYml.md—Datum.ymlconfiguration reference (stores, resolution precedence, merge defaults, handlers).Merging.md— merge strategies, data types, knockout prefix, and per-key configuration.DatumHandlers.md— handler system, ProtectedData, InvokeCommand, and custom handler authoring.RSOP.md— RSOP computation, filtering, source tracking, caching, and troubleshooting.CodeLayers.md— conceptual guide to layering DSC code with Roles and Configurations backed by Datum data.
- Documented
$env:DatumRsopIndentationenvironment variable in RSOP.md. - Added AllNodes iteration examples for both flat and nested directory layouts in README.md, RSOP.md, and AboutDatum.md.
- Support conditional
ResolutionPrecedenceentries usingDatum.InvokeCommandexpressions ([x= ... =]). Entries that evaluate to$nullor empty strings are now silently skipped instead of causing lookup errors. - Added knockout support for hashtable array items.
- Added integration tests for environment variable resolution in
ResolutionPrecedencepaths (#126).
- Rewrote README.md with structured sections, table of contents, installation guide, merge strategy reference, handler documentation, and public function catalogue.
- Remove
SkipReasonfrom RSOP test cases due to resolved merge logic bug. - Adjusted integration tests for knockout of hashtable array items.
- Adjusted integration tests for hashtable array merge behauvior 'Sum'.
- Add integration test for conditional
ResolutionPrecedenceentry using an InvokeCommand expression that returns a path for some nodes and nothing for others.
- Fixed
Join-PaththrowingDriveNotFoundExceptionwhenResolutionPrecedenceentries contain environment variable references such as$($env:VarName), by using[System.IO.Path]::Combineinstead (#126). - Fix
ConvertTo-Jsontruncation warnings for deep data structures inMerge-Datum,Merge-Hashtable, andInvoke-TestHandlerAction(#136). - Fixed AllNodes iteration code samples that failed with nested
directory layouts (e.g.
AllNodes/Dev/DSCFile01.yml). - Fixed
-IncludeSourceoutput examples to show actual right-aligned annotations instead of fake__sourceYAML keys. - Fixed troubleshooting section referencing nonexistent
$rsop.SomeKey.__sourcepattern. - Documented
-IncludeSource/-RemoveSourcemutual exclusivity in RSOP.md and CmdletReference.md. - Fixed merging of hashtable array items using merge behaviour 'Sum'.
- Added Pester tests for credential handling.
- Added knockout support for basetype arrays.
- Added cleanup of knockout items.
- Use
powershell-yamlmodule for JSON file handling — JSON files are now parsed viaConvertFrom-Yaml(JSON is valid YAML 1.2), producingOrderedDictionaryobjects that receive full recursiveConvertTo-Datumprocessing including datum handler invocation (#154). - Improved error messages when parsing invalid JSON files — errors now reference the JSON file path instead of showing a confusing YAML parser error (#154).
- Adjusted integration tests for knockout of basetype array items and hashtables keys.
- Adjusted
Merge-DatumArrayto convert tuple key values to datum before merging - Added more tests to cover hash table merging with datum handlers (#155).
- Updated build scripts to Sampler 0.119.0-preview0005.
- Migrated all integration tests to Pester 5 syntax.
- Fixed
ConvertTo-Datumalways returns$nullwhen DatumHandler returns$false(#139). - Fixed
Merge-DatumArraydoes not return an array when merged array contains a single hashtable. - Fixed hashtable array items are not merged when using datum handler for tuple keys (#155).
- Fixed and extended tests for
Copy-Object. - Fixed PowerShell 7 compatibility of Copy-Object integration test.
- Added support for specifying the encoding (#87).
- Added error handling to 'Get-FileProviderData.ps1'.
- Added functions for get and clear the Datum RSOP cache.
- Fixed how issue not allowing Datum handlers to be used on arrays (#89).
- Fixed issue in Merge-Hashtable where it did not merge hashtables correctly when these are included in an array.
- Formatting in all files with VSCode formatting according to the 'settings.json' file taken from Sampler
- Added yaml format config settings 'singleQuote' and 'bracketSpacing' and reformatted all yaml files according to the new settings.
- Cleanup
- Get-DatumType.ps1
- Merge-DatumArray.ps1
- Merge-Hashtable.ps1
- Compare-Hashtable.ps1
- Node.ps1
- FileProvider.ps1
- ConvertTo-Datum.ps1
- Get-MergeStrategyFromPath.ps1
- Get-MergeStrategyFromString.ps1
- Get-DatumRsop.ps1
- Merge-Datum.ps1
- datum.psd1
- Get-FileProviderData.ps1
- Invoke-TestHandlerAction.ps1
- New-DatumStructure.ps1
- Resolve-Datum.ps1
- Resolve-DatumPath.ps1
- Test-InvokeCommandFilter
- Resolve-NodeProperty.ps1
- New-DatumFileProvider.ps1
- Added 'GitHubConfig' to build.yml and updating main branch to main.
- Corrected a typo and incorrect debug information.
- New CI process.
- Added support for specifying the encoding (#87).
- Added more tests and test data.
- Updated new build.ps1 from sampler.
- Fixed issue in Merge-DatumArray where it used ArrayList.AddRange to add hashtables (each key/value pair is added as a new object), where Add should have been used (each hashtable is a new object).
- Fixed issue in Merge-DatumArray where it used ArrayList.AddRange to add hashtables (each key/value pair is added as a new object), where Add should have been used (each hashtable is a new object).
- Fixed how issue not allowing Datum handlers to be used on arrays (#89).
- Fixed an issue visible in the test log: https://synedgy.visualstudio.com/Datum/_build/results?buildId=633&view=logs&j=14d0eb3f-bc66-5450-3353-28256327ad6c&t=c344f041-83bb-5f7b-1678-8a78f1873256&l=79.
- Datum on linux (change case on Datum.psd1 and Datum.psm1)
- Datum in PSCore 6 on Windows (Write-Output -NoEnumerate bug)
- [breaking] Get-DscSplattedResource script to process is removed and now available in the DscBuildHelpers module (Datum is not DSC specific, now it's fully decoupled)
- fixed issue with merging arrays of hashtables
- ProtectedData / Data Encryption datum handler is no longer built-in (need external module
Datum.ProtectedDataavailable in the gallery)
- PowerShell 6 (aka Core) support. By dropping the ProtectedData dependency, Datum now works on PSCore.
- Allowing to set the CompositionKey of the
Get-DatumRSOPcommand