From 42aa710daeaae550a737fccdb0a5d9f70bf27c0f Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Sun, 27 Aug 2023 21:05:38 +0100 Subject: [PATCH 1/8] Add ability to extend child items of the uSync tree node. --- .../Controllers/Trees/uSyncTreeController.cs | 89 +++++++++++++++++-- uSync.BackOffice/Models/ISyncTreeNode.cs | 67 ++++++++++++++ 2 files changed, 151 insertions(+), 5 deletions(-) create mode 100644 uSync.BackOffice/Models/ISyncTreeNode.cs diff --git a/uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs b/uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs index 7266576f..67dd7ee4 100644 --- a/uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs +++ b/uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs @@ -1,14 +1,21 @@ - +using System; +using System.Collections.Generic; +using System.Linq; + using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; using Umbraco.Cms.Web.BackOffice.Trees; using Umbraco.Cms.Web.Common.Attributes; using Umbraco.Cms.Web.Common.ModelBinders; +using Umbraco.Extensions; + +using uSync.BackOffice.Models; namespace uSync.BackOffice.Controllers.Trees { @@ -21,13 +28,21 @@ namespace uSync.BackOffice.Controllers.Trees [PluginController(uSync.Name)] public class uSyncTreeController : TreeController { + public readonly ITypeFinder _typeFinder; + + public IList _treeNodes; + /// public uSyncTreeController( ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, - IEventAggregator eventAggregator) + IEventAggregator eventAggregator, + ITypeFinder typeFinder) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) - { } + { + _typeFinder = typeFinder; + _treeNodes = GetTreeNodes(); + } /// protected override ActionResult CreateRootNode(FormCollection queryStrings) @@ -36,7 +51,7 @@ protected override ActionResult CreateRootNode(FormCollection queryStr result.Value.RoutePath = $"{this.SectionAlias}/{uSync.Trees.uSync}/dashboard"; result.Value.Icon = "icon-infinity"; - result.Value.HasChildren = false; + result.Value.HasChildren = _treeNodes.Count > 0; result.Value.MenuUrl = null; return result.Value; @@ -51,7 +66,71 @@ protected override ActionResult GetMenuForNode(string id, [M /// protected override ActionResult GetTreeNodes(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))] FormCollection queryStrings) { - return new TreeNodeCollection(); + if (_treeNodes.Count == 0) return new TreeNodeCollection(); + + var collection = new TreeNodeCollection(); + + if (id == "-1") + { + foreach (var node in _treeNodes.OrderBy(x => x.Weight)) + { + var treeNode = CreateTreeNode( + node.Id, + id, + queryStrings, + node.Title, + node.Icon, + $"{this.SectionAlias}/{node.TreeAlias}/{node.Alias}"); + + var children = node.GetChildNodes(id, queryStrings); + if (children != null) + treeNode.HasChildren = true; + + collection.Add(treeNode); + + } + + return collection; + } + else + { + var treeNode = _treeNodes.FirstOrDefault(x => x.Id == id); + if (treeNode != null) + { + var children = treeNode.GetChildNodes(id, queryStrings); + if (children != null) + { + foreach(var child in children) + { + collection.Add(CreateTreeNode( + child.Id, + id, + queryStrings, + child.Title, + child.Icon, + $"{this.SectionAlias}/{treeNode.TreeAlias}/{child.Alias}")); + } + } + } + } + + return collection; + + } + + private IList GetTreeNodes() + { + var treeNodes = new List(); + var nodes = _typeFinder.FindClassesOfType(); + foreach(var node in nodes) + { + if (Activator.CreateInstance(node) is ISyncTreeNode instance) + { + treeNodes.Add(instance); + } + } + + return treeNodes; } } } diff --git a/uSync.BackOffice/Models/ISyncTreeNode.cs b/uSync.BackOffice/Models/ISyncTreeNode.cs new file mode 100644 index 00000000..c7942faf --- /dev/null +++ b/uSync.BackOffice/Models/ISyncTreeNode.cs @@ -0,0 +1,67 @@ +using System.Collections.Generic; + +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; + +using Umbraco.Cms.Core; +using Umbraco.Cms.Core.Events; +using Umbraco.Cms.Core.Services; +using Umbraco.Cms.Core.Trees; +using Umbraco.Cms.Web.BackOffice.Trees; +using Umbraco.Cms.Web.Common.Attributes; +using Umbraco.Cms.Web.Common.ModelBinders; + +namespace uSync.BackOffice.Models +{ + /// + /// add on for uSync that allows you to render a node + /// under the uSync tree. + /// + public interface ISyncTreeNode + { + /// + /// position in the tree, (higher is lower down the tree) + /// + public int Weight { get; } + + /// + /// Id this will be passed to the controller. + /// + public string Id { get; } + + /// + /// alias for the tree + /// + public string TreeAlias { get; } + + /// + /// alias for the node item + /// + public string Alias { get; } + + /// + /// title of the tree item + /// + public string Title { get; } + + /// + /// icon for the tree item. + /// + public string Icon { get; } + + + /// + /// method to return any additional child nodes under the parent node + /// + public IEnumerable GetChildNodes(string id, FormCollection queryStrings); + + } + + public class uSyncTreeNode + { + public string Id { get; set; } + public string Alias { get; set; } + public string Title { get; set; } + public string Icon { get; set; } + } +} From 307171d13d357b4a5cdca80ba1e975e2b2a27da1 Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Wed, 30 Aug 2023 14:39:17 +0100 Subject: [PATCH 2/8] don't append build onto version (we use it to find scripts) --- Directory.Build.props | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 8de02e14..fce744b0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -31,7 +31,11 @@ true true snupkg - + + + false + + From ec78e3e59684800f3a6746140052edcf364b921f Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Wed, 30 Aug 2023 14:39:23 +0100 Subject: [PATCH 3/8] schema update --- uSync.BackOffice.Targets/appsettings-schema.usync.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/uSync.BackOffice.Targets/appsettings-schema.usync.json b/uSync.BackOffice.Targets/appsettings-schema.usync.json index c14f4d1b..6c64cb33 100644 --- a/uSync.BackOffice.Targets/appsettings-schema.usync.json +++ b/uSync.BackOffice.Targets/appsettings-schema.usync.json @@ -113,11 +113,6 @@ "type": "string" } }, - "SignalRRoot": { - "type": "string", - "description": "location of SignalR hub script", - "default": "" - }, "EnableHistory": { "type": "boolean", "description": "Should the history view be on of off ? ", From 88a452efb326784392c801eb4a7b2508c03d6a29 Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Wed, 30 Aug 2023 16:40:07 +0100 Subject: [PATCH 4/8] Add Ability to direct menus from the sub items. --- dist/build-package.ps1 | 5 +- uSync.AutoTemplates/packages.lock.json | 38 ++++++------- .../uSync.AutoTemplates.csproj | 2 +- .../{Models => Expansions}/ISyncTreeNode.cs | 38 ++++++++++--- .../Expansions/SyncTreeNodeCollection.cs | 29 ++++++++++ .../uSyncTreeController.cs | 55 ++++++++----------- uSync.BackOffice/packages.lock.json | 52 +++++++++--------- uSync.BackOffice/uSync.BackOffice.csproj | 4 +- .../uSyncBackOfficeBuilderExtensions.cs | 3 + uSync.Backoffice.Assets/packages.lock.json | 54 +++++++++--------- .../uSync.Backoffice.Assets.csproj | 2 +- uSync.Community.Contrib/packages.lock.json | 48 ++++++++-------- .../uSync.Community.Contrib.csproj | 4 +- .../packages.lock.json | 46 ++++++++-------- ...uSync.Community.DataTypeSerializers.csproj | 4 +- uSync.Core/packages.lock.json | 38 ++++++------- uSync.Core/uSync.Core.csproj | 2 +- uSync.SchemaGenerator/packages.lock.json | 52 +++++++++--------- uSync.Tests/uSync.Tests.csproj | 6 +- uSync/packages.lock.json | 54 +++++++++--------- 20 files changed, 292 insertions(+), 244 deletions(-) rename uSync.BackOffice/{Models => Expansions}/ISyncTreeNode.cs (62%) create mode 100644 uSync.BackOffice/Expansions/SyncTreeNodeCollection.cs rename uSync.BackOffice/{Controllers/Trees => Expansions}/uSyncTreeController.cs (72%) diff --git a/dist/build-package.ps1 b/dist/build-package.ps1 index d0b6d775..71098d9d 100644 --- a/dist/build-package.ps1 +++ b/dist/build-package.ps1 @@ -94,4 +94,7 @@ if ($push) { Write-Host "uSync Packaged : $fullVersion" Remove-Item ".\last-build-*" -Out-File -FilePath ".\last-build-$fullVersion.txt" -InputObject $fullVersion \ No newline at end of file +Out-File -FilePath ".\last-build-$fullVersion.txt" -InputObject $fullVersion + +## beep means i can look away :) +[console]::beep(1984,500) \ No newline at end of file diff --git a/uSync.AutoTemplates/packages.lock.json b/uSync.AutoTemplates/packages.lock.json index 5fe16a64..a30cec0f 100644 --- a/uSync.AutoTemplates/packages.lock.json +++ b/uSync.AutoTemplates/packages.lock.json @@ -4,13 +4,13 @@ "net7.0": { "Umbraco.Cms.Web.BackOffice": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Asp.Versioning.Abstractions": { @@ -2013,8 +2013,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2035,17 +2035,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2075,26 +2075,26 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2104,8 +2104,8 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { diff --git a/uSync.AutoTemplates/uSync.AutoTemplates.csproj b/uSync.AutoTemplates/uSync.AutoTemplates.csproj index 2b57759d..257f6037 100644 --- a/uSync.AutoTemplates/uSync.AutoTemplates.csproj +++ b/uSync.AutoTemplates/uSync.AutoTemplates.csproj @@ -6,7 +6,7 @@ - + diff --git a/uSync.BackOffice/Models/ISyncTreeNode.cs b/uSync.BackOffice/Expansions/ISyncTreeNode.cs similarity index 62% rename from uSync.BackOffice/Models/ISyncTreeNode.cs rename to uSync.BackOffice/Expansions/ISyncTreeNode.cs index c7942faf..9a67aded 100644 --- a/uSync.BackOffice/Models/ISyncTreeNode.cs +++ b/uSync.BackOffice/Expansions/ISyncTreeNode.cs @@ -3,15 +3,9 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; -using Umbraco.Cms.Core; -using Umbraco.Cms.Core.Events; -using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; -using Umbraco.Cms.Web.BackOffice.Trees; -using Umbraco.Cms.Web.Common.Attributes; -using Umbraco.Cms.Web.Common.ModelBinders; -namespace uSync.BackOffice.Models +namespace uSync.BackOffice.Expansions { /// /// add on for uSync that allows you to render a node @@ -55,13 +49,43 @@ public interface ISyncTreeNode /// public IEnumerable GetChildNodes(string id, FormCollection queryStrings); + /// + /// to display any context menu. + /// + /// + /// + /// + public ActionResult GetMenuItems(string id, FormCollection queryStrings); } + /// + /// Representation of a single tree node + /// public class uSyncTreeNode { + /// + /// Id for this tree node + /// public string Id { get; set; } + + /// + /// Alias of the tree item + /// public string Alias { get; set; } + + /// + /// title (shown to user) for tree item + /// public string Title { get; set; } + + /// + /// Icon to display. + /// public string Icon { get; set; } + + /// + /// segment path to this item. + /// + public string Path { get; set; } } } diff --git a/uSync.BackOffice/Expansions/SyncTreeNodeCollection.cs b/uSync.BackOffice/Expansions/SyncTreeNodeCollection.cs new file mode 100644 index 00000000..dec5f81a --- /dev/null +++ b/uSync.BackOffice/Expansions/SyncTreeNodeCollection.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; + +using Umbraco.Cms.Core.Composing; + +namespace uSync.BackOffice.Expansions; + +/// +/// collection of UI tree nodes, allows us to dynamically extend the uSync tree +/// +public class SyncTreeNodeCollection + : BuilderCollectionBase +{ + /// + public SyncTreeNodeCollection(Func> items) + : base(items) + { } +} + +/// +/// collection builder for UI tree nodes under uSync tree.(subtrees) +/// +public class SyncTreeNodeCollectionBuilder + : LazyCollectionBuilderBase +{ + /// + protected override SyncTreeNodeCollectionBuilder This => this; +} diff --git a/uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs b/uSync.BackOffice/Expansions/uSyncTreeController.cs similarity index 72% rename from uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs rename to uSync.BackOffice/Expansions/uSyncTreeController.cs index 67dd7ee4..32081bad 100644 --- a/uSync.BackOffice/Controllers/Trees/uSyncTreeController.cs +++ b/uSync.BackOffice/Expansions/uSyncTreeController.cs @@ -14,10 +14,9 @@ using Umbraco.Cms.Web.Common.Attributes; using Umbraco.Cms.Web.Common.ModelBinders; using Umbraco.Extensions; - using uSync.BackOffice.Models; -namespace uSync.BackOffice.Controllers.Trees +namespace uSync.BackOffice.Expansions { /// /// Tree controller for the 'uSync' tree @@ -28,20 +27,17 @@ namespace uSync.BackOffice.Controllers.Trees [PluginController(uSync.Name)] public class uSyncTreeController : TreeController { - public readonly ITypeFinder _typeFinder; - - public IList _treeNodes; + public SyncTreeNodeCollection _treeNodes; /// public uSyncTreeController( ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IEventAggregator eventAggregator, - ITypeFinder typeFinder) + SyncTreeNodeCollection treeNodes) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { - _typeFinder = typeFinder; - _treeNodes = GetTreeNodes(); + _treeNodes = treeNodes; } /// @@ -49,7 +45,7 @@ protected override ActionResult CreateRootNode(FormCollection queryStr { var result = base.CreateRootNode(queryStrings); - result.Value.RoutePath = $"{this.SectionAlias}/{uSync.Trees.uSync}/dashboard"; + result.Value.RoutePath = $"{SectionAlias}/{uSync.Trees.uSync}/dashboard"; result.Value.Icon = "icon-infinity"; result.Value.HasChildren = _treeNodes.Count > 0; result.Value.MenuUrl = null; @@ -57,10 +53,18 @@ protected override ActionResult CreateRootNode(FormCollection queryStr return result.Value; } + private string getParentId(string id) + => id.IndexOf('_') < 0 ? id : id.Substring(0, id.IndexOf("_")); + /// protected override ActionResult GetMenuForNode(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))] FormCollection queryStrings) { - return null; + if (_treeNodes.Count == 0) return null; + if (id == Constants.System.RootString) return null; + + var parentId = getParentId(id); + var current = _treeNodes.FirstOrDefault(x => x.Id == parentId); + return current?.GetMenuItems(id, queryStrings) ?? null; } /// @@ -70,7 +74,7 @@ protected override ActionResult GetTreeNodes(string id, [Mod var collection = new TreeNodeCollection(); - if (id == "-1") + if (id == Constants.System.RootString) { foreach (var node in _treeNodes.OrderBy(x => x.Weight)) { @@ -80,7 +84,7 @@ protected override ActionResult GetTreeNodes(string id, [Mod queryStrings, node.Title, node.Icon, - $"{this.SectionAlias}/{node.TreeAlias}/{node.Alias}"); + $"{SectionAlias}/{node.TreeAlias}/{node.Alias}"); var children = node.GetChildNodes(id, queryStrings); if (children != null) @@ -94,21 +98,21 @@ protected override ActionResult GetTreeNodes(string id, [Mod } else { - var treeNode = _treeNodes.FirstOrDefault(x => x.Id == id); + var treeNode = _treeNodes.FirstOrDefault(x => x.Id == getParentId(id)); if (treeNode != null) { var children = treeNode.GetChildNodes(id, queryStrings); if (children != null) { - foreach(var child in children) + foreach (var child in children) { collection.Add(CreateTreeNode( - child.Id, - id, - queryStrings, + $"{id}_{child.Id}", + id, + queryStrings, child.Title, child.Icon, - $"{this.SectionAlias}/{treeNode.TreeAlias}/{child.Alias}")); + $"{SectionAlias}/{treeNode.TreeAlias}/{child.Path}")); } } } @@ -117,20 +121,5 @@ protected override ActionResult GetTreeNodes(string id, [Mod return collection; } - - private IList GetTreeNodes() - { - var treeNodes = new List(); - var nodes = _typeFinder.FindClassesOfType(); - foreach(var node in nodes) - { - if (Activator.CreateInstance(node) is ISyncTreeNode instance) - { - treeNodes.Add(instance); - } - } - - return treeNodes; - } } } diff --git a/uSync.BackOffice/packages.lock.json b/uSync.BackOffice/packages.lock.json index f8840645..4b5dc92d 100644 --- a/uSync.BackOffice/packages.lock.json +++ b/uSync.BackOffice/packages.lock.json @@ -14,22 +14,22 @@ }, "Umbraco.Cms.Web.BackOffice": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.Cms.Web.Website": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Asp.Versioning.Abstractions": { @@ -2042,8 +2042,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2064,17 +2064,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2104,26 +2104,26 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2133,8 +2133,8 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { @@ -2145,15 +2145,15 @@ "usync.community.contrib": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Core": "[12.0.0, )" } }, "usync.core": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.Website": "[12.0.0, )" + "Umbraco.Cms.Web.Website": "[12.0.1, )" } } } diff --git a/uSync.BackOffice/uSync.BackOffice.csproj b/uSync.BackOffice/uSync.BackOffice.csproj index c4320984..1adfbe2b 100644 --- a/uSync.BackOffice/uSync.BackOffice.csproj +++ b/uSync.BackOffice/uSync.BackOffice.csproj @@ -20,8 +20,8 @@ - - + + diff --git a/uSync.BackOffice/uSyncBackOfficeBuilderExtensions.cs b/uSync.BackOffice/uSyncBackOfficeBuilderExtensions.cs index 4d66d51d..584c63cc 100644 --- a/uSync.BackOffice/uSyncBackOfficeBuilderExtensions.cs +++ b/uSync.BackOffice/uSyncBackOfficeBuilderExtensions.cs @@ -19,6 +19,7 @@ using uSync.BackOffice.Boot; using uSync.BackOffice.Cache; using uSync.BackOffice.Configuration; +using uSync.BackOffice.Expansions; using uSync.BackOffice.Hubs; using uSync.BackOffice.Notifications; using uSync.BackOffice.Services; @@ -88,6 +89,8 @@ public static IUmbracoBuilder AdduSync(this IUmbracoBuilder builder, Action CreatePolicies(o)); + builder.WithCollectionBuilder() + .Add(() => builder.TypeLoader.GetTypes()); return builder; } diff --git a/uSync.Backoffice.Assets/packages.lock.json b/uSync.Backoffice.Assets/packages.lock.json index 7abd5ed8..ea5ed954 100644 --- a/uSync.Backoffice.Assets/packages.lock.json +++ b/uSync.Backoffice.Assets/packages.lock.json @@ -17,13 +17,13 @@ }, "Umbraco.Cms.Web.BackOffice": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Asp.Versioning.Abstractions": { @@ -2068,8 +2068,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2090,17 +2090,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2130,26 +2130,26 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2159,16 +2159,16 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.Cms.Web.Website": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { @@ -2179,8 +2179,8 @@ "usync.backoffice": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Community.Contrib": "[9.0.0, )", "uSync.Core": "[12.0.0, )" } @@ -2191,15 +2191,15 @@ "usync.community.contrib": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Core": "[12.0.0, )" } }, "usync.core": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.Website": "[12.0.0, )" + "Umbraco.Cms.Web.Website": "[12.0.1, )" } } } diff --git a/uSync.Backoffice.Assets/uSync.Backoffice.Assets.csproj b/uSync.Backoffice.Assets/uSync.Backoffice.Assets.csproj index a61a3b0b..c56b1521 100644 --- a/uSync.Backoffice.Assets/uSync.Backoffice.Assets.csproj +++ b/uSync.Backoffice.Assets/uSync.Backoffice.Assets.csproj @@ -25,7 +25,7 @@ - + diff --git a/uSync.Community.Contrib/packages.lock.json b/uSync.Community.Contrib/packages.lock.json index 1c8667d5..46d54e87 100644 --- a/uSync.Community.Contrib/packages.lock.json +++ b/uSync.Community.Contrib/packages.lock.json @@ -14,22 +14,22 @@ }, "Umbraco.Cms.Web.BackOffice": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.Cms.Web.Website": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Asp.Versioning.Abstractions": { @@ -2042,8 +2042,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2064,17 +2064,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2104,26 +2104,26 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2133,8 +2133,8 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { @@ -2145,7 +2145,7 @@ "usync.core": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.Website": "[12.0.0, )" + "Umbraco.Cms.Web.Website": "[12.0.1, )" } } } diff --git a/uSync.Community.Contrib/uSync.Community.Contrib.csproj b/uSync.Community.Contrib/uSync.Community.Contrib.csproj index d7c3673c..8218896b 100644 --- a/uSync.Community.Contrib/uSync.Community.Contrib.csproj +++ b/uSync.Community.Contrib/uSync.Community.Contrib.csproj @@ -15,9 +15,9 @@ - + - + diff --git a/uSync.Community.DataTypeSerializers/packages.lock.json b/uSync.Community.DataTypeSerializers/packages.lock.json index a1658ab6..228742cf 100644 --- a/uSync.Community.DataTypeSerializers/packages.lock.json +++ b/uSync.Community.DataTypeSerializers/packages.lock.json @@ -14,22 +14,22 @@ }, "Umbraco.Cms.Web.BackOffice": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.Cms.Web.Website": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "uSync.BackOffice": { @@ -2054,8 +2054,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2076,17 +2076,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2116,26 +2116,26 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2145,8 +2145,8 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { diff --git a/uSync.Community.DataTypeSerializers/uSync.Community.DataTypeSerializers.csproj b/uSync.Community.DataTypeSerializers/uSync.Community.DataTypeSerializers.csproj index 31b845d7..20cbb223 100644 --- a/uSync.Community.DataTypeSerializers/uSync.Community.DataTypeSerializers.csproj +++ b/uSync.Community.DataTypeSerializers/uSync.Community.DataTypeSerializers.csproj @@ -18,8 +18,8 @@ - - + + diff --git a/uSync.Core/packages.lock.json b/uSync.Core/packages.lock.json index db5ba230..8d369c78 100644 --- a/uSync.Core/packages.lock.json +++ b/uSync.Core/packages.lock.json @@ -14,11 +14,11 @@ }, "Umbraco.Cms.Web.Website": { "type": "Direct", - "requested": "[12.0.0, )", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "requested": "[12.0.1, )", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Asp.Versioning.Abstractions": { @@ -1999,8 +1999,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2021,17 +2021,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2061,26 +2061,26 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2090,8 +2090,8 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { diff --git a/uSync.Core/uSync.Core.csproj b/uSync.Core/uSync.Core.csproj index 8557fc0c..e97c1e60 100644 --- a/uSync.Core/uSync.Core.csproj +++ b/uSync.Core/uSync.Core.csproj @@ -17,7 +17,7 @@ - + diff --git a/uSync.SchemaGenerator/packages.lock.json b/uSync.SchemaGenerator/packages.lock.json index 7d67305a..242e5131 100644 --- a/uSync.SchemaGenerator/packages.lock.json +++ b/uSync.SchemaGenerator/packages.lock.json @@ -2026,8 +2026,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2048,17 +2048,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2088,36 +2088,36 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.BackOffice": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2127,16 +2127,16 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.Cms.Web.Website": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { @@ -2147,8 +2147,8 @@ "usync.backoffice": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Community.Contrib": "[9.0.0, )", "uSync.Core": "[12.0.0, )" } @@ -2156,15 +2156,15 @@ "usync.community.contrib": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Core": "[12.0.0, )" } }, "usync.core": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.Website": "[12.0.0, )" + "Umbraco.Cms.Web.Website": "[12.0.1, )" } } } diff --git a/uSync.Tests/uSync.Tests.csproj b/uSync.Tests/uSync.Tests.csproj index e79ff23a..ab6ad499 100644 --- a/uSync.Tests/uSync.Tests.csproj +++ b/uSync.Tests/uSync.Tests.csproj @@ -14,10 +14,10 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - - - + + + diff --git a/uSync/packages.lock.json b/uSync/packages.lock.json index 3f89162c..a2e49d8f 100644 --- a/uSync/packages.lock.json +++ b/uSync/packages.lock.json @@ -2056,8 +2056,8 @@ }, "Umbraco.Cms.Core": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "pP2cyBiUdqJL/f7ji6nCkr9jEv24I5m7CmmXX8RVNXkFLsZvffJgOAqXh/ozJaLr3a4lUPJeNyeSvaYWXMTpLw==", + "resolved": "12.0.1", + "contentHash": "rJPnp7KBgbDoQusCUG0JPf1+76c2Wc/kNxkECHjXllBi7Ob0KwHgpqGp9KRewSOygSshZXHK2Hp4c3pkK+9Whw==", "dependencies": { "Microsoft.Extensions.Configuration.Abstractions": "7.0.0", "Microsoft.Extensions.FileProviders.Embedded": "7.0.7", @@ -2078,17 +2078,17 @@ }, "Umbraco.Cms.Examine.Lucene": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "M7JvsMjMRR1DhF5YPaeeZfYBex+uiblE1qUymrAklGOrkMZn+W3Kakk27Jc1RTN32wAAGW/wxbixHQM2W0TZeQ==", + "resolved": "12.0.1", + "contentHash": "aY+SAtW6Ukwp9m/GnABBoWPzJm5Rg0Ye04yh5amOcr1D7PunXZtUC4KJySFyAAsKBl8N71oxX8WPr24Xy5M9iA==", "dependencies": { "Examine": "3.1.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Infrastructure": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "5krqkb4TJtUCJfu0zM2272F9ucDpdQO6nkEJSstnfjsof6Nf4JtMJogqY/0WFNutHk992+jIDJinIf9ShHzYBw==", + "resolved": "12.0.1", + "contentHash": "nw/h4Q+MCaKTSltTwgXTzH79mpNgwdoV8Wzkb0rO015vZiC2KGxd+XkPgzgMO1Gqb3+8nK20mr1HwYd5QJMLWA==", "dependencies": { "Examine.Core": "3.1.0", "HtmlAgilityPack": "1.11.48", @@ -2118,36 +2118,36 @@ "System.IO.FileSystem.AccessControl": "5.0.0", "System.Security.Cryptography.Pkcs": "7.0.2", "System.Threading.Tasks.Dataflow": "7.0.0", - "Umbraco.Cms.Core": "12.0.0", + "Umbraco.Cms.Core": "12.0.1", "ncrontab": "3.3.1" } }, "Umbraco.Cms.PublishedCache.NuCache": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "h+Q5sqX+iDN0KlUY24Oi7XMvRAlZw2JzHsrbSQZ3kJlnSKvPB5ohWpG8U5oHlZwsfadaZRkLfYb1slu5c1lUXQ==", + "resolved": "12.0.1", + "contentHash": "DQfX0pzbofyjIRujjEclwYV/C0ojx9gV97rGOe7NtXN5zMHw2usfPSpBCuwtOAgPpGgQBMBZjxmrJLZerbO3tg==", "dependencies": { "K4os.Compression.LZ4": "1.3.5", "MessagePack": "2.5.108", "Newtonsoft.Json": "13.0.3", "Umbraco.CSharpTest.Net.Collections": "15.0.0", - "Umbraco.Cms.Infrastructure": "12.0.0" + "Umbraco.Cms.Infrastructure": "12.0.1" } }, "Umbraco.Cms.Web.BackOffice": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "FRdv36G9fygQfO1mjEpfM4jhIaw9olBF5SPOj5nKmhFkZ0c7eZV+9wJmXNWhbobU5N5jR0vfUl57gXX9sQ1qcg==", + "resolved": "12.0.1", + "contentHash": "+t2sNeHPcDTok3pk+nQqmB22PNBV1uzJkkghgOAZz7uENYMiMG3wGGYz92Yz79z2Un9tXNta5l9B8fv91G5RiA==", "dependencies": { "Newtonsoft.Json": "13.0.3", "Serilog.AspNetCore": "7.0.0", - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.Cms.Web.Common": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "LuW9rtGkheo/77T5HdY5VtG9DXXe/Z68crVCiG9BMda6WS/oO6FOoa6ijm07DSe022mS+9j3zaQ4DN7ehiIhdg==", + "resolved": "12.0.1", + "contentHash": "WKV61k0PSDzaxHgPZiHboxx5NBfX/D5/DlapesTFBTrYSvytFO0Cll0fPorEUxO/Z3SdTVeLcXAjxH557Bmi1A==", "dependencies": { "Asp.Versioning.Mvc": "7.0.0", "Asp.Versioning.Mvc.ApiExplorer": "7.0.0", @@ -2157,16 +2157,16 @@ "MiniProfiler.AspNetCore.Mvc": "4.3.8", "Smidge.InMemory": "4.3.0", "Smidge.Nuglify": "4.3.0", - "Umbraco.Cms.Examine.Lucene": "12.0.0", - "Umbraco.Cms.PublishedCache.NuCache": "12.0.0" + "Umbraco.Cms.Examine.Lucene": "12.0.1", + "Umbraco.Cms.PublishedCache.NuCache": "12.0.1" } }, "Umbraco.Cms.Web.Website": { "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "MryGu+G7QSBoGHp2VZPv60hj/cgvt0pK9+TTYlXeL7XLSRyyIVFq5y3KpBDSanNWyxBjKeZsMWj7wpB8+9DK+A==", + "resolved": "12.0.1", + "contentHash": "h0f27Urd/sXrEkOZvWzZdqglc26UfqZYi0nmSwZC2GdmNjVZ8SxI+Xm26+mcKLnT2oVMA/IkXTRea8vYAfCG4Q==", "dependencies": { - "Umbraco.Cms.Web.Common": "12.0.0" + "Umbraco.Cms.Web.Common": "12.0.1" } }, "Umbraco.CSharpTest.Net.Collections": { @@ -2177,8 +2177,8 @@ "usync.backoffice": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Community.Contrib": "[9.0.0, )", "uSync.Core": "[12.0.0, )" } @@ -2187,7 +2187,7 @@ "type": "Project", "dependencies": { "Microsoft.AspNetCore.Components.Web": "[7.0.7, )", - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", "uSync.BackOffice": "[12.0.0, )", "uSync.BackOffice.Targets": "[12.0.0, )" } @@ -2198,15 +2198,15 @@ "usync.community.contrib": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.BackOffice": "[12.0.0, )", - "Umbraco.Cms.Web.Website": "[12.0.0, )", + "Umbraco.Cms.Web.BackOffice": "[12.0.1, )", + "Umbraco.Cms.Web.Website": "[12.0.1, )", "uSync.Core": "[12.0.0, )" } }, "usync.core": { "type": "Project", "dependencies": { - "Umbraco.Cms.Web.Website": "[12.0.0, )" + "Umbraco.Cms.Web.Website": "[12.0.1, )" } } } From 55613666e2171916516b16a1f2e5ffbdf8d02061 Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Tue, 5 Sep 2023 10:13:42 +0100 Subject: [PATCH 5/8] Fix - path seperator not using linux safe '/' value --- uSync.BackOffice/Services/uSyncService_Files.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/uSync.BackOffice/Services/uSyncService_Files.cs b/uSync.BackOffice/Services/uSyncService_Files.cs index 5fa71cbe..57d45f5a 100644 --- a/uSync.BackOffice/Services/uSyncService_Files.cs +++ b/uSync.BackOffice/Services/uSyncService_Files.cs @@ -31,7 +31,9 @@ public MemoryStream CompressFolder(string folder) { foreach (var file in files) { - var relativePath = GetRelativePath(fullPath, file.FullName); + var relativePath = GetRelativePath(fullPath, file.FullName) + .Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + archive.CreateEntryFromFile(file.FullName, relativePath); } } From 37eeb8edee6dcc636f633babe11d7c442b6027a3 Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Tue, 5 Sep 2023 10:14:05 +0100 Subject: [PATCH 6/8] fix - for subtrees,return a blank menu, when they don't have a menu. --- .../Expansions/uSyncTreeController.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/uSync.BackOffice/Expansions/uSyncTreeController.cs b/uSync.BackOffice/Expansions/uSyncTreeController.cs index 32081bad..a86275ee 100644 --- a/uSync.BackOffice/Expansions/uSyncTreeController.cs +++ b/uSync.BackOffice/Expansions/uSyncTreeController.cs @@ -28,16 +28,19 @@ namespace uSync.BackOffice.Expansions public class uSyncTreeController : TreeController { public SyncTreeNodeCollection _treeNodes; + private readonly MenuItemCollectionFactory _menuItemsFactory; /// public uSyncTreeController( ILocalizedTextService localizedTextService, UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IEventAggregator eventAggregator, - SyncTreeNodeCollection treeNodes) + SyncTreeNodeCollection treeNodes, + MenuItemCollectionFactory menuItemsFactory) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeNodes = treeNodes; + _menuItemsFactory = menuItemsFactory; } /// @@ -59,12 +62,14 @@ private string getParentId(string id) /// protected override ActionResult GetMenuForNode(string id, [ModelBinder(typeof(HttpQueryStringModelBinder))] FormCollection queryStrings) { - if (_treeNodes.Count == 0) return null; - if (id == Constants.System.RootString) return null; + var defaultMenu = _menuItemsFactory.Create(); + + if (_treeNodes.Count == 0) return defaultMenu; + if (id == Constants.System.RootString) return defaultMenu; var parentId = getParentId(id); var current = _treeNodes.FirstOrDefault(x => x.Id == parentId); - return current?.GetMenuItems(id, queryStrings) ?? null; + return current?.GetMenuItems(id, queryStrings) ?? defaultMenu; } /// @@ -87,7 +92,7 @@ protected override ActionResult GetTreeNodes(string id, [Mod $"{SectionAlias}/{node.TreeAlias}/{node.Alias}"); var children = node.GetChildNodes(id, queryStrings); - if (children != null) + if (children?.Any() == true) treeNode.HasChildren = true; collection.Add(treeNode); From 56caeea9875a3bd2d25ec83737bb51536c42ef5b Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Tue, 12 Sep 2023 13:26:43 +0100 Subject: [PATCH 7/8] Use interface not concrete class on tree controller. --- uSync.BackOffice/Expansions/uSyncTreeController.cs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/uSync.BackOffice/Expansions/uSyncTreeController.cs b/uSync.BackOffice/Expansions/uSyncTreeController.cs index a86275ee..b76c3c42 100644 --- a/uSync.BackOffice/Expansions/uSyncTreeController.cs +++ b/uSync.BackOffice/Expansions/uSyncTreeController.cs @@ -1,12 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Umbraco.Cms.Core; -using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.Events; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Trees; @@ -14,7 +11,6 @@ using Umbraco.Cms.Web.Common.Attributes; using Umbraco.Cms.Web.Common.ModelBinders; using Umbraco.Extensions; -using uSync.BackOffice.Models; namespace uSync.BackOffice.Expansions { @@ -28,7 +24,7 @@ namespace uSync.BackOffice.Expansions public class uSyncTreeController : TreeController { public SyncTreeNodeCollection _treeNodes; - private readonly MenuItemCollectionFactory _menuItemsFactory; + private readonly IMenuItemCollectionFactory _menuItemsFactory; /// public uSyncTreeController( @@ -36,7 +32,7 @@ public uSyncTreeController( UmbracoApiControllerTypeCollection umbracoApiControllerTypeCollection, IEventAggregator eventAggregator, SyncTreeNodeCollection treeNodes, - MenuItemCollectionFactory menuItemsFactory) + IMenuItemCollectionFactory menuItemsFactory) : base(localizedTextService, umbracoApiControllerTypeCollection, eventAggregator) { _treeNodes = treeNodes; From 2a7a3487179159dea718eb083b72068bc6fc219d Mon Sep 17 00:00:00 2001 From: Kevin Jump Date: Tue, 12 Sep 2023 13:28:34 +0100 Subject: [PATCH 8/8] Move the ProcessCleanAction method into the base, so any handler can do it. --- .../Services/uSyncService_Single.cs | 2 +- .../SyncHandlers/Handlers/ContentHandler.cs | 2 +- .../Handlers/ContentHandlerBase.cs | 27 ++-------- .../SyncHandlers/Handlers/LanguageHandler.cs | 7 +++ .../SyncHandlers/SyncHandlerBase.cs | 51 ++++++++++++++----- .../SyncHandlers/SyncHandlerFactory.cs | 4 +- .../SyncHandlers/SyncHandlerRoot.cs | 6 ++- .../Serialization/SyncSerializerRoot.cs | 3 +- 8 files changed, 59 insertions(+), 43 deletions(-) diff --git a/uSync.BackOffice/Services/uSyncService_Single.cs b/uSync.BackOffice/Services/uSyncService_Single.cs index b35fc4ed..32cc9bc3 100644 --- a/uSync.BackOffice/Services/uSyncService_Single.cs +++ b/uSync.BackOffice/Services/uSyncService_Single.cs @@ -51,7 +51,7 @@ public IEnumerable ReportPartial(string folder, uSyncPagedImportOpt if (handlerPair == null) { - _logger.LogWarning("No handler was found for {alias} item might not process correctly", itemType); + _logger.LogWarning("No handler was found for {alias} ({itemType}) item might not process correctly", itemType); continue; } diff --git a/uSync.BackOffice/SyncHandlers/Handlers/ContentHandler.cs b/uSync.BackOffice/SyncHandlers/Handlers/ContentHandler.cs index fc355f19..8911f335 100644 --- a/uSync.BackOffice/SyncHandlers/Handlers/ContentHandler.cs +++ b/uSync.BackOffice/SyncHandlers/Handlers/ContentHandler.cs @@ -24,7 +24,7 @@ namespace uSync.BackOffice.SyncHandlers.Handlers /// [SyncHandler(uSyncConstants.Handlers.ContentHandler, "Content", "Content", uSyncConstants.Priorites.Content , Icon = "icon-document usync-addon-icon", IsTwoPass = true, EntityType = UdiEntityType.Document)] - public class ContentHandler : ContentHandlerBase, ISyncHandler, ISyncCleanEntryHandler, + public class ContentHandler : ContentHandlerBase, ISyncHandler, INotificationHandler>, INotificationHandler>, INotificationHandler>, diff --git a/uSync.BackOffice/SyncHandlers/Handlers/ContentHandlerBase.cs b/uSync.BackOffice/SyncHandlers/Handlers/ContentHandlerBase.cs index be0d676c..aaf06223 100644 --- a/uSync.BackOffice/SyncHandlers/Handlers/ContentHandlerBase.cs +++ b/uSync.BackOffice/SyncHandlers/Handlers/ContentHandlerBase.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Linq; using System.Xml.Linq; @@ -10,7 +9,6 @@ using Umbraco.Cms.Core.Notifications; using Umbraco.Cms.Core.Services; using Umbraco.Cms.Core.Strings; -using Umbraco.Cms.Web.BackOffice.Middleware; using Umbraco.Extensions; using uSync.BackOffice.Configuration; @@ -28,7 +26,7 @@ namespace uSync.BackOffice.SyncHandlers.Handlers /// places around the tree, so we have to check for file name /// clashes. /// - public abstract class ContentHandlerBase : SyncHandlerTreeBase + public abstract class ContentHandlerBase : SyncHandlerTreeBase where TObject : IContentBase where TService : IService { @@ -72,8 +70,8 @@ protected override string GetXmlMatchString(XElement node) /* * Config options. - * Include = Paths (comma seperated) (only include if path starts with one of these) - * Exclude = Paths (comma seperated) (exclude if path starts with one of these) + * Include = Paths (comma separated) (only include if path starts with one of these) + * Exclude = Paths (comma separated) (exclude if path starts with one of these) * * RulesOnExport = bool (do we apply the rules on export as well as import?) */ @@ -198,25 +196,6 @@ protected override bool ShouldExport(XElement node, HandlerSettings config) protected override bool DoActionsMatch(uSyncAction a, uSyncAction b) => a.key == b.key; - /// - /// Process any cleanup actions that may have been loaded up - /// - public virtual IEnumerable ProcessCleanActions(string folder, IEnumerable actions, HandlerSettings config) - { - var cleans = actions.Where(x => x.Change == ChangeType.Clean && !string.IsNullOrWhiteSpace(x.FileName)).ToList(); - if (cleans.Count == 0) return Enumerable.Empty(); - - var results = new List(); - - foreach (var clean in cleans) - { - if (!string.IsNullOrWhiteSpace(clean.FileName)) - results.AddRange(CleanFolder(clean.FileName, false, config.UseFlatStructure)); - } - - return results; - } - /// /// Handle the Umbraco Moved to recycle bin notification, (treated like a move) /// diff --git a/uSync.BackOffice/SyncHandlers/Handlers/LanguageHandler.cs b/uSync.BackOffice/SyncHandlers/Handlers/LanguageHandler.cs index d929a5f5..6c37575f 100644 --- a/uSync.BackOffice/SyncHandlers/Handlers/LanguageHandler.cs +++ b/uSync.BackOffice/SyncHandlers/Handlers/LanguageHandler.cs @@ -210,5 +210,12 @@ public override void Handle(SavedNotification notification) } } + + /// + /// we don't support language deletion (because the keys are unstable) + /// + protected override IEnumerable DeleteMissingItems(int parentId, IEnumerable keys, bool reportOnly) + => Enumerable.Empty(); + } } diff --git a/uSync.BackOffice/SyncHandlers/SyncHandlerBase.cs b/uSync.BackOffice/SyncHandlers/SyncHandlerBase.cs index 94f4e3c9..06a57561 100644 --- a/uSync.BackOffice/SyncHandlers/SyncHandlerBase.cs +++ b/uSync.BackOffice/SyncHandlers/SyncHandlerBase.cs @@ -6,7 +6,6 @@ using Microsoft.Extensions.Logging; -using Umbraco.Cms.Core; using Umbraco.Cms.Core.Cache; using Umbraco.Cms.Core.Models; using Umbraco.Cms.Core.Models.Entities; @@ -15,19 +14,17 @@ using uSync.BackOffice.Configuration; using uSync.BackOffice.Services; +using uSync.BackOffice.SyncHandlers.Interfaces; using uSync.Core; using uSync.Core.Models; -using static System.Net.WebRequestMethods; - namespace uSync.BackOffice.SyncHandlers { /// /// Base class for any Handlers that manage IEntity type objects /// public abstract class SyncHandlerBase - : SyncHandlerRoot - + : SyncHandlerRoot, ISyncCleanEntryHandler where TObject : IEntity where TService : IService { @@ -96,14 +93,29 @@ protected override IEnumerable CleanFolder(string cleanFile, bool r private int GetCleanParentId(string cleanFile) { - var parent = GetCleanParent(cleanFile); - if (parent == null) + var node = XElement.Load(cleanFile); + var id = node.Attribute("Id").ValueOrDefault(0); + if (id != 0) return id; + return GetCleanParent(cleanFile)?.Id ?? 0; + } + + /// + /// Process any cleanup actions that may have been loaded up + /// + public virtual IEnumerable ProcessCleanActions(string folder, IEnumerable actions, HandlerSettings config) + { + var cleans = actions.Where(x => x.Change == ChangeType.Clean && !string.IsNullOrWhiteSpace(x.FileName)).ToList(); + if (cleans.Count == 0) return Enumerable.Empty(); + + var results = new List(); + + foreach (var clean in cleans) { - var node = XElement.Load(cleanFile); - var id = node.Attribute("Id").ValueOrDefault(0); - if (id == Constants.System.Root) return Constants.System.Root; + if (!string.IsNullOrWhiteSpace(clean.FileName)) + results.AddRange(CleanFolder(clean.FileName, false, config.UseFlatStructure)); } - return parent?.Id ?? 0; + + return results; } /// @@ -120,15 +132,28 @@ protected override IEnumerable DeleteMissingItems(int parentId, IEn var actions = new List(); foreach (var item in items.Where(x => !keys.Contains(x.Key))) { + logger.LogDebug("DeleteMissingItems: Found {item} that is not in file list (Reporting: {reportOnly})", item.Id, reportOnly); + var name = String.Empty; if (item is IEntitySlim slim) name = slim.Name; + if (string.IsNullOrEmpty(name) || !reportOnly) { - var actualItem = GetFromService(item.Key); + var actualItem = GetFromService(item.Id); + if (actualItem == null) + { + logger.LogDebug("Actual Item {id} can't be found", item.Id); + continue; + } + name = GetItemName(actualItem); // actually do the delete if we are really not reporting - if (!reportOnly) DeleteViaService(actualItem); + if (!reportOnly) + { + logger.LogInformation("Deleting item: {id} {name} as part of a 'clean' import", actualItem.Id, name); + DeleteViaService(actualItem); + } } // for reporting - we use the entity name, diff --git a/uSync.BackOffice/SyncHandlers/SyncHandlerFactory.cs b/uSync.BackOffice/SyncHandlers/SyncHandlerFactory.cs index 156880f2..d722565b 100644 --- a/uSync.BackOffice/SyncHandlers/SyncHandlerFactory.cs +++ b/uSync.BackOffice/SyncHandlers/SyncHandlerFactory.cs @@ -205,7 +205,7 @@ public IEnumerable GetValidHandlers(SyncHandlerOptions option { if (!options.IncludeDisabled && handlerSetSettings.DisabledHandlers.InvariantContains(handler.Alias)) { - _logger.LogDebug("Handler {hadler} is in the disabled handler list", handler.Alias); + _logger.LogTrace("Handler {handler} is in the disabled handler list", handler.Alias); continue; } @@ -220,7 +220,7 @@ public IEnumerable GetValidHandlers(SyncHandlerOptions option { _logger.LogDebug("No Handler with {alias} has been loaded", handler.Alias); // only log if we are doing the default 'everything' group - // because weh nfoing groups we choose not to load things. + // because when foing groups we choose not to load things. if (string.IsNullOrWhiteSpace(options.Group)) _logger.LogWarning("No Handler with {alias} has been loaded", handler.Alias); } diff --git a/uSync.BackOffice/SyncHandlers/SyncHandlerRoot.cs b/uSync.BackOffice/SyncHandlers/SyncHandlerRoot.cs index ff874e88..d1d2d16c 100644 --- a/uSync.BackOffice/SyncHandlers/SyncHandlerRoot.cs +++ b/uSync.BackOffice/SyncHandlers/SyncHandlerRoot.cs @@ -517,6 +517,10 @@ virtual public IEnumerable ImportSecondPass(uSyncAction action, Han try { var file = action.FileName; + + if (!syncFileService.FileExists(file)) + return Enumerable.Empty(); + var node = syncFileService.LoadXElement(file); var item = GetFromService(node.GetKey()); if (item == null) return Enumerable.Empty(); @@ -632,7 +636,7 @@ protected IList GetFolderKeys(string folder, bool flat) { var node = XElement.Load(file); var key = node.GetKey(); - if (!keys.Contains(key)) + if (key != Guid.Empty && !keys.Contains(key)) { keys.Add(key); } diff --git a/uSync.Core/Serialization/SyncSerializerRoot.cs b/uSync.Core/Serialization/SyncSerializerRoot.cs index 13014a3b..65779964 100644 --- a/uSync.Core/Serialization/SyncSerializerRoot.cs +++ b/uSync.Core/Serialization/SyncSerializerRoot.cs @@ -159,10 +159,11 @@ protected SyncAttempt ProcessAction(XElement node, SyncSerializerOption var actionType = node.Attribute("Change").ValueOrDefault(SyncActionType.None); - logger.LogDebug("Empty Node : Processing Action {0}", actionType); var (key, alias) = FindKeyAndAlias(node); + logger.LogDebug("Empty Node : Processing Action {actionType} ({key} {alias})", actionType, key, alias); + switch (actionType) { case SyncActionType.Delete: