From 1d8f9dd97fcef9bda3a2f60ff187e83284b584f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Wed, 6 Aug 2025 19:58:36 +0800 Subject: [PATCH 1/7] feat(rhino): implement Revit category mapper for interop lite (#1018) * feat: add `RevitBuiltInCategoryStore` for Interop Lite mapper (#1004) * feat: revitmapper rhino connector binding (#1016) * chore: `RhinoMapperBinding` class * chore: `RhinoMapperBinding` structure * chore: implement `GetAvailableCategories` * chore: implement `AssignToCategory` * refactor: common code to helper method * chore: implement `ClearAllCategoryAssignments` * chore: implement `GetCurrentMappings` * chore: implement `GetObjectsByCategory` * chore: implement event handling * fix: compiler errors * chore: service registration * docs: cleanup * fix: extend DirectShape category mapping to all geometry objects (#1017) * fix: filter mapper events to only mapped objects * refactor: simplify RhinoMapperBinding following existing patterns * chore: remove unused method * fix: add DocumentModelStore dependency for event handling * refactor: mapper store * fix: list sorted alphabetically * fix: refresh mapper table on document switch * chore: note * docs: note --- .../Bindings/RhinoMapperBinding.cs | 208 ++++++++++++++++++ .../Mapper/Revit/RevitBuiltInCategoryStore.cs | 83 +++++++ .../Registration/ServiceRegistration.cs | 1 + .../Speckle.Connectors.RhinoShared.projitems | 2 + .../LocalToGlobalToDirectShapeConverter.cs | 14 +- 5 files changed, 302 insertions(+), 6 deletions(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs new file mode 100644 index 000000000..08241e7ec --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs @@ -0,0 +1,208 @@ +using Rhino; +using Rhino.DocObjects; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.Rhino.Mapper.Revit; + +namespace Speckle.Connectors.Rhino.Bindings; + +/// +/// Represents a group of objects that are all assigned to the same category. +/// +public record CategoryMapping( + string CategoryValue, + string CategoryLabel, + IReadOnlyList ObjectIds, + int ObjectCount +); + +/// +/// Binding for managing Rhino object mappings to Revit categories. +/// +public class RhinoMapperBinding : IBinding +{ + private readonly DocumentModelStore _store; + private readonly IAppIdleManager _idleManager; + private readonly IBasicConnectorBinding _basicConnectorBinding; + private const string CATEGORY_USER_STRING_KEY = "builtInCategory"; + private const string MAPPINGS_CHANGED_EVENT = "mappingsChanged"; + public string Name => "revitMapperBinding"; + public IBrowserBridge Parent { get; } + + public RhinoMapperBinding( + DocumentModelStore store, + IAppIdleManager idleManager, + IBrowserBridge parent, + IBasicConnectorBinding basicConnectorBinding + ) + { + _store = store; + _idleManager = idleManager; + Parent = parent; + _basicConnectorBinding = basicConnectorBinding; + + // Subscribe to Rhino events so we know about changes + // Events fire on delete, undo delete and modify objects + RhinoDoc.DeleteRhinoObject += OnObjectChanged; + RhinoDoc.UndeleteRhinoObject += OnObjectChanged; + RhinoDoc.ModifyObjectAttributes += OnObjectAttributesChanged; + + // Subscribe to document changes to refresh mappings when switching documents + _store.DocumentChanged += OnDocumentChanged; + } + + #region UI Methods + + /// + /// Gets list of available Revit categories for the UI dropdown. + /// + public CategoryOption[] GetAvailableCategories() => + RevitBuiltInCategoryStore.Categories.OrderBy(category => category.Label).ToArray(); + + /// + /// Assigns selected objects to a specific Revit category. + /// + public void AssignToCategory(string[] objectIds, string categoryValue) + { + foreach (var objectIdString in objectIds) + { + // NOTE: should we be checking if key already exists? + // For POC, straightforward set on object + var rhinoObject = GetRhinoObject(objectIdString); + rhinoObject?.Attributes.SetUserString(CATEGORY_USER_STRING_KEY, categoryValue); + rhinoObject?.CommitChanges(); + } + + // Trigger single update after all changes + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Removes category assignments from specific objects. + /// + public void ClearCategoryAssignment(string[] objectIds) + { + foreach (var objectIdString in objectIds) + { + // NOTE: should we be checking if key already exists? + // For POC, straightforward delete on object + var rhinoObject = GetRhinoObject(objectIdString); + rhinoObject?.Attributes.DeleteUserString(CATEGORY_USER_STRING_KEY); + rhinoObject?.CommitChanges(); + } + + // Trigger single update after all changes + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Removes all category assignments in the doc. + /// + public void ClearAllCategoryAssignments() + { + foreach (var rhinoObject in RhinoDoc.ActiveDoc.Objects) + { + if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + { + rhinoObject.Attributes.DeleteUserString(CATEGORY_USER_STRING_KEY); + rhinoObject.CommitChanges(); + } + } + + // Trigger single update + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Gets all current mappings to show in the UI table. + /// + /// + public CategoryMapping[] GetCurrentMappings() + { + var mappedObjects = RhinoDoc + .ActiveDoc.Objects.Where(obj => !string.IsNullOrEmpty(obj.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + .GroupBy(obj => obj.Attributes.GetUserString(CATEGORY_USER_STRING_KEY)) + .Select(group => new CategoryMapping( + group.Key, + RevitBuiltInCategoryStore.GetLabel(group.Key), + group.Select(obj => obj.Id.ToString()).ToArray(), + group.Count() + )) + .ToArray(); + + return mappedObjects; + } + + /// + /// Selects/highlights specific objects in Rhino. + /// + public async Task HighlightObjects(string[] objectIds) => await _basicConnectorBinding.HighlightObjects(objectIds); + + /// + /// Converts a string object ID to a RhinoObject. + /// + /// RhinoObject if found and valid, null otherwise + /// Reducing repetitive code. + private static RhinoObject? GetRhinoObject(string objectIdString) => + Guid.TryParse(objectIdString, out var objectId) ? RhinoDoc.ActiveDoc.Objects.FindId(objectId) : null; + + #endregion + + #region Event Handling + + /// + /// Called when objects are deleted or undeleted in Rhino. + /// + private void OnObjectChanged(object? sender, RhinoObjectEventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } + + var rhinoObject = e.TheObject; + if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + { + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + } + + /// + /// Called when object attributes are modified in Rhino. + /// + private void OnObjectAttributesChanged(object? sender, RhinoModifyObjectAttributesEventArgs e) + { + var rhinoObject = e.RhinoObject; + if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + { + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + } + + /// + /// Called when the document changes (e.g., switching to a different Rhino model). + /// Refreshes the mappings table to reflect the new document's state. + /// + private void OnDocumentChanged(object? sender, EventArgs e) + { + if (!_store.IsDocumentInit) + { + return; + } + + // Refresh mappings for the new document + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Sends updated mappings to the frontend. + /// + private void NotifyMappingsChanged() + { + var currentMappings = GetCurrentMappings(); + Parent.Send(MAPPINGS_CHANGED_EVENT, currentMappings); + } + + #endregion +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs new file mode 100644 index 000000000..e6ac7e562 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs @@ -0,0 +1,83 @@ +// TODO: Where should this live? Speckle.Connectors.Common.Interop?? + +namespace Speckle.Connectors.Rhino.Mapper.Revit; + +/// +/// Represents a category option for the dropdown in the UI. +/// +/// The Revit category enum name (e.g., "OST_Walls") +/// Human-readable name for the UI (e.g., "Walls") +public record CategoryOption(string Value, string Label); + +/// +/// Currently hardcoded Revit BuiltInCategories for the Interop Lite mapper. +/// This provides a select list of commonly used categories for object mapping +/// from Rhino to Revit. +/// +/// NOTE: Currently located in Rhino codebase for Rhino-to-Revit POC use case. +/// When we extend to other connectors implementing a RevitMapper interface, +/// this should be moved to a shared location (e.g., Speckle.Connectors.Common +/// or Speckle.Converters.RevitShared). +/// +public static class RevitBuiltInCategoryStore +{ + /// + /// Dictionary mapping Revit BuiltInCategory enum names to human-readable labels. + /// Key: BuiltInCategory enum name (e.g., "OST_Walls") + /// Value: Human-readable label (e.g., "Walls") + /// + public static readonly CategoryOption[] Categories = + [ + new("OST_Ceilings", "Ceilings"), + new("OST_Columns", "Columns"), + new("OST_CurtainGrids", "Curtain Grids"), + new("OST_CurtainGridsCurtaSystem", "Curtain Grids - Curtain System"), + new("OST_CurtainGridsRoof", "Curtain Grids - Roof"), + new("OST_CurtainGridsSystem", "Curtain Grids - System"), + new("OST_CurtainGridsWall", "Curtain Grids - Wall"), + new("OST_Curtain_Systems", "Curtain Systems"), + new("OST_CurtainWallMullions", "Curtain Wall Mullions"), + new("OST_CurtainWallPanels", "Curtain Wall Panels"), + new("OST_Floors", "Floors"), + new("OST_Furniture", "Furniture"), + new("OST_FurnitureSystems", "Furniture Systems"), + new("OST_Roofs", "Roofs"), + new("OST_StackedWalls", "Stacked Walls"), + new("OST_Walls", "Walls"), + // STRUCTURAL + new("OST_StructuralColumns", "Structural Columns"), + new("OST_StructuralFoundation", "Structural Foundation"), + new("OST_StructuralFraming", "Structural Framing"), + new("OST_StructuralFramingSystem", "Structural Framing System"), + new("OST_StructuralTruss", "Structural Truss"), + // MISC + new("OST_Levels", "Levels"), + new("OST_Grids", "Grids"), + new("OST_Rooms", "Rooms"), + new("OST_Areas", "Areas"), + // MEP + new("OST_DuctCurves", "Duct Curves"), + new("OST_DuctSystem", "Duct System"), + new("OST_DuctFitting", "Duct Fitting"), + new("OST_PipeCurves", "Pipe Curves"), + new("OST_PipeCurvesCenterLine", "Pipe Curves - Center Line"), + new("OST_PipeSegments", "Pipe Segments"), + new("OST_PipeFitting", "Pipe Fitting"), + new("OST_Conduit", "Conduit"), + new("OST_ConduitFitting", "Conduit Fitting"), + new("OST_Cable", "Cable"), + new("OST_CableTray", "Cable Tray"), + new("OST_CableTrayFitting", "Cable Tray Fitting") + ]; + + /// + /// Gets the human-readable label for a category value. + /// + /// The category enum name (e.g., "OST_Walls") + /// Human-readable label (e.g., "Walls") or the original value if not found + public static string GetLabel(string categoryValue) + { + var category = Categories.FirstOrDefault(c => c.Value == categoryValue); + return category?.Label ?? categoryValue; + } +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs index 6a8a96ea4..37a934e73 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs @@ -50,6 +50,7 @@ public static class ServiceRegistration serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); // register send filters serviceCollection.AddScoped(); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems index f04b4fd1d..9f6b3dc7a 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems @@ -18,6 +18,7 @@ + @@ -25,6 +26,7 @@ + diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs index 1c3962ed3..cc424f8f0 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs @@ -2,7 +2,6 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Settings; using Speckle.DoubleNumerics; -using Speckle.Objects.Data; using Speckle.Sdk.Common; using Speckle.Sdk.Models; using Speckle.Sdk.Models.Extensions; @@ -35,12 +34,15 @@ public class LocalToGlobalToDirectShapeConverter // NOTE: previously, builtInCategory was on the atomicObject level. this was subsequently moved to properties string? category = null; - if (target.atomicObject is DataObject dataObject) + // NOTE: no longer limited to DataObject since the introduction of mapper + // The change from `if (target.atomicObject is DataObject dataObject)` is very hacky, but nothing else to do for now + // TODO: better define prop interfaces for different applications + if ( + target.atomicObject["properties"] is Dictionary properties + && properties.TryGetValue("builtInCategory", out var builtInCategory) + ) { - if (dataObject.properties.TryGetValue("builtInCategory", out var builtInCategory)) - { - category = builtInCategory?.ToString(); - } + category = builtInCategory?.ToString(); } var dsCategory = DB.BuiltInCategory.OST_GenericModel; From d2ed8d3ea90e989374af681ab872088641772f8b Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Wed, 6 Aug 2025 17:05:05 +0100 Subject: [PATCH 2/7] PR to prepare for rhino importer pr (cleans the diff) (#1020) * Some changes to clean the diff * fix build --- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../Speckle.Connectors.AutocadShared.shproj | 9 + .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 370 ++++++++++++++++++ .../HostApp/Properties/PropertiesExtractor.cs | 9 +- .../HostApp/RhinoGroupBaker.cs | 2 +- .../Registration/ServiceRegistration.cs | 2 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 30 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../packages.lock.json | 30 +- .../packages.lock.json | 56 +-- .../Speckle.Connectors.DUI/packages.lock.json | 56 +-- Directory.Packages.props | 6 +- .../packages.lock.json | 32 +- .../packages.lock.json | 32 +- .../Speckle.Importers.Ifc/packages.lock.json | 28 +- .../Rhino/Speckle.Importers.Rhino/Program.cs | 6 +- .../Rhino/Speckle.Importers.Rhino/Sender.cs | 7 +- .../packages.lock.json | 30 +- .../Operations/SendOperationTests.cs | 11 +- .../packages.lock.json | 30 +- Sdk/Speckle.Connectors.Common/Connector.cs | 2 +- .../Operations/SendOperation.cs | 11 +- .../SendOperationVersionRecorder.cs | 5 +- .../packages.lock.json | 44 +-- .../packages.lock.json | 26 +- .../packages.lock.json | 44 +-- Sdk/Speckle.Testing/packages.lock.json | 14 +- 84 files changed, 1474 insertions(+), 1086 deletions(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index ef5a4df56..1f5498abb 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -336,18 +336,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -357,14 +357,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 522715e48..98ecde002 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -336,18 +336,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -357,14 +357,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index 772a0ee13..8343bb0db 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -293,7 +293,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 51655d26e..bfa79cfb0 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -210,9 +210,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -244,7 +244,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -288,18 +288,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2026/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2026/packages.lock.json index 6923864e9..1ee2d2f04 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2026/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2026/packages.lock.json @@ -210,9 +210,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -244,7 +244,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -288,18 +288,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -307,14 +307,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj index afec409d7..152cf3693 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.shproj @@ -3,6 +3,15 @@ {41BC679F-887F-44CF-971D-A5502EE87DB0} + + bin\Debug\ + + + bin\Local\ + + + bin\Release\ + diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json index 969fd7c42..1748c301d 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2022/packages.lock.json @@ -268,9 +268,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -302,7 +302,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -367,14 +367,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json index b31a7c4ca..b5d6b1477 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2023/packages.lock.json @@ -268,9 +268,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -302,7 +302,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -367,14 +367,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 83635cc1b..3845cc1ef 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -268,9 +268,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -302,7 +302,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -367,14 +367,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json index 7fe309a2b..c59c43308 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2025/packages.lock.json @@ -219,9 +219,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -254,7 +254,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -298,18 +298,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -317,14 +317,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2026/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2026/packages.lock.json index 27a39cd0d..c322e3717 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2026/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2026/packages.lock.json @@ -219,9 +219,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -254,7 +254,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -298,18 +298,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -317,14 +317,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json index 94a115013..8ef15cc15 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS21/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.etabs21": { @@ -335,18 +335,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -356,14 +356,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json index 329631181..110b991f3 100644 --- a/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json +++ b/Connectors/CSi/Speckle.Connectors.ETABS22/packages.lock.json @@ -210,9 +210,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -236,7 +236,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.etabs22": { @@ -286,18 +286,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -305,14 +305,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json index 10f66ea73..1e5aa0fdd 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2020/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2020": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json index 4f28df53f..35249759a 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2021/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2021": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json index e3d3a2438..81d8f1ed5 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2022/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2022": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json index 5d27f5009..331efd2b7 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2023/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2023": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json index 3c7fd9795..360cd2ec3 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2024/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2024": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json index 76bf0f2a3..1195980e3 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2025/packages.lock.json @@ -265,9 +265,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -291,7 +291,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2025": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Navisworks/Speckle.Connectors.Navisworks2026/packages.lock.json b/Connectors/Navisworks/Speckle.Connectors.Navisworks2026/packages.lock.json index 9e8f8fd6c..6c657dc3f 100644 --- a/Connectors/Navisworks/Speckle.Connectors.Navisworks2026/packages.lock.json +++ b/Connectors/Navisworks/Speckle.Connectors.Navisworks2026/packages.lock.json @@ -266,9 +266,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.navisworks2026": { @@ -339,18 +339,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -360,14 +360,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, ".NETFramework,Version=v4.8/win-x64": { diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 273a8e94a..102304bad 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -281,9 +281,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -306,7 +306,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.revit2022": { @@ -351,11 +351,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Revit.API": { @@ -366,9 +366,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -378,14 +378,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 37f8041d6..b04ef393b 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -281,9 +281,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -306,7 +306,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.revit2023": { @@ -351,11 +351,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Revit.API": { @@ -366,9 +366,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -378,14 +378,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 8538d2823..7b8f6d1df 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -281,9 +281,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -306,7 +306,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.revit2024": { @@ -351,11 +351,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Revit.API": { @@ -366,9 +366,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -378,14 +378,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index bb864460a..63bca162c 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -226,9 +226,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -251,7 +251,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.revit2025": { @@ -296,11 +296,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Revit.API": { @@ -311,9 +311,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -321,14 +321,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Revit/Speckle.Connectors.Revit2026/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2026/packages.lock.json index ad5e1f8fc..5763da37e 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2026/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2026/packages.lock.json @@ -219,9 +219,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -244,7 +244,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.revit2026": { @@ -280,11 +280,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Revit.API": { @@ -295,9 +295,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -305,14 +305,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Connectors/Rhino/Speckle.Connectors.Grasshopper7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Grasshopper7/packages.lock.json index 8ce2c26c7..acdbbc29b 100644 --- a/Connectors/Rhino/Speckle.Connectors.Grasshopper7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Grasshopper7/packages.lock.json @@ -325,9 +325,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -337,7 +337,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.rhino7": { @@ -382,18 +382,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -403,14 +403,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json index 3ded2f46e..0dc2f7e27 100644 --- a/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json @@ -325,9 +325,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -337,7 +337,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.rhino8": { @@ -382,18 +382,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -403,14 +403,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 42c893162..9780e996a 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -306,9 +306,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -341,7 +341,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.rhino7": { @@ -401,18 +401,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -422,14 +422,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "System.Resources.Extensions": { "type": "CentralTransitive", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index e302ced6a..78f33d77e 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -306,9 +306,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -341,7 +341,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.rhino8": { @@ -401,18 +401,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -422,14 +422,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "System.Resources.Extensions": { "type": "CentralTransitive", diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json new file mode 100644 index 000000000..944e0f493 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json @@ -0,0 +1,370 @@ +{ + "version": 2, + "dependencies": { + "net8.0-windows7.0": { + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net461": "1.0.3" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "RhinoCommon": { + "type": "Direct", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "Wo6JXheyDBvilyIwDY6xZCQJC4170jzAlTSlMgh8yokUY+vYyCl4KJVXZofIOynNt/xx5wLqb2On5gZZekXR6w==", + "dependencies": { + "System.Drawing.Common": "7.0.0" + } + }, + "RhinoWindows": { + "type": "Direct", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "9zqCorcLRBeiW/j1RTwUS4E7bnZetAdA9WDdtd/AQccjOpxdtw76wdN+ciyQ6qslseWkwZ9qSBeh7QaM800Ntw==", + "dependencies": { + "RhinoCommon": "[8.21.25188.17001]" + } + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.6, )", + "resolved": "0.9.6", + "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" + }, + "GraphQL.Client": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0", + "GraphQL.Client.Abstractions.Websocket": "6.0.0", + "System.Reactive": "5.0.0" + } + }, + "GraphQL.Client.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==", + "dependencies": { + "GraphQL.Primitives": "6.0.0" + } + }, + "GraphQL.Client.Abstractions.Websocket": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0" + } + }, + "GraphQL.Primitives": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "nOP8R1mVb/6mZtm2qgAJXn/LFm/2kMjHDAg/QJLFG6CuWYJtaD3p1BwQhufBVvRzL9ceJ/xF0SQ0qsI2GkDQAA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "2.2.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "65MrmXCziWaQFrI0UHkQbesrX5wTwf9XPjY5yFm/VkgJKFJ5gqvXRoXjIZcf2wLi5ZlwGz/oMYfyURVCWbM5iw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "2.2.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "vJ9xvOZCnUAIHcGC3SU35r3HKmHTVIeHzo6u/qzlHAqD8m6xv92MLin4oJntTvkpKxVX3vI1GFFkIQtU3AdlsQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "2.2.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "UpZLNLBpIZ0GTebShui7xXYh6DmBHjWM8NxGxZbdQh/bPZ5e6YswqI+bru6BnEL5eWiOdodsXtEz3FROcgi/qg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Primitives": "2.2.0", + "System.ComponentModel.Annotations": "4.5.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "azyQtqbm4fSaDzZHD/J+V6oWMFaf2tWP4WEGIYePLCMw3+b2RQdj9ybgbQyjCshcitQKQ4lEDOZjmSlTTrHxUg==", + "dependencies": { + "System.Memory": "4.5.1", + "System.Runtime.CompilerServices.Unsafe": "4.5.1" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ==" + }, + "Speckle.Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.2", + "contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.4", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.4" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "CSlb5dUp1FMIkez9Iv5EXzpeq7rHryVNqwJMWnpq87j9zWZexaEMdisDktMsnnrzKM6ahNrsTkjqNodTBPBxtQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==" + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "7.0.0" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.3", + "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw==" + }, + "speckle.connectors.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", + "Speckle.Connectors.Logging": "[1.0.0, )", + "Speckle.Objects": "[3.5.1-rc.1, )", + "Speckle.Sdk": "[3.5.1-rc.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1-rc.1, )" + } + }, + "speckle.connectors.dui": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", + "Speckle.Connectors.Common": "[1.0.0, )" + } + }, + "speckle.connectors.dui.webview": { + "type": "Project", + "dependencies": { + "Microsoft.Web.WebView2": "[1.0.1938.49, )", + "Speckle.Connectors.DUI": "[1.0.0, )" + } + }, + "speckle.connectors.logging": { + "type": "Project" + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", + "Speckle.Objects": "[3.5.1-rc.1, )" + } + }, + "speckle.converters.rhino8": { + "type": "Project", + "dependencies": { + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "2.2.0", + "contentHash": "MZtBIwfDFork5vfjpJdG5g8wuJFt7d/y3LOSVVtDK/76wlbtz6cjltfKHqLx2TKVqTj5/c41t77m1+h20zqtPA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "2.2.0", + "contentHash": "Nxqhadc9FCmFHzU+fz3oc8sFlE6IadViYg8dfUdGzJZ2JUxnCsRghBhhOWdM4B2zSZqEc+0BjliBh/oNdRZuig==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "2.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging.Abstractions": "2.2.0", + "Microsoft.Extensions.Options": "2.2.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "2.2.0", + "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Microsoft.Web.WebView2": { + "type": "CentralTransitive", + "requested": "[1.0.1938.49, )", + "resolved": "1.0.1938.49", + "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" + }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.5.1-rc.1, )", + "resolved": "3.5.1-rc.1", + "contentHash": "kkHlYdOdTuky7BvyU3fRayS5P/3E3EDQ6yBbwWqQqjGN3c/fozqI+20Xm87KJrkMb/9XpMfQxMfZX1n4UN80sA==", + "dependencies": { + "Speckle.Sdk": "3.5.1-rc.1" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.5.1-rc.1, )", + "resolved": "3.5.1-rc.1", + "contentHash": "ZyNQI1IyWSAQ4Xc72v0WOeXon9BwtpIiw6wCIT7GrRjymSe5jXW/qMpG3YpBMccGPljCDZJFDmd87fKnWNRt3w==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.Data.Sqlite": "7.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Speckle.DoubleNumerics": "4.1.0", + "Speckle.Newtonsoft.Json": "13.0.2", + "Speckle.Sdk.Dependencies": "3.5.1-rc.1" + } + }, + "Speckle.Sdk.Dependencies": { + "type": "CentralTransitive", + "requested": "[3.5.1-rc.1, )", + "resolved": "3.5.1-rc.1", + "contentHash": "zDaocTPBFl2M5NkMsE9VqTLgbY7wy/MrE21JMBqOOcxHVtwDNOlSY9npBWDy8aAUEl6eJEKPoQr2B3Zd/RmJ9g==" + } + }, + "net8.0-windows7.0/win-x64": { + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ==" + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "7.0.0" + } + }, + "Microsoft.Web.WebView2": { + "type": "CentralTransitive", + "requested": "[1.0.1938.49, )", + "resolved": "1.0.1938.49", + "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" + } + } + } +} \ No newline at end of file diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs index 15c85089e..13fbfa305 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs @@ -13,8 +13,13 @@ public class PropertiesExtractor { Dictionary properties = new(); var userStrings = rhObject.Attributes.GetUserStrings(); - foreach (var key in userStrings.AllKeys) + foreach (string? key in userStrings.AllKeys) { + if (key == null) + { + continue; + } + try { if (key == "$block-instance-original-object-id$") // skip: this seems to be an invisible user string that shows up on block instances @@ -22,7 +27,7 @@ public class PropertiesExtractor continue; } - if (userStrings[key].StartsWith("%<")) + if (userStrings[key]?.StartsWith("%<") ?? false) { var value = RhinoApp.ParseTextField(userStrings[key], rhObject, null); properties[key] = value; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoGroupBaker.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoGroupBaker.cs index bf719ccb2..dea94abe5 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoGroupBaker.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoGroupBaker.cs @@ -54,7 +54,7 @@ public class RhinoGroupBaker Dictionary> applicationIdMap ) { - if (applicationIdMap.TryGetValue(oldObjId, out IReadOnlyCollection value)) + if (applicationIdMap.TryGetValue(oldObjId, out IReadOnlyCollection? value)) { return value; } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs index 37a934e73..96dfbe99c 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs @@ -34,10 +34,10 @@ public static class ServiceRegistration serviceCollection.AddSingleton(SpeckleConnectorsRhinoPlugin.Instance); serviceCollection.AddSingleton(SpeckleConnectorsRhinoCommand.Instance); serviceCollection.AddDUI(); + serviceCollection.AddDUIView(); } serviceCollection.AddConnectors(); - serviceCollection.AddDUIView(); // Register bindings serviceCollection.AddSingleton(); diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json index 19507f437..574d5e4a3 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2023/packages.lock.json @@ -325,9 +325,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -360,7 +360,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "LibTessDotNet": { @@ -410,18 +410,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -431,14 +431,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index b43c4806d..32731ea6b 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -406,9 +406,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -441,7 +441,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "LibTessDotNet": { @@ -491,18 +491,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -512,14 +512,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2025/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2025/packages.lock.json index ba2483b4c..649cce6f1 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2025/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2025/packages.lock.json @@ -406,9 +406,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -441,7 +441,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "LibTessDotNet": { @@ -491,18 +491,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -512,14 +512,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 5492cf7a4..7256cd387 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 85e96735a..bfd02d940 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 8a0ef7da3..e17305e22 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -285,7 +285,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -329,18 +329,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -350,14 +350,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 46573bb41..88e025109 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -210,9 +210,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -236,7 +236,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -280,18 +280,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -299,14 +299,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2026/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2026/packages.lock.json index 9bf4b990a..2be562c8a 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2026/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2026/packages.lock.json @@ -210,9 +210,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -236,7 +236,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -280,18 +280,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -299,14 +299,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json index 2f643899d..3c8d2afef 100644 --- a/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS21/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json index 764994c50..6bf6b18f2 100644 --- a/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json +++ b/Converters/CSi/Speckle.Converters.ETABS22/packages.lock.json @@ -209,7 +209,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -238,18 +238,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -257,14 +257,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json index 349f56d84..58ca88601 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2022/packages.lock.json @@ -267,7 +267,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -317,14 +317,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json index 2ea9ed457..38885e6a5 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2023/packages.lock.json @@ -267,7 +267,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -317,14 +317,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index ed005e456..ef5f3f3f4 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -267,7 +267,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -317,14 +317,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json index 6e2440c41..c5cc045af 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2025/packages.lock.json @@ -219,9 +219,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -245,7 +245,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -289,18 +289,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2026/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2026/packages.lock.json index 6793a37fe..1818337ad 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2026/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2026/packages.lock.json @@ -219,9 +219,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -245,7 +245,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -289,18 +289,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json index db15010d2..3c9735c81 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2020/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -316,18 +316,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -337,14 +337,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json index f45017354..41ba46882 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2021/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -316,18 +316,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -337,14 +337,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json index c8efdd5ee..684f98847 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2022/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -316,18 +316,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -337,14 +337,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json index b0b0423ca..cb017a588 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2023/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -316,18 +316,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -337,14 +337,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json index 9f3c036f1..d05e07af0 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2024/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -316,18 +316,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -337,14 +337,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json index 6dddb069b..bb3dfcf54 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2025/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -316,18 +316,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -337,14 +337,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Navisworks/Speckle.Converters.Navisworks2026/packages.lock.json b/Converters/Navisworks/Speckle.Converters.Navisworks2026/packages.lock.json index 5787cdd70..d4399aa06 100644 --- a/Converters/Navisworks/Speckle.Converters.Navisworks2026/packages.lock.json +++ b/Converters/Navisworks/Speckle.Converters.Navisworks2026/packages.lock.json @@ -260,9 +260,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -279,7 +279,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -317,18 +317,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -338,14 +338,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 2b71f6bbb..bf099a8da 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index 3a7ee3e2a..1e9e1cdfe 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index c71980343..1855b6d3f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index 1a3362e35..e9b9bcee3 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -209,7 +209,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -238,18 +238,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -257,14 +257,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2026/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2026/packages.lock.json index 539588374..534cd6e8f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2026/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2026/packages.lock.json @@ -209,7 +209,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -238,18 +238,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -257,14 +257,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 4055ccb2f..afdd2a2b6 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index a936bd2aa..a37dfba22 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -258,7 +258,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -287,18 +287,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -308,14 +308,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json index 03f50083e..13fef4f06 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2023/packages.lock.json @@ -302,7 +302,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "LibTessDotNet": { @@ -337,18 +337,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -358,14 +358,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "Tekla.Structures.Dialog": { "type": "CentralTransitive", diff --git a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json index d7c798e9b..48b345568 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2024/packages.lock.json @@ -343,7 +343,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "LibTessDotNet": { @@ -378,18 +378,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -399,14 +399,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "Tekla.Structures.Plugins": { "type": "CentralTransitive", diff --git a/Converters/Tekla/Speckle.Converter.Tekla2025/packages.lock.json b/Converters/Tekla/Speckle.Converter.Tekla2025/packages.lock.json index d7c798e9b..48b345568 100644 --- a/Converters/Tekla/Speckle.Converter.Tekla2025/packages.lock.json +++ b/Converters/Tekla/Speckle.Converter.Tekla2025/packages.lock.json @@ -343,7 +343,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "LibTessDotNet": { @@ -378,18 +378,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -399,14 +399,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "Tekla.Structures.Plugins": { "type": "CentralTransitive", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 95b78154b..14bf8aa57 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -314,9 +314,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -335,7 +335,7 @@ "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Moq": "[4.20.70, )", "NUnit": "[4.1.0, )", - "Speckle.Sdk": "[3.5.0, )" + "Speckle.Sdk": "[3.5.1, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -373,18 +373,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -392,14 +392,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index 1f6fe89ee..c193ec8a1 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -309,18 +309,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -330,14 +330,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0": { @@ -549,9 +549,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -599,18 +599,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -618,14 +618,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 482e3e661..740cdf0f1 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -259,9 +259,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -317,14 +317,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0": { @@ -536,9 +536,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -573,18 +573,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -592,14 +592,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index 1189776ac..d8321a084 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -50,9 +50,9 @@ - - - + + + diff --git a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json index ea5161cf2..cb22516d3 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc.Tester/packages.lock.json @@ -204,9 +204,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -220,8 +220,8 @@ "Ara3D.Utils": "[1.4.5, )", "Microsoft.Extensions.DependencyInjection": "[8.0.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )" } }, "Ara3D.Buffers": { @@ -283,18 +283,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -302,14 +302,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Importers/Ifc/Speckle.Importers.Ifc.Tester2/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc.Tester2/packages.lock.json index ea5161cf2..cb22516d3 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc.Tester2/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc.Tester2/packages.lock.json @@ -204,9 +204,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -220,8 +220,8 @@ "Ara3D.Utils": "[1.4.5, )", "Microsoft.Extensions.DependencyInjection": "[8.0.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )" } }, "Ara3D.Buffers": { @@ -283,18 +283,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -302,14 +302,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json index 522732d41..ae31606b2 100644 --- a/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json +++ b/Importers/Ifc/Speckle.Importers.Ifc/packages.lock.json @@ -68,18 +68,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -87,7 +87,7 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "GraphQL.Client": { @@ -261,9 +261,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -295,9 +295,9 @@ }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Program.cs b/Importers/Rhino/Speckle.Importers.Rhino/Program.cs index b57767a74..ba2a556fe 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Program.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Program.cs @@ -103,12 +103,12 @@ public static class Program try { var sender = ActivatorUtilities.CreateInstance(container); - var versionId = await sender.Send(projectId, modelId, new Uri(serverUrl), token); + var version = await sender.Send(projectId, modelId, new Uri(serverUrl), token); var result = - versionId == null + version == null ? new RhinoImportResult() { Success = false, ErrorMessage = "Failed to create version!" } - : new RhinoImportResult() { Success = true, CommitId = versionId }; + : new RhinoImportResult() { Success = true, CommitId = version.id }; File.WriteAllText(resultsPath, JsonConvert.SerializeObject(result)); } diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs b/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs index 1343c9051..6221aa7dc 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs @@ -7,6 +7,7 @@ using Speckle.Converters.Common; using Speckle.Converters.Rhino; using Speckle.Sdk.Credentials; using Speckle.Sdk.Logging; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; namespace Speckle.Importers.Rhino; @@ -19,7 +20,7 @@ public class Sender( ILogger logger ) { - public async Task Send(string projectId, string modelId, Uri serverUrl, string token) + public async Task Send(string projectId, string modelId, Uri serverUrl, string token) { using var activity = activityFactory.Start(); using var scope = serviceProvider.CreateScope(); @@ -41,7 +42,7 @@ public class Sender( var account = await accountFactory.CreateAccount(serverUrl, token); var operation = scope.ServiceProvider.GetRequiredService>(); var buildResults = await operation.Build(rhinoObjects, projectId, progress, CancellationToken.None); - var (results, versionId) = await operation.Send( + var (results, version) = await operation.Send( buildResults.RootObject, projectId, modelId, @@ -54,7 +55,7 @@ public class Sender( logger.LogInformation($"Root: {results.RootId}"); - return versionId; + return version; } #pragma warning disable CA1031 catch (Exception ex) diff --git a/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json b/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json index 9abd25fb0..2248f6cee 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json +++ b/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json @@ -335,9 +335,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -377,7 +377,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.rhino8": { @@ -456,18 +456,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -477,14 +477,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "System.Resources.Extensions": { "type": "CentralTransitive", diff --git a/Sdk/Speckle.Connectors.Common.Tests/Operations/SendOperationTests.cs b/Sdk/Speckle.Connectors.Common.Tests/Operations/SendOperationTests.cs index eddea617b..9685a7589 100644 --- a/Sdk/Speckle.Connectors.Common.Tests/Operations/SendOperationTests.cs +++ b/Sdk/Speckle.Connectors.Common.Tests/Operations/SendOperationTests.cs @@ -17,6 +17,7 @@ using Speckle.Sdk.Models; using Speckle.Sdk.Serialisation; using Speckle.Sdk.Serialisation.V2.Send; using Speckle.Testing; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; namespace Speckle.Connectors.Common.Tests.Operations; @@ -56,8 +57,8 @@ public class SendOperationTests : MoqTest var refs = new Dictionary(); var serializeProcessResults = new SerializeProcessResults(rootId, refs); threadContext - .Setup(x => x.RunOnThreadAsync(It.IsAny>>(), false)) - .ReturnsAsync((serializeProcessResults, versionId)); + .Setup(x => x.RunOnThreadAsync(It.IsAny>>(), false)) + .ReturnsAsync((serializeProcessResults, new Version() { id = versionId })); var sp = services.BuildServiceProvider(); @@ -124,10 +125,10 @@ public class SendOperationTests : MoqTest sendConversionCache.Setup(x => x.StoreSendResult(projectId, refs)); sendProgress.Setup(x => x.Begin()); - + const string EXPECTED_ID = "version123"; sendOperationVersionRecorder .Setup(x => x.RecordVersion(rootId, modelId, projectId, sourceApplication, null, account, ct)) - .ReturnsAsync("version"); + .ReturnsAsync(new Version() { id = EXPECTED_ID }); var sp = services.BuildServiceProvider(); @@ -152,6 +153,6 @@ public class SendOperationTests : MoqTest ct ); result.Should().Be(serializeProcessResults); - version.Should().Be("version"); + version.id.Should().Be(EXPECTED_ID); } } diff --git a/Sdk/Speckle.Connectors.Common.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Common.Tests/packages.lock.json index cbb368c64..c03dfaf22 100644 --- a/Sdk/Speckle.Connectors.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common.Tests/packages.lock.json @@ -308,9 +308,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.0, )", - "Speckle.Sdk": "[3.5.0, )", - "Speckle.Sdk.Dependencies": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.logging": { @@ -322,7 +322,7 @@ "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Moq": "[4.20.70, )", "NUnit": "[4.1.0, )", - "Speckle.Sdk": "[3.5.0, )" + "Speckle.Sdk": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -366,18 +366,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -385,14 +385,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Sdk/Speckle.Connectors.Common/Connector.cs b/Sdk/Speckle.Connectors.Common/Connector.cs index e5e784da6..8e56dab2d 100644 --- a/Sdk/Speckle.Connectors.Common/Connector.cs +++ b/Sdk/Speckle.Connectors.Common/Connector.cs @@ -50,7 +50,7 @@ public static class Connector Headers: new() { { "X-Seq-ApiKey", "y5YnBp12ZE1Czh4tzZWn" } } ) ], - MinimumLevel: SpeckleLogLevel.Warning + MinimumLevel: SpeckleLogLevel.Information ), new SpeckleTracing( Console: false, diff --git a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs index 1ba1667ed..d33461aaa 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs @@ -10,6 +10,7 @@ using Speckle.Sdk.Logging; using Speckle.Sdk.Models; using Speckle.Sdk.Serialisation; using Speckle.Sdk.Serialisation.V2.Send; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; namespace Speckle.Connectors.Common.Operations; @@ -36,7 +37,7 @@ public sealed class SendOperation( var buildResult = await Build(objects, sendInfo.ProjectId, onOperationProgressed, ct); // base object handler is separated, so we can do some testing on non-production databases // exact interface may want to be tweaked when we implement this - var (results, versionId) = await threadContext.RunOnWorkerAsync( + var (results, version) = await threadContext.RunOnWorkerAsync( () => Send( buildResult.RootObject, @@ -50,7 +51,7 @@ public sealed class SendOperation( ) ); ct.ThrowIfCancellationRequested(); - return new(results.RootId, versionId, results.ConvertedReferences, buildResult.ConversionResults); + return new(results.RootId, version.id, results.ConvertedReferences, buildResult.ConversionResults); } public async Task Build( @@ -68,7 +69,7 @@ public sealed class SendOperation( return buildResult; } - public async Task<(SerializeProcessResults, string)> Send( + public async Task<(SerializeProcessResults, Version)> Send( Base commitObject, string projectId, string modelId, @@ -103,7 +104,7 @@ public sealed class SendOperation( onOperationProgressed.Report(new("Linking version to model...", null)); // 8 - Create the version (commit) - var versionId = await sendOperationVersionRecorder.RecordVersion( + var version = await sendOperationVersionRecorder.RecordVersion( sendResult.RootId, modelId, projectId, @@ -113,7 +114,7 @@ public sealed class SendOperation( ct ); - return (sendResult, versionId); + return (sendResult, version); } } diff --git a/Sdk/Speckle.Connectors.Common/Operations/SendOperationVersionRecorder.cs b/Sdk/Speckle.Connectors.Common/Operations/SendOperationVersionRecorder.cs index d4155b52f..854b10d5d 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/SendOperationVersionRecorder.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/SendOperationVersionRecorder.cs @@ -2,13 +2,14 @@ using Speckle.Sdk.Api; using Speckle.Sdk.Api.GraphQL.Inputs; using Speckle.Sdk.Credentials; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; namespace Speckle.Connectors.Common.Operations; [GenerateAutoInterface] public class SendOperationVersionRecorder(IClientFactory clientFactory) : ISendOperationVersionRecorder { - public async Task RecordVersion( + public async Task RecordVersion( string rootId, string modelId, string projectId, @@ -31,6 +32,6 @@ public class SendOperationVersionRecorder(IClientFactory clientFactory) : ISendO ct ) .ConfigureAwait(true); - return x.id; + return x; } } diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 21dae5bd8..c0f4567b3 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -44,18 +44,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -65,14 +65,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "GraphQL.Client": { "type": "Transitive", @@ -360,18 +360,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -379,14 +379,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" }, "GraphQL.Client": { "type": "Transitive", diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index c92a56c09..f99385928 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.0, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.testing": { @@ -331,7 +331,7 @@ "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Moq": "[4.20.70, )", "NUnit": "[4.1.0, )", - "Speckle.Sdk": "[3.5.0, )" + "Speckle.Sdk": "[3.5.1, )" } }, "Microsoft.Extensions.Logging": { @@ -360,18 +360,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -379,14 +379,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 12f9d9fc2..bff12e21c 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -41,11 +41,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "GraphQL.Client": { @@ -283,9 +283,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Bcl.AsyncInterfaces": "5.0.0", @@ -295,14 +295,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0": { @@ -345,11 +345,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "k76bpvFvArisd0DbdtpLQbonkl57CYG3szD0sDw0fWZolh8nogw2hRrNL6U2KcrJqCvYVc+zGYSXTJfv9xgntA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.0" + "Speckle.Sdk": "3.5.1" } }, "GraphQL.Client": { @@ -538,9 +538,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -548,14 +548,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } diff --git a/Sdk/Speckle.Testing/packages.lock.json b/Sdk/Speckle.Testing/packages.lock.json index 53a049d5a..200dad5f3 100644 --- a/Sdk/Speckle.Testing/packages.lock.json +++ b/Sdk/Speckle.Testing/packages.lock.json @@ -59,9 +59,9 @@ }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "mOLFubk+co9rDtRLsB1wobvmkYaiEMvDV+3hRPlhnqe8WhV+vbBSjzj58EpKEprWXLwjyc0kVzsrvlM++PnL0g==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -69,7 +69,7 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.0" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Castle.Core": { @@ -277,9 +277,9 @@ }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.0, )", - "resolved": "3.5.0", - "contentHash": "lPYk1E97tWJ5qO6B8F30VZ+vgOxMYQ5cspyUOALwWoyFloM1KZkvwyeBlm8FiQDx0su5KbTS4S10LQvnS2AqKg==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } } } From ad1b6fd74cb2a51ac1605c0f5568bb01fb520613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Fri, 8 Aug 2025 19:13:32 +0800 Subject: [PATCH 3/7] feat(rhino): add vertex normals optimization setting (#1022) * chore: create settings class * chore: send settings * chore: converter reacts to setting * fix: knock-on effect * fix: format * fix: importer needs param * feat: adds seperate setting for sendTextureCoordinates * refactor: grouped setting --- .../Registration/PriorityLoader.cs | 3 +- .../Bindings/RhinoReceiveBinding.cs | 3 +- .../Bindings/RhinoSendBinding.cs | 15 ++++++-- .../Settings/AddVisualizationProperties.cs | 12 ++++++ .../Send/Settings/ToSpeckleSettingsManager.cs | 38 +++++++++++++++++++ .../Registration/ServiceRegistration.cs | 4 ++ .../Speckle.Connectors.RhinoShared.projitems | 2 + .../RhinoConversionSettings.cs | 7 +++- .../RhinoConversionSettingsFactory.cs | 9 ++++- .../ToSpeckle/Raw/MeshToSpeckleConverter.cs | 38 +++++++++++-------- .../Rhino/Speckle.Importers.Rhino/Sender.cs | 3 +- 11 files changed, 109 insertions(+), 25 deletions(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/AddVisualizationProperties.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs index 51ef699f7..c774f8c17 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Registration/PriorityLoader.cs @@ -33,11 +33,12 @@ public class PriorityLoader : GH_AssemblyPriority public static IServiceScope CreateScopeForActiveDocument() { + // NOTE: introduction of AddVisualizationProperties setting not accounted for in GH, hence hardcoded as true (i.e. "as before") var scope = Container.CreateScope(); var rhinoConversionSettingsFactory = scope.ServiceProvider.GetRequiredService(); scope .ServiceProvider.GetRequiredService>() - .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc)); + .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc, true)); return scope; } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs index 959d43afc..b5e36a8b0 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs @@ -24,6 +24,7 @@ public class RhinoReceiveBinding( public async Task Receive(string modelCardId) { + // NOTE: introduction of AddVisualizationProperties setting not accounted for in receive pipeline, hence hardcoded as true (i.e. "as before") using var manager = receiveOperationManagerFactory.Create(); await manager.Process( Commands, @@ -31,7 +32,7 @@ public class RhinoReceiveBinding( (sp, card) => { sp.GetRequiredService>() - .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc)); + .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc, true)); }, async (modelName, processor) => { diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index cd5c332f3..5439d7e97 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -14,6 +14,7 @@ using Speckle.Connectors.DUI.Models.Card; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.Settings; using Speckle.Connectors.Rhino.Operations.Send.Filters; +using Speckle.Connectors.Rhino.Operations.Send.Settings; using Speckle.Converters.Common; using Speckle.Converters.Rhino; using Speckle.Sdk.Common; @@ -29,6 +30,7 @@ public sealed class RhinoSendBinding : ISendBinding private readonly DocumentModelStore _store; private readonly ICancellationManager _cancellationManager; private readonly ISendConversionCache _sendConversionCache; + private readonly ToSpeckleSettingsManager _toSpeckleSettingsManager; private readonly ILogger _logger; private readonly IRhinoConversionSettingsFactory _rhinoConversionSettingsFactory; private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; @@ -59,6 +61,7 @@ public sealed class RhinoSendBinding : ISendBinding IBrowserBridge parent, ICancellationManager cancellationManager, ISendConversionCache sendConversionCache, + ToSpeckleSettingsManager toSpeckleSettingsManager, ILogger logger, IRhinoConversionSettingsFactory rhinoConversionSettingsFactory, ITopLevelExceptionHandler topLevelExceptionHandler, @@ -69,6 +72,7 @@ public sealed class RhinoSendBinding : ISendBinding _idleManager = idleManager; _cancellationManager = cancellationManager; _sendConversionCache = sendConversionCache; + _toSpeckleSettingsManager = toSpeckleSettingsManager; _logger = logger; _rhinoConversionSettingsFactory = rhinoConversionSettingsFactory; Parent = parent; @@ -273,7 +277,7 @@ public sealed class RhinoSendBinding : ISendBinding public List GetSendFilters() => [new RhinoSelectionFilter() { IsDefault = true }, new RhinoLayersFilter()]; - public List GetSendSettings() => []; + public List GetSendSettings() => [new AddVisualizationProperties(false)]; public async Task Send(string modelCardId) { @@ -282,9 +286,14 @@ public sealed class RhinoSendBinding : ISendBinding await manager.Process( Commands, modelCardId, - (sp, _) => + (sp, card) => sp.GetRequiredService>() - .Initialize(_rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc)), + .Initialize( + _rhinoConversionSettingsFactory.Create( + RhinoDoc.ActiveDoc, + _toSpeckleSettingsManager.GetAddVisualizationPropertiesSetting(card) + ) + ), card => { return Task.FromResult>( diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/AddVisualizationProperties.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/AddVisualizationProperties.cs new file mode 100644 index 000000000..47f325090 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/AddVisualizationProperties.cs @@ -0,0 +1,12 @@ +using Speckle.Connectors.DUI.Settings; + +namespace Speckle.Connectors.Rhino.Operations.Send.Settings; + +public class AddVisualizationProperties(bool value) : ICardSetting +{ + public string? Id { get; set; } = "addVisualizationProperties"; + public string? Title { get; set; } = "Add visualization properties for meshes (will increase model size)"; + public string? Type { get; set; } = "boolean"; + public object? Value { get; set; } = value; + public List? Enum { get; set; } +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs new file mode 100644 index 000000000..0c91bf3e3 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Settings/ToSpeckleSettingsManager.cs @@ -0,0 +1,38 @@ +using Speckle.Connectors.Common.Caching; +using Speckle.Connectors.DUI.Models.Card; +using Speckle.Sdk.Common; + +namespace Speckle.Connectors.Rhino.Operations.Send.Settings; + +public class ToSpeckleSettingsManager +{ + private readonly ISendConversionCache _sendConversionCache; + private readonly Dictionary _addVisualizationPropertiesCache = []; + + public ToSpeckleSettingsManager(ISendConversionCache sendConversionCache) + { + _sendConversionCache = sendConversionCache; + } + + public bool GetAddVisualizationPropertiesSetting(SenderModelCard modelCard) + { + var value = modelCard.Settings?.First(s => s.Id == "addVisualizationProperties").Value as bool?; + var returnValue = value != null && value.NotNull(); + if (_addVisualizationPropertiesCache.TryGetValue(modelCard.ModelCardId.NotNull(), out bool? previousValue)) + { + if (previousValue != returnValue) + { + EvictCacheForModelCard(modelCard); + } + } + + _addVisualizationPropertiesCache[modelCard.ModelCardId] = returnValue; + return returnValue; + } + + private void EvictCacheForModelCard(SenderModelCard modelCard) + { + var objectIds = modelCard.SendFilter != null ? modelCard.SendFilter.NotNull().SelectedObjectIds : []; + _sendConversionCache.EvictObjects(objectIds); + } +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs index 96dfbe99c..3f3c467d6 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs @@ -19,6 +19,7 @@ using Speckle.Connectors.Rhino.HostApp; using Speckle.Connectors.Rhino.HostApp.Properties; using Speckle.Connectors.Rhino.Operations.Receive; using Speckle.Connectors.Rhino.Operations.Send; +using Speckle.Connectors.Rhino.Operations.Send.Settings; using Speckle.Connectors.Rhino.Plugin; using Speckle.Sdk.Models.GraphTraversal; @@ -56,6 +57,9 @@ public static class ServiceRegistration serviceCollection.AddScoped(); serviceCollection.AddScoped(); + // register send settings + serviceCollection.AddScoped(); + // register send conversion cache serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems index 9f6b3dc7a..6791d0d80 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems @@ -29,6 +29,8 @@ + + diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettings.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettings.cs index 6255f6009..455555cb4 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettings.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettings.cs @@ -5,4 +5,9 @@ namespace Speckle.Converters.Rhino; /// /// Represents the settings used for Rhino and Grasshopper conversions. /// -public record RhinoConversionSettings(RhinoDoc Document, string SpeckleUnits, bool ModelFarFromOrigin); +public record RhinoConversionSettings( + RhinoDoc Document, + string SpeckleUnits, + bool ModelFarFromOrigin, + bool AddVisualizationProperties +); diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettingsFactory.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettingsFactory.cs index 91e68540f..8b46a7091 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettingsFactory.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/RhinoConversionSettingsFactory.cs @@ -12,8 +12,13 @@ public class RhinoConversionSettingsFactory( { public RhinoConversionSettings Current => settingsStore.Current; - public RhinoConversionSettings Create(RhinoDoc document) => - new(document, unitsConverter.ConvertOrThrow(RhinoDoc.ActiveDoc.ModelUnitSystem), ModelFarFromOrigin()); + public RhinoConversionSettings Create(RhinoDoc document, bool addVisualizationProperties) => + new( + document, + unitsConverter.ConvertOrThrow(RhinoDoc.ActiveDoc.ModelUnitSystem), + ModelFarFromOrigin(), + addVisualizationProperties + ); /// /// Quick check whether any of the objects in the scene might be located too far from origin and cause precision issues during meshing. diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/MeshToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/MeshToSpeckleConverter.cs index 078a830e0..2bbe4f676 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/MeshToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/MeshToSpeckleConverter.cs @@ -80,14 +80,6 @@ public class MeshToSpeckleConverter : ITypedConverter } } - var textureCoordinates = new double[target.TextureCoordinates.Count * 2]; - x = 0; - foreach (var textureCoord in target.TextureCoordinates) - { - textureCoordinates[x++] = textureCoord.X; - textureCoordinates[x++] = textureCoord.Y; - } - var colors = new int[target.VertexColors.Count]; x = 0; foreach (var c in target.VertexColors) @@ -95,13 +87,27 @@ public class MeshToSpeckleConverter : ITypedConverter colors[x++] = c.ToArgb(); } - var vertexNormals = new double[target.Normals.Count * 3]; - x = 0; - foreach (var n in target.Normals) + // NOTE: textureCoordinates and vertexNormals will be empty array when setting is false + double[] textureCoordinates = []; + double[] vertexNormals = []; + if (_settingsStore.Current.AddVisualizationProperties) { - vertexNormals[x++] = n.X; - vertexNormals[x++] = n.Y; - vertexNormals[x++] = n.Z; + textureCoordinates = new double[target.TextureCoordinates.Count * 2]; + x = 0; + foreach (var textureCoord in target.TextureCoordinates) + { + textureCoordinates[x++] = textureCoord.X; + textureCoordinates[x++] = textureCoord.Y; + } + + vertexNormals = new double[target.Normals.Count * 3]; + x = 0; + foreach (var n in target.Normals) + { + vertexNormals[x++] = n.X; + vertexNormals[x++] = n.Y; + vertexNormals[x++] = n.Z; + } } double volume = target.IsClosed ? target.Volume() : 0; @@ -112,8 +118,8 @@ public class MeshToSpeckleConverter : ITypedConverter vertices = [.. vertexCoordinates], faces = faces, colors = [.. colors], - textureCoordinates = [.. textureCoordinates], - vertexNormals = [.. vertexNormals], + textureCoordinates = [.. textureCoordinates], // this will be empty array when setting is false + vertexNormals = [.. vertexNormals], // this will be empty array when setting is false units = _settingsStore.Current.SpeckleUnits, volume = volume, bbox = bbox diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs b/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs index 6221aa7dc..98c827a02 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs @@ -22,11 +22,12 @@ public class Sender( { public async Task Send(string projectId, string modelId, Uri serverUrl, string token) { + // NOTE: introduction of AddVisualizationProperties setting not accounted for, hence hardcoded as true (i.e. "as before") using var activity = activityFactory.Start(); using var scope = serviceProvider.CreateScope(); scope .ServiceProvider.GetRequiredService>() - .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc)); + .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc, true)); try { List rhinoObjects = RhinoDoc From 0b5984b4101f44d271281988aee5be322511485c Mon Sep 17 00:00:00 2001 From: Jonathon Broughton <760691+jsdbroughton@users.noreply.github.com> Date: Tue, 12 Aug 2025 08:30:49 +0100 Subject: [PATCH 4/7] =?UTF-8?q?feat(Navisworks):=20CNX-2238=20=E2=80=93=20?= =?UTF-8?q?Add=20Revit=20interop-lite=20category=20mapping=20to=20Naviswor?= =?UTF-8?q?ks=20connector=20(BETA)=20(#1023)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Bindings/NavisworksSendBinding.cs | 4 +- ...ing.cs => ConvertHiddenElementsSetting.cs} | 0 .../Send/Settings/RevitCategoryMapping.cs | 12 ++ .../ToSpeckleSettingsManagerNavisworks.cs | 23 +++ ...ckle.Connectors.NavisworksShared.projitems | 3 +- .../RevitBuiltInCategoryExtractor.cs | 182 ++++++++++++++++++ .../HierarchicalPropertyHandler.cs | 24 ++- .../Helpers/PropertyHelpers.cs | 11 +- .../Settings/NavisworksConversionSettings.cs | 3 +- .../NavisworksConversionSettingsFactory.cs | 6 +- ...ckle.Converters.NavisworksShared.projitems | 1 + 11 files changed, 258 insertions(+), 11 deletions(-) rename Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/{ConvertHiddenEleementsSetting.cs => ConvertHiddenElementsSetting.cs} (100%) create mode 100644 Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/RevitCategoryMapping.cs create mode 100644 Converters/Navisworks/Speckle.Converters.NavisworksShared/DataExtractors/RevitBuiltInCategoryExtractor.cs diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Bindings/NavisworksSendBinding.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Bindings/NavisworksSendBinding.cs index cdab0dc93..2dbf1352b 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Bindings/NavisworksSendBinding.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Bindings/NavisworksSendBinding.cs @@ -73,6 +73,7 @@ public class NavisworksSendBinding : ISendBinding new IncludeInternalPropertiesSetting(false), new ConvertHiddenElementsSetting(false), new PreserveModelHierarchySetting(false), + new RevitCategoryMappingSetting(false) ]; public async Task Send(string modelCardId) => @@ -93,7 +94,8 @@ public class NavisworksSendBinding : ISendBinding visualRepresentationMode: _toSpeckleSettingsManagerNavisworks.GetVisualRepresentationMode(modelCard), convertHiddenElements: _toSpeckleSettingsManagerNavisworks.GetConvertHiddenElements(modelCard), includeInternalProperties: _toSpeckleSettingsManagerNavisworks.GetIncludeInternalProperties(modelCard), - preserveModelHierarchy: _toSpeckleSettingsManagerNavisworks.GetPreserveModelHierarchy(modelCard) + preserveModelHierarchy: _toSpeckleSettingsManagerNavisworks.GetPreserveModelHierarchy(modelCard), + mappingToRevitCategories: _toSpeckleSettingsManagerNavisworks.GetMappingToRevitCategories(modelCard) ) ); diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ConvertHiddenEleementsSetting.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ConvertHiddenElementsSetting.cs similarity index 100% rename from Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ConvertHiddenEleementsSetting.cs rename to Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ConvertHiddenElementsSetting.cs diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/RevitCategoryMapping.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/RevitCategoryMapping.cs new file mode 100644 index 000000000..48c514f7e --- /dev/null +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/RevitCategoryMapping.cs @@ -0,0 +1,12 @@ +using Speckle.Connectors.DUI.Settings; + +namespace Speckle.Connector.Navisworks.Operations.Send.Settings; + +public class RevitCategoryMappingSetting(bool value) : ICardSetting +{ + public string? Id { get; set; } = "mappingToRevitCategories"; + public string? Title { get; set; } = "Map to Revit Categories"; + public string? Type { get; set; } = "boolean"; + public List? Enum { get; set; } + public object? Value { get; set; } = value; +} diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs index d9be2010f..fedfc5b0a 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Operations/Send/Settings/ToSpeckleSettingsManagerNavisworks.cs @@ -18,6 +18,7 @@ public class ToSpeckleSettingsManagerNavisworks : IToSpeckleSettingsManagerNavis private readonly Dictionary _convertHiddenElementsCache = []; private readonly Dictionary _includeInternalPropertiesCache = []; private readonly Dictionary _preserveModelHierarchyCache = []; + private readonly Dictionary _revitCategoryMappingCache = []; public ToSpeckleSettingsManagerNavisworks(ISendConversionCache sendConversionCache) { @@ -78,6 +79,28 @@ public class ToSpeckleSettingsManagerNavisworks : IToSpeckleSettingsManagerNavis return origin; } + public bool GetMappingToRevitCategories(SenderModelCard modelCard) + { + if (modelCard == null) + { + throw new ArgumentNullException(nameof(modelCard)); + } + + var value = modelCard.Settings?.FirstOrDefault(s => s.Id == "mappingToRevitCategories")?.Value as bool?; + + var returnValue = value != null && value.NotNull(); + if (_revitCategoryMappingCache.TryGetValue(modelCard.ModelCardId.NotNull(), out var previousValue)) + { + if (previousValue != returnValue) + { + EvictCacheForModelCard(modelCard); + } + } + + _revitCategoryMappingCache[modelCard.ModelCardId] = returnValue; + return returnValue; + } + public bool GetConvertHiddenElements(SenderModelCard modelCard) { if (modelCard == null) diff --git a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems index 53aa9d3dd..9e2fd10e7 100644 --- a/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems +++ b/Connectors/Navisworks/Speckle.Connectors.NavisworksShared/Speckle.Connectors.NavisworksShared.projitems @@ -25,10 +25,11 @@ - + + diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataExtractors/RevitBuiltInCategoryExtractor.cs b/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataExtractors/RevitBuiltInCategoryExtractor.cs new file mode 100644 index 000000000..5b50dd4e6 --- /dev/null +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataExtractors/RevitBuiltInCategoryExtractor.cs @@ -0,0 +1,182 @@ +using static Speckle.Converter.Navisworks.Helpers.PropertyHelpers; + +namespace Speckle.Converter.Navisworks.ToSpeckle; + +public sealed class RevitBuiltInCategoryExtractor +{ + private const int ANCESTOR_AND_SELF_COUNT = 4; // It seems like this is the maximum depth found needed in practice + private const string REVIT_CAT_GROUP = "LcRevitData_Element"; + private const string REVIT_CAT_NAME = "LcRevitPropertyElementCategory"; + internal const string DEFAULT_DICT_KEY = "builtInCategory"; + + /// + /// Attempts to map a Navisworks/Revit display category from the given model item or its ancestors + /// to a known Revit built-in category constant (e.g., "OST_Walls"). + /// + internal static bool TryGetBuiltInCategory( + NAV.ModelItem item, + out string mapped, + int maxDepth = ANCESTOR_AND_SELF_COUNT + ) + { + mapped = string.Empty; + + // Look up the category value, starting at this item and walking up to maxDepth ancestors + var v = FindRevitCategoryInHierarchy(item, maxDepth); + if (v == null) + { + return false; + } + + var name = ConvertPropertyValue(v, "")?.ToString(); + if (string.IsNullOrWhiteSpace(name)) + { + return false; + } + + name = name?.Trim(); + + // Map display name to OST_* built-in category constant + var builtInCategory = DisplayNameToRevitBuiltInCategory(name); + if (string.Equals(builtInCategory, name, StringComparison.OrdinalIgnoreCase)) + { + return false; // no mapping + } + + mapped = builtInCategory; + return true; + } + + /// + /// Walks up the model item hierarchy to find the first Revit element category property. + /// + private static NAV.VariantData? FindRevitCategoryInHierarchy(NAV.ModelItem modelItem, int maxDepth) + { + var current = modelItem; + + // Walk up the model item hierarchy to find the first matching Revit category property + for (int i = 0; i < maxDepth && current != null; i++, current = current.Parent) + { + var val = current.PropertyCategories.FindPropertyByName(REVIT_CAT_GROUP, REVIT_CAT_NAME)?.Value; + + if (val != null) + { + return val; + } + } + + // No category property found in self or ancestors + return null; + } + + // Mapping of Navisworks/Revit display category names (from the importer) + // to Revit BuiltInCategory constants. Case-insensitive. + // Note: Some mapped categories are not assignable via Revit DirectShape; + // the receiver will ignore them and apply its own fallback. + private static readonly Dictionary s_revitCatMap = + new(StringComparer.OrdinalIgnoreCase) + { + // Architectural + ["Walls"] = "OST_Walls", + ["Floors"] = "OST_Floors", + ["Roofs"] = "OST_Roofs", + ["Ceilings"] = "OST_Ceilings", + ["Doors"] = "OST_Doors", + ["Windows"] = "OST_Windows", + ["Curtain Panels"] = "OST_CurtainWallPanels", + ["Curtain Wall Mullions"] = "OST_CurtainWallMullions", + ["Wall Sweeps"] = "OST_Cornices", + ["Hardscape"] = "OST_Hardscape", + ["Site"] = "OST_Site", + ["Parking"] = "OST_Parking", + ["Toposolid"] = "OST_Toposolid", + ["Levels"] = "OST_Levels", + ["Lines"] = "OST_Lines", + ["Center line"] = "OST_CenterLines", + ["Center Line"] = "OST_CenterLines", + + // Stairs & Railings + ["Stairs"] = "OST_Stairs", + ["Supports"] = "OST_Stairs", + ["Runs"] = "OST_Stairs", + ["Railings"] = "OST_StairsRailing", + ["Handrails"] = "OST_RailingHandRail", + ["Landings"] = "OST_StairsLandings", + ["Vertical Circulation"] = "OST_VerticalCirculation", + + // Structural + ["Structural Connections"] = "OST_StructConnections", + ["Structural Foundations"] = "OST_StructuralFoundation", + ["Structural Columns"] = "OST_StructuralColumns", + ["Structural Framing"] = "OST_StructuralFraming", + ["Structural Loads"] = "OST_Loads", + ["Structural Rebar"] = "OST_Rebar", + ["Structural Fabric Areas"] = "OST_FabricAreas", + ["Structural Fabric Reinforcement"] = "OST_FabricReinforcement", + ["Boundary Conditions"] = "OST_BoundaryConditions", + ["Slab Edges"] = "OST_EdgeSlab", + ["Fascias"] = "OST_Fascia", + ["Roof Soffits"] = "OST_RoofSoffit", + + // MEP - HVAC + ["Air Terminals"] = "OST_DuctTerminal", + ["Duct Fittings"] = "OST_DuctFitting", + ["Ducts"] = "OST_DuctCurves", + ["Flex Ducts"] = "OST_FlexDuctCurves", + ["Duct Accessories"] = "OST_DuctAccessory", + ["Mechanical Equipment"] = "OST_MechanicalEquipment", + + // MEP - Plumbing + ["Plumbing Fixtures"] = "OST_PlumbingFixtures", + ["Plumbing Equipment"] = "OST_PlumbingEquipment", + ["Pipe Accessories"] = "OST_PipeAccessory", + ["Pipe Fittings"] = "OST_PipeFitting", + ["Pipes"] = "OST_PipeCurves", + ["Flex Pipes"] = "OST_FlexPipeCurves", + ["Pipe Insulations"] = "OST_PipeInsulations", + + // MEP - Electrical + ["Electrical Equipment"] = "OST_ElectricalEquipment", + ["Electrical Fixtures"] = "OST_ElectricalFixtures", + ["Lighting Fixtures"] = "OST_LightingFixtures", + ["Lighting Devices"] = "OST_LightingDevices", + ["Data Devices"] = "OST_DataDevices", + ["Communication Devices"] = "OST_CommunicationDevices", + + // MEP - Conduits & Cable Trays + ["Conduit Fittings"] = "OST_ConduitFitting", + ["Conduits"] = "OST_Conduit", + ["Conduit Accessories"] = "OST_ConduitAccessory", + ["Cable Tray Fittings"] = "OST_CableTrayFitting", + ["Cable Trays"] = "OST_CableTray", + + // Equipment & Furniture + ["Casework"] = "OST_Casework", + ["Specialty Equipment"] = "OST_SpecialityEquipment", + ["Food Service Equipment"] = "OST_FoodServiceEquipment", + ["Furniture"] = "OST_Furniture", + ["Generic Models"] = "OST_GenericModel", + ["Planting"] = "OST_Planting", + ["Entourage"] = "OST_Entourage", + + // Separations & Rooms + [""] = "OST_MEPSpaceSeparationLines", + [""] = "OST_RoomSeparationLines", + ["Rooms"] = "OST_Rooms", + + // Misc + ["Ramps"] = "OST_Ramps" + }; + + /// + /// Maps a Navisworks/Revit display category name to a Revit BuiltInCategory. + /// Assumes importer emits canonical names. Case-insensitive lookup. + /// Returns the original name when no mapping exists. + /// + private static string DisplayNameToRevitBuiltInCategory(string displayName) => + string.IsNullOrEmpty(displayName) + ? displayName + : s_revitCatMap.TryGetValue(displayName, out var builtInCategory) + ? builtInCategory + : displayName; +} diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataHandlers/HierarchicalPropertyHandler.cs b/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataHandlers/HierarchicalPropertyHandler.cs index 68d583bd3..e882cd5f9 100644 --- a/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataHandlers/HierarchicalPropertyHandler.cs +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/DataHandlers/HierarchicalPropertyHandler.cs @@ -1,4 +1,8 @@ -namespace Speckle.Converter.Navisworks.ToSpeckle.PropertyHandlers; +using Speckle.Converter.Navisworks.Helpers; +using Speckle.Converter.Navisworks.Settings; +using Speckle.Converters.Common; + +namespace Speckle.Converter.Navisworks.ToSpeckle.PropertyHandlers; /// /// Handles property assignment with hierarchy merging for objects that require ancestor properties. @@ -6,14 +10,26 @@ public class HierarchicalPropertyHandler( PropertySetsExtractor propertySetsExtractor, ModelPropertiesExtractor modelPropertiesExtractor, - ClassPropertiesExtractor classPropertiesExtractor + ClassPropertiesExtractor classPropertiesExtractor, + IConverterSettingsStore settingsStore ) : BasePropertyHandler(propertySetsExtractor, modelPropertiesExtractor) { - private string PseudoClassPropertiesKey => "_pseudoClassProperties"; + private static string PseudoClassPropertiesKey => "_pseudoClassProperties"; + private readonly bool _mapRevit = settingsStore.Current.User.RevitCategoryMapping; public override Dictionary GetProperties(NAV.ModelItem modelItem) { - var propertyDict = classPropertiesExtractor.GetClassProperties(modelItem) ?? new Dictionary(); + var propertyDict = classPropertiesExtractor.GetClassProperties(modelItem) ?? []; + + // Interop-lite mapping for Revit built-in categories + if (_mapRevit && RevitBuiltInCategoryExtractor.TryGetBuiltInCategory(modelItem, out var builtInCategory)) + { + PropertyHelpers.AddPropertyIfNotNullOrEmpty( + propertyDict, + RevitBuiltInCategoryExtractor.DEFAULT_DICT_KEY, + builtInCategory + ); + } var hierarchy = GetObjectHierarchy(modelItem); var propertyCollection = new Dictionary>>(); diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs index a9e771d64..9ede12e6a 100644 --- a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Helpers/PropertyHelpers.cs @@ -35,8 +35,13 @@ public static class PropertyHelpers } }; - internal static dynamic? ConvertPropertyValue(NAV.VariantData value, string units) + internal static dynamic? ConvertPropertyValue(NAV.VariantData? value, string units) { + if (value == null) + { + return null; + } + if (s_typeHandlers.TryGetValue(value.DataType, out var handler)) { return handler(value, units); @@ -54,10 +59,12 @@ public static class PropertyHelpers /// The object to which the property is to be added. Can be either a Base object or a Dictionary. /// The name of the property to add. /// The value of the property. - internal static void AddPropertyIfNotNullOrEmpty(object baseObject, string propertyName, object value) + internal static void AddPropertyIfNotNullOrEmpty(object baseObject, string propertyName, object? value) { switch (value) { + case null: + break; // Do not add null values case string stringValue: { if (!string.IsNullOrEmpty(stringValue)) diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettings.cs b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettings.cs index 6705a12ef..8c07eff69 100644 --- a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettings.cs +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettings.cs @@ -24,5 +24,6 @@ public record User( RepresentationMode VisualRepresentationMode, // Specifies the visual representation mode. bool CoalescePropertiesFromFirstObjectAncestor, // Whether to merge properties from the first object ancestor. bool ExcludeProperties, // Whether to exclude properties from the output. - bool PreserveModelHierarchy // Whether to maintain the full model hierarchy during conversion. + bool PreserveModelHierarchy, // Whether to maintain the full model hierarchy during conversion. + bool RevitCategoryMapping // Optional mapping to Revit categories (if applicable). ); diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettingsFactory.cs b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettingsFactory.cs index e71b16d38..ddc3bbe58 100644 --- a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettingsFactory.cs +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Settings/NavisworksConversionSettingsFactory.cs @@ -45,7 +45,8 @@ public class NavisworksConversionSettingsFactory : INavisworksConversionSettings RepresentationMode visualRepresentationMode, bool convertHiddenElements, bool includeInternalProperties, - bool preserveModelHierarchy + bool preserveModelHierarchy, + bool mappingToRevitCategories ) { _convertHiddenElements = convertHiddenElements; @@ -86,7 +87,8 @@ public class NavisworksConversionSettingsFactory : INavisworksConversionSettings VisualRepresentationMode: visualRepresentationMode, CoalescePropertiesFromFirstObjectAncestor: false, // Not yet exposed in the UI ExcludeProperties: false, // Not yet exposed in the UI - PreserveModelHierarchy: preserveModelHierarchy + PreserveModelHierarchy: preserveModelHierarchy, + RevitCategoryMapping: mappingToRevitCategories ) ); } diff --git a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems index d791e58b9..5500fe7e5 100644 --- a/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems +++ b/Converters/Navisworks/Speckle.Converters.NavisworksShared/Speckle.Converters.NavisworksShared.projitems @@ -13,6 +13,7 @@ + From 0bfeef637b44f197950053b70e439b7a5320dea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Steinhagen?= Date: Fri, 15 Aug 2025 23:16:38 +0800 Subject: [PATCH 5/7] feat(rhino): add layer mapping for revit integration (#1027) * feat: Add layer mapping support and rename object mapping methods * feat: object-layer mapping detection for UI updates * feat: add layer hierarchy mapping resolution * refactor: unused methods * feat: layer dropdown * feat(rhino): add effective object resolution for layer mappings * fix: event handling * feat: generic model, duhh * refactor: move records to mapper namespace * refactor: consolidate Rhino layer and object utilities into helpers * refactor: move `GetEffectiveObjectsForLayerMapping` to `RevitMappingResolver` * chore: update category list (#1028) * fix: `ModifyAttributes` for object mapping changes * fix: lol no need for static * refactor: DI for helper class * refactor: hardcoded list in dui * fix: updating mapped layers * fix: handle object addition events to update mappings on copy * feat: poc (#1030) * fix: no static! --- .../Bindings/RhinoMapperBinding.cs | 282 +++++++++++++++--- .../Bindings/RhinoSendBinding.cs | 8 +- .../HostApp/Properties/PropertiesExtractor.cs | 18 ++ .../HostApp/RhinoLayerHelper.cs | 134 +++++++++ .../HostApp/RhinoLayerUnpacker.cs | 24 +- .../HostApp/RhinoObjectHelper.cs | 17 ++ .../Mapper/Revit/CategoryMapping.cs | 11 + .../Mapper/Revit/LayerCategoryMapping.cs | 12 + .../Mapper/Revit/LayerOption.cs | 6 + .../Mapper/Revit/RevitBuiltInCategoryStore.cs | 83 ------ .../Mapper/Revit/RevitMappingConstants.cs | 10 + .../Mapper/Revit/RevitMappingResolver.cs | 113 +++++++ .../Send/Filters/RhinoLayersFilter.cs | 39 +-- .../Registration/ServiceRegistration.cs | 6 + .../Speckle.Connectors.RhinoShared.projitems | 8 +- 15 files changed, 599 insertions(+), 172 deletions(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerHelper.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoObjectHelper.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/CategoryMapping.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerCategoryMapping.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerOption.cs delete mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingConstants.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingResolver.cs diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs index 08241e7ec..be63a6f1f 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoMapperBinding.cs @@ -1,32 +1,28 @@ using Rhino; using Rhino.DocObjects; +using Rhino.DocObjects.Tables; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.Rhino.HostApp; using Speckle.Connectors.Rhino.Mapper.Revit; namespace Speckle.Connectors.Rhino.Bindings; -/// -/// Represents a group of objects that are all assigned to the same category. -/// -public record CategoryMapping( - string CategoryValue, - string CategoryLabel, - IReadOnlyList ObjectIds, - int ObjectCount -); - /// /// Binding for managing Rhino object mappings to Revit categories. /// public class RhinoMapperBinding : IBinding { + private const string MAPPINGS_CHANGED_EVENT = "mappingsChanged"; + private const string LAYERS_CHANGED_EVENT = "layersChanged"; private readonly DocumentModelStore _store; private readonly IAppIdleManager _idleManager; private readonly IBasicConnectorBinding _basicConnectorBinding; - private const string CATEGORY_USER_STRING_KEY = "builtInCategory"; - private const string MAPPINGS_CHANGED_EVENT = "mappingsChanged"; + private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; + private readonly RevitMappingResolver _revitMappingResolver; + private readonly RhinoLayerHelper _rhinoLayerHelper; + private readonly RhinoObjectHelper _rhinoObjectHelper; public string Name => "revitMapperBinding"; public IBrowserBridge Parent { get; } @@ -34,44 +30,78 @@ public class RhinoMapperBinding : IBinding DocumentModelStore store, IAppIdleManager idleManager, IBrowserBridge parent, - IBasicConnectorBinding basicConnectorBinding + IBasicConnectorBinding basicConnectorBinding, + ITopLevelExceptionHandler topLevelExceptionHandler, + RevitMappingResolver revitMappingResolver, + RhinoLayerHelper rhinoLayerHelper, + RhinoObjectHelper rhinoObjectHelper ) { _store = store; _idleManager = idleManager; Parent = parent; _basicConnectorBinding = basicConnectorBinding; + _topLevelExceptionHandler = topLevelExceptionHandler; + _revitMappingResolver = revitMappingResolver; + _rhinoLayerHelper = rhinoLayerHelper; + _rhinoObjectHelper = rhinoObjectHelper; // Subscribe to Rhino events so we know about changes - // Events fire on delete, undo delete and modify objects + // Events fire on delete, undo delete, add and modify objects RhinoDoc.DeleteRhinoObject += OnObjectChanged; RhinoDoc.UndeleteRhinoObject += OnObjectChanged; + RhinoDoc.AddRhinoObject += OnObjectChanged; RhinoDoc.ModifyObjectAttributes += OnObjectAttributesChanged; + // Subscribe to layer events so we know about layer changes + RhinoDoc.LayerTableEvent += OnLayerTableEvent; + // Subscribe to document changes to refresh mappings when switching documents _store.DocumentChanged += OnDocumentChanged; } - #region UI Methods + #region UI Methods - General /// - /// Gets list of available Revit categories for the UI dropdown. + /// Gets list of available layers for the UI dropdown. /// - public CategoryOption[] GetAvailableCategories() => - RevitBuiltInCategoryStore.Categories.OrderBy(category => category.Label).ToArray(); + public LayerOption[] GetAvailableLayers() + { + var doc = RhinoDoc.ActiveDoc; + if (doc == null) + { + return []; + } + + return doc + .Layers.Where(layer => !layer.IsDeleted) + .Select(layer => new LayerOption(layer.Id.ToString(), _rhinoLayerHelper.GetFullLayerPath(layer))) + .OrderBy(layer => layer.Name) + .ToArray(); + } + + /// + /// Selects/highlights specific objects in Rhino. + /// + public async Task HighlightObjects(string[] objectIds) => await _basicConnectorBinding.HighlightObjects(objectIds); + + #endregion + + #region UI Methods - Object Mapping Methods /// /// Assigns selected objects to a specific Revit category. /// - public void AssignToCategory(string[] objectIds, string categoryValue) + public void AssignObjectsToCategory(string[] objectIds, string categoryValue) { foreach (var objectIdString in objectIds) { // NOTE: should we be checking if key already exists? // For POC, straightforward set on object - var rhinoObject = GetRhinoObject(objectIdString); - rhinoObject?.Attributes.SetUserString(CATEGORY_USER_STRING_KEY, categoryValue); - rhinoObject?.CommitChanges(); + var rhinoObject = _rhinoObjectHelper.GetRhinoObject(objectIdString); + var attrs = rhinoObject?.Attributes.Duplicate(); + attrs?.SetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY, categoryValue); + RhinoDoc.ActiveDoc.Objects.ModifyAttributes(rhinoObject, attrs, true); } // Trigger single update after all changes @@ -81,15 +111,14 @@ public class RhinoMapperBinding : IBinding /// /// Removes category assignments from specific objects. /// - public void ClearCategoryAssignment(string[] objectIds) + public void ClearObjectsCategoryAssignment(string[] objectIds) { foreach (var objectIdString in objectIds) { - // NOTE: should we be checking if key already exists? - // For POC, straightforward delete on object - var rhinoObject = GetRhinoObject(objectIdString); - rhinoObject?.Attributes.DeleteUserString(CATEGORY_USER_STRING_KEY); - rhinoObject?.CommitChanges(); + var rhinoObject = _rhinoObjectHelper.GetRhinoObject(objectIdString); + var attrs = rhinoObject?.Attributes.Duplicate(); + attrs?.DeleteUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY); + RhinoDoc.ActiveDoc.Objects.ModifyAttributes(rhinoObject, attrs, true); } // Trigger single update after all changes @@ -99,14 +128,15 @@ public class RhinoMapperBinding : IBinding /// /// Removes all category assignments in the doc. /// - public void ClearAllCategoryAssignments() + public void ClearAllObjectsCategoryAssignments() { foreach (var rhinoObject in RhinoDoc.ActiveDoc.Objects) { - if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY))) { - rhinoObject.Attributes.DeleteUserString(CATEGORY_USER_STRING_KEY); - rhinoObject.CommitChanges(); + var attrs = rhinoObject.Attributes.Duplicate(); + attrs.DeleteUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY); + RhinoDoc.ActiveDoc.Objects.ModifyAttributes(rhinoObject, attrs, true); } } @@ -118,14 +148,16 @@ public class RhinoMapperBinding : IBinding /// Gets all current mappings to show in the UI table. /// /// - public CategoryMapping[] GetCurrentMappings() + public CategoryMapping[] GetCurrentObjectsMappings() { var mappedObjects = RhinoDoc - .ActiveDoc.Objects.Where(obj => !string.IsNullOrEmpty(obj.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) - .GroupBy(obj => obj.Attributes.GetUserString(CATEGORY_USER_STRING_KEY)) + .ActiveDoc.Objects.Where(obj => + !string.IsNullOrEmpty(obj.Attributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY)) + ) + .GroupBy(obj => obj.Attributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY)) .Select(group => new CategoryMapping( group.Key, - RevitBuiltInCategoryStore.GetLabel(group.Key), + group.Key, group.Select(obj => obj.Id.ToString()).ToArray(), group.Count() )) @@ -135,24 +167,114 @@ public class RhinoMapperBinding : IBinding } /// - /// Selects/highlights specific objects in Rhino. + /// Gets category mappings for specific object IDs. /// - public async Task HighlightObjects(string[] objectIds) => await _basicConnectorBinding.HighlightObjects(objectIds); + public string[] GetCategoryMappingsForObjects(string[] objectIds) => + objectIds + .Select(id => + _rhinoObjectHelper.GetRhinoObject(id)?.Attributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY) + ) + .Where(category => category != null) + .Cast() + .Distinct() + .ToArray(); + + #endregion + + #region UI Methods - Layer Mapping Methods /// - /// Converts a string object ID to a RhinoObject. + /// Assigns selected layers to a specific Revit category. /// - /// RhinoObject if found and valid, null otherwise - /// Reducing repetitive code. - private static RhinoObject? GetRhinoObject(string objectIdString) => - Guid.TryParse(objectIdString, out var objectId) ? RhinoDoc.ActiveDoc.Objects.FindId(objectId) : null; + public void AssignLayerToCategory(string[] layerIds, string categoryValue) + { + foreach (var layerId in layerIds) + { + var layer = _rhinoLayerHelper.GetLayer(layerId); + layer?.SetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY, categoryValue); + } + + // Trigger single update + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Removes category assignments from specific layer(s). + /// + public void ClearLayerCategoryAssignment(string[] layerIds) + { + foreach (var layerId in layerIds) + { + // NOTE: clear user string by setting to null. Layer has not DeleteUserString() method 🙄 + var layer = _rhinoLayerHelper.GetLayer(layerId); + layer?.SetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY, null); + } + + // Trigger single update + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Removes all layer category assignments in the doc. + /// + public void ClearAllLayerCategoryAssignments() + { + foreach (var layer in RhinoDoc.ActiveDoc.Layers) + { + if (!string.IsNullOrEmpty(layer.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY))) + { + // NOTE: clear user string by setting to null. Layer has not DeleteUserString() method 🙄 + layer.SetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY, null); + } + } + + // Trigger single update + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + + /// + /// Gets all current layer mappings to show in the UI table. + /// Layers with the same category mapping are grouped together. + /// + public LayerCategoryMapping[] GetCurrentLayerMappings() + { + var mappedLayers = RhinoDoc + .ActiveDoc.Layers.Where(layer => + !layer.IsDeleted && !string.IsNullOrEmpty(layer.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY)) + ) + .GroupBy(layer => layer.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY)) + .Select(group => new LayerCategoryMapping( + group.Key, + group.Key, + group.Select(layer => layer.Id.ToString()).ToArray(), + group.Select(layer => _rhinoLayerHelper.GetFullLayerPath(layer)).ToArray(), + group.Count() + )) + .ToArray(); + + return mappedLayers; + } + + /// + /// Gets category mappings for specific layer IDs. + /// + public string[] GetCategoryMappingsForLayers(string[] layerIds) => + layerIds + .Select(id => _rhinoLayerHelper.GetLayer(id)?.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY)) + .Where(category => !string.IsNullOrEmpty(category)) + .Cast() + .Distinct() + .ToArray(); + + public string[] GetEffectiveObjectsForLayerMapping(string[] layerIds, string categoryValue) => + _revitMappingResolver.GetEffectiveObjectsForLayerMapping(layerIds, categoryValue); #endregion #region Event Handling /// - /// Called when objects are deleted or undeleted in Rhino. + /// Called when objects are added, deleted, or undeleted in Rhino. /// private void OnObjectChanged(object? sender, RhinoObjectEventArgs e) { @@ -162,7 +284,7 @@ public class RhinoMapperBinding : IBinding } var rhinoObject = e.TheObject; - if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY))) { _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); } @@ -171,10 +293,29 @@ public class RhinoMapperBinding : IBinding /// /// Called when object attributes are modified in Rhino. /// + /// + /// Includes detection for when objects move between layers with mappings. + /// private void OnObjectAttributesChanged(object? sender, RhinoModifyObjectAttributesEventArgs e) { + if (!_store.IsDocumentInit) + { + return; + } + var rhinoObject = e.RhinoObject; - if (!string.IsNullOrEmpty(rhinoObject.Attributes.GetUserString(CATEGORY_USER_STRING_KEY))) + + // check if mapping user string changed (added, removed, or modified) + var oldMapping = e.OldAttributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY); + var newMapping = rhinoObject.Attributes.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY); + bool mappingChanged = !string.Equals(oldMapping, newMapping, StringComparison.Ordinal); + + // check if layer change affects mappings + bool hasOldLayerMapping = _rhinoLayerHelper.HasLayerMapping(e.OldAttributes.LayerIndex); + bool hasNewLayerMapping = _rhinoLayerHelper.HasLayerMapping(rhinoObject.Attributes.LayerIndex); + + // refresh if mapping changed OR layer change affects mapped layers + if (mappingChanged || hasOldLayerMapping || hasNewLayerMapping) { _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); } @@ -182,7 +323,7 @@ public class RhinoMapperBinding : IBinding /// /// Called when the document changes (e.g., switching to a different Rhino model). - /// Refreshes the mappings table to reflect the new document's state. + /// Refreshes the mappings table and defined layers to reflect the new document's state. /// private void OnDocumentChanged(object? sender, EventArgs e) { @@ -193,16 +334,61 @@ public class RhinoMapperBinding : IBinding // Refresh mappings for the new document _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + + // Refresh layer list for the new document + _idleManager.SubscribeToIdle(nameof(NotifyLayersChanged), NotifyLayersChanged); } + /// + /// Called when layer table events occur in Rhino. + /// Refreshes layer list when layer structure changes. + /// + /// + /// Layer mapping changes are handled by OnObjectAttributesChanged + /// + private void OnLayerTableEvent(object? sender, LayerTableEventArgs e) => + _topLevelExceptionHandler.CatchUnhandled(() => + { + if (!_store.IsDocumentInit) + { + return; + } + + // Refresh layer list for structural changes + if ( + e.EventType == LayerTableEventType.Added + || e.EventType == LayerTableEventType.Deleted + || e.EventType == LayerTableEventType.Modified + ) + { + _idleManager.SubscribeToIdle(nameof(NotifyLayersChanged), NotifyLayersChanged); + } + + // Refresh mappings when layers are deleted or modified + // This ensures that mappings table updates when mapped layers are removed + if (e.EventType == LayerTableEventType.Deleted || e.EventType == LayerTableEventType.Modified) + { + _idleManager.SubscribeToIdle(nameof(NotifyMappingsChanged), NotifyMappingsChanged); + } + }); + /// /// Sends updated mappings to the frontend. /// private void NotifyMappingsChanged() { - var currentMappings = GetCurrentMappings(); + var currentMappings = GetCurrentObjectsMappings(); Parent.Send(MAPPINGS_CHANGED_EVENT, currentMappings); } + /// + /// Sends updated layer list to the frontend. + /// + private void NotifyLayersChanged() + { + var availableLayers = GetAvailableLayers(); + Parent.Send(LAYERS_CHANGED_EVENT, availableLayers); + } + #endregion } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index 5439d7e97..12b9198de 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -13,6 +13,7 @@ using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.Settings; +using Speckle.Connectors.Rhino.HostApp; using Speckle.Connectors.Rhino.Operations.Send.Filters; using Speckle.Connectors.Rhino.Operations.Send.Settings; using Speckle.Converters.Common; @@ -36,6 +37,7 @@ public sealed class RhinoSendBinding : ISendBinding private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; private readonly IAppIdleManager _idleManager; private readonly ISendOperationManagerFactory _sendOperationManagerFactory; + private readonly RhinoLayerHelper _rhinoLayerHelper; /// /// Used internally to aggregate the changed objects' id. Objects in this list will be reconverted. @@ -65,7 +67,8 @@ public sealed class RhinoSendBinding : ISendBinding ILogger logger, IRhinoConversionSettingsFactory rhinoConversionSettingsFactory, ITopLevelExceptionHandler topLevelExceptionHandler, - ISendOperationManagerFactory sendOperationManagerFactory + ISendOperationManagerFactory sendOperationManagerFactory, + RhinoLayerHelper rhinoLayerHelper ) { _store = store; @@ -78,6 +81,7 @@ public sealed class RhinoSendBinding : ISendBinding Parent = parent; _topLevelExceptionHandler = topLevelExceptionHandler; _sendOperationManagerFactory = sendOperationManagerFactory; + _rhinoLayerHelper = rhinoLayerHelper; Commands = new SendBindingUICommands(parent); // POC: Commands are tightly coupled with their bindings, at least for now, saves us injecting a factory. PreviousUnitSystem = RhinoDoc.ActiveDoc.ModelUnitSystem; SubscribeToRhinoEvents(); @@ -275,7 +279,7 @@ public sealed class RhinoSendBinding : ISendBinding } public List GetSendFilters() => - [new RhinoSelectionFilter() { IsDefault = true }, new RhinoLayersFilter()]; + [new RhinoSelectionFilter() { IsDefault = true }, new RhinoLayersFilter(_rhinoLayerHelper)]; public List GetSendSettings() => [new AddVisualizationProperties(false)]; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs index 13fbfa305..e5d07080a 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/Properties/PropertiesExtractor.cs @@ -1,5 +1,6 @@ using Rhino; using Rhino.DocObjects; +using Speckle.Connectors.Rhino.Mapper.Revit; using Speckle.Sdk; namespace Speckle.Connectors.Rhino.HostApp.Properties; @@ -9,6 +10,13 @@ namespace Speckle.Connectors.Rhino.HostApp.Properties; /// public class PropertiesExtractor { + private readonly RevitMappingResolver _revitMappingResolver; + + public PropertiesExtractor(RevitMappingResolver revitMappingResolver) + { + _revitMappingResolver = revitMappingResolver; + } + public Dictionary GetProperties(RhinoObject rhObject) { Dictionary properties = new(); @@ -42,6 +50,16 @@ public class PropertiesExtractor properties[key] = userStrings[key]; } + // NOTE: if no mapping was found on the object, check layer(s) recursively + if (!properties.ContainsKey(RevitMappingConstants.CATEGORY_USER_STRING_KEY)) + { + var layerMapping = _revitMappingResolver.SearchLayerHierarchyForMapping(rhObject); + if (!string.IsNullOrEmpty(layerMapping)) + { + properties[RevitMappingConstants.CATEGORY_USER_STRING_KEY] = layerMapping; + } + } + return properties; } } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerHelper.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerHelper.cs new file mode 100644 index 000000000..b3ebcedfd --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerHelper.cs @@ -0,0 +1,134 @@ +using Rhino; +using Rhino.DocObjects; +using Speckle.Connectors.Rhino.Mapper.Revit; + +namespace Speckle.Connectors.Rhino.HostApp; + +/// +/// Helper class for common Rhino layer and object operations. +/// Consolidates layer utilities to eliminate duplication across the codebase. +/// +public class RhinoLayerHelper +{ + /// + /// Gets list of available layers for UI dropdowns. + /// + public LayerOption[] GetAvailableLayers() + { + var doc = RhinoDoc.ActiveDoc; + if (doc == null) + { + return []; + } + + return doc + .Layers.Where(layer => !layer.IsDeleted) + .Select(layer => new LayerOption(layer.Id.ToString(), GetFullLayerPath(layer))) + .OrderBy(layer => layer.Name) + .ToArray(); + } + + /// + /// Gets the full layer path with / delimiter + /// + public string GetFullLayerPath(Layer layer) + { + string fullPath = layer.Name; + Guid parentIndex = layer.ParentLayerId; + while (parentIndex != Guid.Empty) + { + Layer? parentLayer = RhinoDoc.ActiveDoc.Layers.FindId(parentIndex); + if (parentLayer == null) + { + break; + } + + fullPath = parentLayer.Name + "/" + fullPath; // use "/" delimiter + parentIndex = parentLayer.ParentLayerId; + } + return fullPath; + } + + /// + /// Converts a string layer ID to a Layer. + /// + /// Layer if found and valid, null otherwise + public Layer? GetLayer(string layerIdString) => + Guid.TryParse(layerIdString, out var layerId) ? RhinoDoc.ActiveDoc.Layers.FindId(layerId) : null; + + /// + /// Helper to check if a layer (by index) has a category mapping. + /// + /// + /// This is arguably a very specific method pertaining to mapper and maybe shouldn't be in this class? + /// + public bool HasLayerMapping(int layerIndex) + { + if (layerIndex < 0 || layerIndex >= RhinoDoc.ActiveDoc.Layers.Count) + { + return false; + } + + var layer = RhinoDoc.ActiveDoc.Layers[layerIndex]; + return !string.IsNullOrEmpty(layer.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY)); + } + + /// + /// Gets all RhinoObjects in the specified layer and all its child layers recursively. + /// + public IEnumerable GetObjectsInLayerHierarchy(Layer rootLayer) + { + var allObjects = new List(); + var layersToSearch = GetLayerAndAllChildren(rootLayer); + + foreach (var layer in layersToSearch) + { + var objectsOnLayer = RhinoDoc.ActiveDoc.Objects.FindByLayer(layer); + allObjects.AddRange(objectsOnLayer); + } + + return allObjects; + } + + /// + /// Gets the specified layer and all its child layers recursively. + /// + public IEnumerable GetLayerAndAllChildren(Layer rootLayer) + { + // Return the root layer itself + yield return rootLayer; + + // Get all child layers recursively + foreach (var childLayer in GetAllChildLayers(rootLayer)) + { + yield return childLayer; + } + } + + /// + /// Recursively gets all child layers of the specified parent layer. + /// + public IEnumerable GetAllChildLayers(Layer parentLayer) + { + var doc = RhinoDoc.ActiveDoc; + if (doc?.Layers == null) + { + yield break; + } + + // Find all direct child layers + var directChildren = doc.Layers.Where(layer => layer.ParentLayerId == parentLayer.Id); + + foreach (var childLayer in directChildren) + { + // Return the direct child + yield return childLayer; + + // Recursively get grandchildren + foreach (var grandChild in GetAllChildLayers(childLayer)) + { + yield return grandChild; + } + } + } +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerUnpacker.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerUnpacker.cs index ea465669d..3a921eea9 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerUnpacker.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerUnpacker.cs @@ -14,6 +14,7 @@ namespace Speckle.Connectors.Rhino.HostApp; /// public class RhinoLayerUnpacker { + private readonly RhinoLayerHelper _rhinoLayerHelper; private readonly Dictionary _layerCollectionCache = new(); private static readonly string s_pathSeparator = @@ -24,6 +25,11 @@ public class RhinoLayerUnpacker #endif private static readonly string[] s_pathSeparatorSplit = [s_pathSeparator]; + public RhinoLayerUnpacker(RhinoLayerHelper rhinoLayerHelper) + { + _rhinoLayerHelper = rhinoLayerHelper; + } + /// /// Use this method to get all of the layers that correspond to collection created in the root collection. /// @@ -31,20 +37,16 @@ public class RhinoLayerUnpacker /// Throws when a layer could not be retrieved from a stored collection application id public IEnumerable GetUsedLayers() { - var currentDoc = RhinoDoc.ActiveDoc; // POC: too much right now to interface around - foreach (string layerId in _layerCollectionCache.Values.Select(o => o.applicationId ?? string.Empty).ToList()) { - if (Guid.TryParse(layerId, out Guid layerGuid)) + var layer = _rhinoLayerHelper.GetLayer(layerId); + if (layer != null) { - if (currentDoc.Layers.FindId(layerGuid) is Layer layer) - { - yield return layer; - } - else - { - throw new SpeckleException($"Could not retrieve layer with guid: {layerId}."); - } + yield return layer; + } + else if (Guid.TryParse(layerId, out _)) + { + throw new SpeckleException($"Could not retrieve layer with guid: {layerId}."); } else { diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoObjectHelper.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoObjectHelper.cs new file mode 100644 index 000000000..15437556a --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoObjectHelper.cs @@ -0,0 +1,17 @@ +using Rhino; +using Rhino.DocObjects; + +namespace Speckle.Connectors.Rhino.HostApp; + +/// +/// Helper class for common Rhino object operations. +/// +public class RhinoObjectHelper +{ + /// + /// Converts a string object ID to a RhinoObject. + /// + /// RhinoObject if found and valid, null otherwise + public RhinoObject? GetRhinoObject(string objectIdString) => + Guid.TryParse(objectIdString, out var objectId) ? RhinoDoc.ActiveDoc.Objects.FindId(objectId) : null; +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/CategoryMapping.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/CategoryMapping.cs new file mode 100644 index 000000000..f71b5e667 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/CategoryMapping.cs @@ -0,0 +1,11 @@ +namespace Speckle.Connectors.Rhino.Mapper.Revit; + +/// +/// Represents a group of objects that are all assigned to the same category. +/// +public record CategoryMapping( + string CategoryValue, + string CategoryLabel, + IReadOnlyList ObjectIds, + int ObjectCount +); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerCategoryMapping.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerCategoryMapping.cs new file mode 100644 index 000000000..c2dae609b --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerCategoryMapping.cs @@ -0,0 +1,12 @@ +namespace Speckle.Connectors.Rhino.Mapper.Revit; + +/// +/// Represents layers that are all assigned to the same category. +/// +public record LayerCategoryMapping( + string CategoryValue, + string CategoryLabel, + IReadOnlyList LayerIds, + IReadOnlyList LayerNames, + int LayerCount +); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerOption.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerOption.cs new file mode 100644 index 000000000..e7463985f --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/LayerOption.cs @@ -0,0 +1,6 @@ +namespace Speckle.Connectors.Rhino.Mapper.Revit; + +/// +/// Represents a layer option for the UI dropdown. +/// +public record LayerOption(string Id, string Name); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs deleted file mode 100644 index e6ac7e562..000000000 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitBuiltInCategoryStore.cs +++ /dev/null @@ -1,83 +0,0 @@ -// TODO: Where should this live? Speckle.Connectors.Common.Interop?? - -namespace Speckle.Connectors.Rhino.Mapper.Revit; - -/// -/// Represents a category option for the dropdown in the UI. -/// -/// The Revit category enum name (e.g., "OST_Walls") -/// Human-readable name for the UI (e.g., "Walls") -public record CategoryOption(string Value, string Label); - -/// -/// Currently hardcoded Revit BuiltInCategories for the Interop Lite mapper. -/// This provides a select list of commonly used categories for object mapping -/// from Rhino to Revit. -/// -/// NOTE: Currently located in Rhino codebase for Rhino-to-Revit POC use case. -/// When we extend to other connectors implementing a RevitMapper interface, -/// this should be moved to a shared location (e.g., Speckle.Connectors.Common -/// or Speckle.Converters.RevitShared). -/// -public static class RevitBuiltInCategoryStore -{ - /// - /// Dictionary mapping Revit BuiltInCategory enum names to human-readable labels. - /// Key: BuiltInCategory enum name (e.g., "OST_Walls") - /// Value: Human-readable label (e.g., "Walls") - /// - public static readonly CategoryOption[] Categories = - [ - new("OST_Ceilings", "Ceilings"), - new("OST_Columns", "Columns"), - new("OST_CurtainGrids", "Curtain Grids"), - new("OST_CurtainGridsCurtaSystem", "Curtain Grids - Curtain System"), - new("OST_CurtainGridsRoof", "Curtain Grids - Roof"), - new("OST_CurtainGridsSystem", "Curtain Grids - System"), - new("OST_CurtainGridsWall", "Curtain Grids - Wall"), - new("OST_Curtain_Systems", "Curtain Systems"), - new("OST_CurtainWallMullions", "Curtain Wall Mullions"), - new("OST_CurtainWallPanels", "Curtain Wall Panels"), - new("OST_Floors", "Floors"), - new("OST_Furniture", "Furniture"), - new("OST_FurnitureSystems", "Furniture Systems"), - new("OST_Roofs", "Roofs"), - new("OST_StackedWalls", "Stacked Walls"), - new("OST_Walls", "Walls"), - // STRUCTURAL - new("OST_StructuralColumns", "Structural Columns"), - new("OST_StructuralFoundation", "Structural Foundation"), - new("OST_StructuralFraming", "Structural Framing"), - new("OST_StructuralFramingSystem", "Structural Framing System"), - new("OST_StructuralTruss", "Structural Truss"), - // MISC - new("OST_Levels", "Levels"), - new("OST_Grids", "Grids"), - new("OST_Rooms", "Rooms"), - new("OST_Areas", "Areas"), - // MEP - new("OST_DuctCurves", "Duct Curves"), - new("OST_DuctSystem", "Duct System"), - new("OST_DuctFitting", "Duct Fitting"), - new("OST_PipeCurves", "Pipe Curves"), - new("OST_PipeCurvesCenterLine", "Pipe Curves - Center Line"), - new("OST_PipeSegments", "Pipe Segments"), - new("OST_PipeFitting", "Pipe Fitting"), - new("OST_Conduit", "Conduit"), - new("OST_ConduitFitting", "Conduit Fitting"), - new("OST_Cable", "Cable"), - new("OST_CableTray", "Cable Tray"), - new("OST_CableTrayFitting", "Cable Tray Fitting") - ]; - - /// - /// Gets the human-readable label for a category value. - /// - /// The category enum name (e.g., "OST_Walls") - /// Human-readable label (e.g., "Walls") or the original value if not found - public static string GetLabel(string categoryValue) - { - var category = Categories.FirstOrDefault(c => c.Value == categoryValue); - return category?.Label ?? categoryValue; - } -} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingConstants.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingConstants.cs new file mode 100644 index 000000000..909abcc43 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingConstants.cs @@ -0,0 +1,10 @@ +namespace Speckle.Connectors.Rhino.Mapper.Revit; + +/// +/// Shared constants for the Rhino-to-Revit mapping system. +/// Centralizes string constant(s) to avoid duplication across three using classes. +/// +public static class RevitMappingConstants +{ + public const string CATEGORY_USER_STRING_KEY = "builtInCategory"; +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingResolver.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingResolver.cs new file mode 100644 index 000000000..a036d0c80 --- /dev/null +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Mapper/Revit/RevitMappingResolver.cs @@ -0,0 +1,113 @@ +using Rhino; +using Rhino.DocObjects; +using Speckle.Connectors.Rhino.HostApp; + +namespace Speckle.Connectors.Rhino.Mapper.Revit; + +/// +/// Responsible for resolving category mappings from layer hierarchy. +/// Used by the send pipeline to resolve mappings during property extraction. +/// +/// +/// This gets called when no mapping found on the object level. +/// +public class RevitMappingResolver +{ + private readonly RhinoLayerHelper _rhinoLayerHelper; + + public RevitMappingResolver(RhinoLayerHelper rhinoLayerHelper) + { + _rhinoLayerHelper = rhinoLayerHelper; + } + + /// + /// Gets all objects that would effectively receive the specified layer mapping during send. + /// Takes into account hierarchical resolution - only returns objects that would actually + /// resolve to this specific category value through the layer hierarchy. + /// + public string[] GetEffectiveObjectsForLayerMapping(string[] layerIds, string categoryValue) + { + var effectiveObjects = new List(); + + foreach (var layerId in layerIds) + { + var layer = _rhinoLayerHelper.GetLayer(layerId); + if (layer == null) + { + continue; + } + + // Get all objects in this layer and its child layers + var allObjectsInHierarchy = _rhinoLayerHelper.GetObjectsInLayerHierarchy(layer); + + foreach (var obj in allObjectsInHierarchy) + { + // Since we're in Layer mode, objects don't have direct mappings + // Check what category this object would actually resolve to through layer hierarchy + var resolvedCategory = SearchLayerHierarchyForMapping(obj); + + // Only include if it resolves to THIS specific category + if (resolvedCategory == categoryValue) + { + effectiveObjects.Add(obj.Id.ToString()); + } + } + } + + return effectiveObjects.ToArray(); + } + + /// + /// Traverses layer hierarchy, returns first mapping found or null + /// + public string? SearchLayerHierarchyForMapping(RhinoObject rhinoObject) + { + // NOTE: we agreed on a hierarchical resolution strategy: + // - Object-level mappings have highest precedence + // - Layer-level mappings are fallback when no object mapping exists + // - Traverses layer hierarchy and stops at first mapping found + + var layer = GetLayerByIndex(rhinoObject.Attributes.LayerIndex); + while (layer != null) + { + var layerMapping = layer.GetUserString(RevitMappingConstants.CATEGORY_USER_STRING_KEY); + if (!string.IsNullOrEmpty(layerMapping)) + { + return layerMapping; // returns first mapping found + } + + // move to parent layer + layer = GetParentLayer(layer); + } + + return null; + } + + /// + /// Gets a layer by its index from the active doc. + /// + private Layer? GetLayerByIndex(int layerIndex) + { + var doc = RhinoDoc.ActiveDoc; + if (doc?.Layers == null || layerIndex < 0 || layerIndex >= doc.Layers.Count) + { + return null; + } + + return doc.Layers[layerIndex]; + } + + /// + /// Gets the parent layer of the given layer. + /// + private Layer? GetParentLayer(Layer layer) + { + if (layer.ParentLayerId == Guid.Empty) + { + return null; // no parent layer + } + + var doc = RhinoDoc.ActiveDoc; + return doc?.Layers?.FindId(layer.ParentLayerId); + } +} diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Filters/RhinoLayersFilter.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Filters/RhinoLayersFilter.cs index 3a2109153..1ed954c42 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Filters/RhinoLayersFilter.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/Filters/RhinoLayersFilter.cs @@ -2,11 +2,14 @@ using Rhino; using Rhino.DocObjects; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.Utils; +using Speckle.Connectors.Rhino.HostApp; namespace Speckle.Connectors.Rhino.Operations.Send.Filters; public class RhinoLayersFilter : DiscriminatedObject, ISendFilter { + private readonly RhinoLayerHelper _rhinoLayerHelper; + public string Id { get; set; } = "rhinoLayers"; public string Name { get; set; } = "Layers"; public string Type { get; set; } = "Select"; @@ -19,7 +22,10 @@ public class RhinoLayersFilter : DiscriminatedObject, ISendFilter public List SelectedItems { get; set; } public List Items => GetFilterItems(); - public RhinoLayersFilter() { } + public RhinoLayersFilter(RhinoLayerHelper rhinoLayerHelper) + { + _rhinoLayerHelper = rhinoLayerHelper; + } public List RefreshObjectIds() { @@ -32,14 +38,11 @@ public class RhinoLayersFilter : DiscriminatedObject, ISendFilter foreach (var item in SelectedItems) { - if (Guid.TryParse(item.Id, out Guid layerId)) + Layer? layer = _rhinoLayerHelper.GetLayer(item.Id); + if (layer != null) { - Layer layer = doc.Layers.FindId(layerId); - if (layer != null) - { - var objectIds = doc.Objects.FindByLayer(layer).Select(obj => obj.Id.ToString()); - SelectedObjectIds.AddRange(objectIds); - } + var objectIds = doc.Objects.FindByLayer(layer).Select(obj => obj.Id.ToString()); + SelectedObjectIds.AddRange(objectIds); } } @@ -59,28 +62,10 @@ public class RhinoLayersFilter : DiscriminatedObject, ISendFilter { if (!layer.IsDeleted) { - filterItems.Add(new SendFilterSelectItem(layer.Id.ToString(), GetFullLayerPath(layer))); + filterItems.Add(new SendFilterSelectItem(layer.Id.ToString(), _rhinoLayerHelper.GetFullLayerPath(layer))); } } return filterItems; } - - private string GetFullLayerPath(Layer layer) - { - string fullPath = layer.Name; - Guid parentIndex = layer.ParentLayerId; - while (parentIndex != Guid.Empty) - { - Layer parentLayer = RhinoDoc.ActiveDoc.Layers.FindId(parentIndex); - if (parentLayer == null) - { - break; - } - - fullPath = parentLayer.Name + "/" + fullPath; - parentIndex = parentLayer.ParentLayerId; - } - return fullPath; - } } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs index 3f3c467d6..9d2d86a6f 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs @@ -17,6 +17,7 @@ using Speckle.Connectors.Rhino.Bindings; using Speckle.Connectors.Rhino.Filters; using Speckle.Connectors.Rhino.HostApp; using Speckle.Connectors.Rhino.HostApp.Properties; +using Speckle.Connectors.Rhino.Mapper.Revit; using Speckle.Connectors.Rhino.Operations.Receive; using Speckle.Connectors.Rhino.Operations.Send; using Speckle.Connectors.Rhino.Operations.Send.Settings; @@ -91,6 +92,11 @@ public static class ServiceRegistration serviceCollection.AddScoped(); serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + + // register helpers + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); // operation progress manager serviceCollection.AddSingleton(); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems index 6791d0d80..0bbaa2ab9 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Speckle.Connectors.RhinoShared.projitems @@ -25,8 +25,14 @@ + + - + + + + + From ac7398be498747dec661601afaf48b46a40538a6 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Mon, 18 Aug 2025 11:24:41 +0100 Subject: [PATCH 6/7] fix(grasshopper): fix casting issues for model objects (#1031) * adds missing path and properties to model object casting * slight optimization to not retrieve material twice when color is inherited from material * enables casting of non-geometrybase geometry like points --- .../SpecklePropertyGroupGoo.ModelObjects.cs | 48 +++++++++++++++---- .../SpeckleGeometryWrapperGoo.ModelObjects.cs | 17 ++++--- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/SpecklePropertyGroupGoo.ModelObjects.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/SpecklePropertyGroupGoo.ModelObjects.cs index eeff7fc47..cbd901ef1 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/SpecklePropertyGroupGoo.ModelObjects.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/SpecklePropertyGroupGoo.ModelObjects.cs @@ -22,21 +22,51 @@ public partial class SpecklePropertyGroupGoo : GH_Goo dictionary = new(); - foreach (KeyValuePair entry in userText) - { - SpecklePropertyGoo value = new() { Value = entry.Value }; - dictionary.Add(entry.Key, value); - } - - Value = dictionary; - return true; + var processedDictionary = ConvertToNested(userText.ToDictionary(o => o.Key, o => (object)o.Value)); + return CastFrom(processedDictionary); default: return false; } } + // Property keys may already be concatenated with the `.` char, eg if baked from grasshopper. + public Dictionary ConvertToNested(Dictionary flatDict) + { + var nestedDict = new Dictionary(); + + foreach (string keyPath in flatDict.Keys) + { + var keys = keyPath.Split('.'); + var current = nestedDict; + + for (int i = 0; i < keys.Length; i++) + { + var key = keys[i]; + + if (i == keys.Length - 1) + { + current[key] = flatDict[keyPath]; + } + else + { + if (!current.TryGetValue(key, out var next)) + { + var newDict = new Dictionary(); + current[key] = newDict; + current = newDict; + } + else + { + current = (Dictionary)next; + } + } + } + } + + return nestedDict; + } + private bool CastToModelObject(ref T target) { var type = typeof(T); diff --git a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/Wrappers/SpeckleGeometryWrapperGoo.ModelObjects.cs b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/Wrappers/SpeckleGeometryWrapperGoo.ModelObjects.cs index 481f25b2c..43d54a838 100644 --- a/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/Wrappers/SpeckleGeometryWrapperGoo.ModelObjects.cs +++ b/Connectors/Rhino/Speckle.Connectors.GrasshopperShared/Parameters/Wrappers/SpeckleGeometryWrapperGoo.ModelObjects.cs @@ -35,19 +35,20 @@ public partial class SpeckleGeometryWrapperGoo : GH_Goo, private bool HandleModelObject(ModelObject modelObject) { - modelObject.CastTo(out GeometryBase? geometryBase); - if (geometryBase is null) + modelObject.CastTo(out IGH_GeometricGoo? geometryGoo); + if (geometryGoo is null) { throw new InvalidOperationException($"Could not retrieve geometry from model object."); } + GeometryBase geometryBase = geometryGoo.ToGeometryBase(); Base converted = SpeckleConversionContext.Current.ConvertToSpeckle(geometryBase); // get layer, props, color, and mat SpeckleCollectionWrapper? collection = GetLayerCollectionFromModelObject(modelObject); SpecklePropertyGroupGoo? props = GetPropsFromModelObjectAndAssignToBase(modelObject, converted); - Color? color = GetColorFromModelObject(modelObject); SpeckleMaterialWrapper? material = GetMaterialFromModelObject(modelObject); + Color? color = GetColorFromModelObject(modelObject, material); // get the definition if this is an instance SpeckleBlockDefinitionWrapper? definition = GetBlockDefinition(geometryBase); @@ -189,6 +190,7 @@ public partial class SpeckleGeometryWrapperGoo : GH_Goo, Transform = instance.Xform, Definition = definition, // May be null in pure Grasshopper workflows Parent = parent, + Path = parent?.Path ?? new(), Name = name, Color = color, Material = mat, @@ -200,6 +202,7 @@ public partial class SpeckleGeometryWrapperGoo : GH_Goo, GeometryBase = geometryBase, Base = @base, Parent = parent, + Path = parent?.Path ?? new(), Name = name, Color = color, Material = mat, @@ -268,7 +271,7 @@ public partial class SpeckleGeometryWrapperGoo : GH_Goo, return null; } - private Color? GetColorFromModelObject(ModelObject modelObject) + private Color? GetColorFromModelObject(ModelObject modelObject, SpeckleMaterialWrapper? material) { // we need to retrieve the actual color by the color source (otherwise will return default color for anything other than by object) int? argb = null; @@ -281,8 +284,10 @@ public partial class SpeckleGeometryWrapperGoo : GH_Goo, argb = modelObject.Display.Color?.Color.ToArgb(); break; case ObjectColorSource.ColorFromMaterial: - Rhino.Render.RenderMaterial? mat = GetRenderMaterial(modelObject); - argb = mat?.ToMaterial(Rhino.Render.RenderTexture.TextureGeneration.Skip)?.DiffuseColor.ToArgb(); + if (material is not null) + { + argb = material.Material.diffuse; + } break; default: break; From 279e9001057246545bb3dd949dac4c928817b04f Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Mon, 18 Aug 2025 11:29:15 +0100 Subject: [PATCH 7/7] feat(file_import)!: .NET job processor (#992) * First Pass * commit transaction * wip1 * rhino round2 * wip * net8 * Got the importer importing! * Refactor to separate containers * New queuing queries * generate solutions * Generate solutions * fixed tests * Rhino headless imports * minor fixes * logging * fix activity factory * sketchup configs * Add more logging * Format * Clean up the diff a bit * relock * delete bad launchsettings --- .../packages.lock.json | 1 - .../packages.lock.json | 1 - .../EmbeddedResources/plugin-utility.ico | Bin 0 -> 33583 bytes .../Speckle.Connectors.RhinoImporter.csproj | 42 ++ .../packages.lock.json | 30 +- .../Speckle.Converters.Rhino8.csproj | 11 +- .../packages.lock.json | 282 +++++++++++++ Directory.Packages.props | 3 + .../Domain/FileimportJob.cs | 16 + .../Domain/FileimportPayload.cs | 19 + .../Domain/JobStatus.cs | 12 + .../JobHandlers/Exceptions.cs | 23 ++ .../JobHandlers/IJobHandler.cs | 10 + .../JobHandlers/RhinoJobHandler.cs | 37 ++ .../JobProcessor.cs | 204 ++++++++++ .../JobQueue/JsonHandler.cs | 25 ++ .../JobQueue/Repository.cs | 114 ++++++ .../Speckle.Importers.JobProcessor/Program.cs | 78 ++++ .../Properties/launchSettings.json | 11 + .../ServiceRegistration.cs | 26 ++ .../Speckle.Importers.JobProcessor.csproj | 23 ++ .../SupportedFileTypes.cs | 65 +++ .../packages.lock.json | 382 ++++++++++++++++++ .../Rhino/Speckle.Importers.Rhino/Importer.cs | 31 ++ .../Internal/FileTypeConfig/DefaultConfig.cs | 11 + .../FileTypeConfig/IFileTypeConfig.cs | 24 ++ .../Internal/FileTypeConfig/SketchupConfig.cs | 46 +++ .../Internal/ImporterInstance.cs | 50 +++ .../{ => Internal}/ImporterThreadContext.cs | 7 +- .../{ => Internal}/Progress.cs | 4 +- .../Internal/Sender.cs | 64 +++ .../Internal/ServiceRegistration.cs | 26 ++ .../Rhino/Speckle.Importers.Rhino/Program.cs | 124 ------ .../Rhino/Speckle.Importers.Rhino/Resolver.cs | 124 ------ .../RhinoImportResult.cs | 15 - .../Rhino/Speckle.Importers.Rhino/Sender.cs | 71 +--- .../Speckle.Importers.Rhino.csproj | 23 +- .../packages.lock.json | 347 +++++----------- Local.sln | 24 +- Local.slnx | 10 +- Speckle.Autocad.slnx | 3 + Speckle.Civil3d.slnx | 3 + Speckle.Connectors.sln | 18 + Speckle.Connectors.slnx | 4 + Speckle.Etabs.slnx | 3 + Speckle.Navisworks.slnx | 3 + Speckle.Revit.Local.slnx | 9 +- Speckle.Revit.slnx | 3 + Speckle.Rhino-importer.slnx | 57 +++ Speckle.Rhino.slnx | 4 + Speckle.Teklastructures.slnx | 3 + 51 files changed, 1902 insertions(+), 624 deletions(-) create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoImporter/EmbeddedResources/plugin-utility.ico create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoImporter/Speckle.Connectors.RhinoImporter.csproj create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportJob.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportPayload.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/Domain/JobStatus.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/Exceptions.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/IJobHandler.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/RhinoJobHandler.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/JobProcessor.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/JsonHandler.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/Repository.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/Properties/launchSettings.json create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/ServiceRegistration.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/Speckle.Importers.JobProcessor.csproj create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/SupportedFileTypes.cs create mode 100644 Importers/Rhino/Speckle.Importers.JobProcessor/packages.lock.json create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Importer.cs create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/DefaultConfig.cs create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/IFileTypeConfig.cs create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/SketchupConfig.cs create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs rename Importers/Rhino/Speckle.Importers.Rhino/{ => Internal}/ImporterThreadContext.cs (80%) rename Importers/Rhino/Speckle.Importers.Rhino/{ => Internal}/Progress.cs (77%) create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Internal/Sender.cs create mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Internal/ServiceRegistration.cs delete mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Program.cs delete mode 100644 Importers/Rhino/Speckle.Importers.Rhino/Resolver.cs delete mode 100644 Importers/Rhino/Speckle.Importers.Rhino/RhinoImportResult.cs create mode 100644 Speckle.Rhino-importer.slnx diff --git a/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json index 0dc2f7e27..ebfa8c5bf 100644 --- a/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Grasshopper8/packages.lock.json @@ -343,7 +343,6 @@ "speckle.converters.rhino8": { "type": "Project", "dependencies": { - "RhinoCommon": "[8.9.24194.18121, )", "Speckle.Converters.Common": "[1.0.0, )" } }, diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index 78f33d77e..cbcf73df8 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -347,7 +347,6 @@ "speckle.converters.rhino8": { "type": "Project", "dependencies": { - "RhinoCommon": "[8.9.24194.18121, )", "Speckle.Converters.Common": "[1.0.0, )" } }, diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoImporter/EmbeddedResources/plugin-utility.ico b/Connectors/Rhino/Speckle.Connectors.RhinoImporter/EmbeddedResources/plugin-utility.ico new file mode 100644 index 0000000000000000000000000000000000000000..022d1f78842c15850a45c0405c872e51c1070015 GIT binary patch literal 33583 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 `oL`4X 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 + + + + + net8.0-windows + Debug;Release;Local + 8 + $(DefineConstants);RHINO8;RHINO7_OR_GREATER;RHINO8_OR_GREATER + .dll + true + true + true + true + + + win-x64 + true + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json index 944e0f493..268b26fd9 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.RhinoImporter/packages.lock.json @@ -235,9 +235,9 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.5.1-rc.1, )", - "Speckle.Sdk": "[3.5.1-rc.1, )", - "Speckle.Sdk.Dependencies": "[3.5.1-rc.1, )" + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" } }, "speckle.connectors.dui": { @@ -261,7 +261,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.5.1-rc.1, )" + "Speckle.Objects": "[3.5.1, )" } }, "speckle.converters.rhino8": { @@ -311,18 +311,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.5.1-rc.1, )", - "resolved": "3.5.1-rc.1", - "contentHash": "kkHlYdOdTuky7BvyU3fRayS5P/3E3EDQ6yBbwWqQqjGN3c/fozqI+20Xm87KJrkMb/9XpMfQxMfZX1n4UN80sA==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", "dependencies": { - "Speckle.Sdk": "3.5.1-rc.1" + "Speckle.Sdk": "3.5.1" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.5.1-rc.1, )", - "resolved": "3.5.1-rc.1", - "contentHash": "ZyNQI1IyWSAQ4Xc72v0WOeXon9BwtpIiw6wCIT7GrRjymSe5jXW/qMpG3YpBMccGPljCDZJFDmd87fKnWNRt3w==", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.Data.Sqlite": "7.0.5", @@ -330,14 +330,14 @@ "Microsoft.Extensions.Logging": "2.2.0", "Speckle.DoubleNumerics": "4.1.0", "Speckle.Newtonsoft.Json": "13.0.2", - "Speckle.Sdk.Dependencies": "3.5.1-rc.1" + "Speckle.Sdk.Dependencies": "3.5.1" } }, "Speckle.Sdk.Dependencies": { "type": "CentralTransitive", - "requested": "[3.5.1-rc.1, )", - "resolved": "3.5.1-rc.1", - "contentHash": "zDaocTPBFl2M5NkMsE9VqTLgbY7wy/MrE21JMBqOOcxHVtwDNOlSY9npBWDy8aAUEl6eJEKPoQr2B3Zd/RmJ9g==" + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } }, "net8.0-windows7.0/win-x64": { diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj b/Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj index 22ea3ed42..b4cf6b84a 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj +++ b/Converters/Rhino/Speckle.Converters.Rhino8/Speckle.Converters.Rhino8.csproj @@ -1,14 +1,19 @@ - net48 + net48;net8.0 Debug;Release;Local $(DefineConstants);RHINO8;RHINO7_OR_GREATER;RHINO8_OR_GREATER - - + + + + + + + diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index a37dfba22..49ba02c01 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -317,6 +317,288 @@ "resolved": "3.5.1", "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" } + }, + "net8.0": { + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net461": "1.0.3" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "RhinoCommon": { + "type": "Direct", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "Wo6JXheyDBvilyIwDY6xZCQJC4170jzAlTSlMgh8yokUY+vYyCl4KJVXZofIOynNt/xx5wLqb2On5gZZekXR6w==", + "dependencies": { + "System.Drawing.Common": "7.0.0" + } + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.6, )", + "resolved": "0.9.6", + "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" + }, + "GraphQL.Client": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0", + "GraphQL.Client.Abstractions.Websocket": "6.0.0", + "System.Reactive": "5.0.0" + } + }, + "GraphQL.Client.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==", + "dependencies": { + "GraphQL.Primitives": "6.0.0" + } + }, + "GraphQL.Client.Abstractions.Websocket": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0" + } + }, + "GraphQL.Primitives": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "nOP8R1mVb/6mZtm2qgAJXn/LFm/2kMjHDAg/QJLFG6CuWYJtaD3p1BwQhufBVvRzL9ceJ/xF0SQ0qsI2GkDQAA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "2.2.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "65MrmXCziWaQFrI0UHkQbesrX5wTwf9XPjY5yFm/VkgJKFJ5gqvXRoXjIZcf2wLi5ZlwGz/oMYfyURVCWbM5iw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "2.2.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "vJ9xvOZCnUAIHcGC3SU35r3HKmHTVIeHzo6u/qzlHAqD8m6xv92MLin4oJntTvkpKxVX3vI1GFFkIQtU3AdlsQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "2.2.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "UpZLNLBpIZ0GTebShui7xXYh6DmBHjWM8NxGxZbdQh/bPZ5e6YswqI+bru6BnEL5eWiOdodsXtEz3FROcgi/qg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Primitives": "2.2.0", + "System.ComponentModel.Annotations": "4.5.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "azyQtqbm4fSaDzZHD/J+V6oWMFaf2tWP4WEGIYePLCMw3+b2RQdj9ybgbQyjCshcitQKQ4lEDOZjmSlTTrHxUg==", + "dependencies": { + "System.Memory": "4.5.1", + "System.Runtime.CompilerServices.Unsafe": "4.5.1" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ==" + }, + "Speckle.Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.2", + "contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.4", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.4" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "CSlb5dUp1FMIkez9Iv5EXzpeq7rHryVNqwJMWnpq87j9zWZexaEMdisDktMsnnrzKM6ahNrsTkjqNodTBPBxtQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==" + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "7.0.0" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.3", + "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw==" + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", + "Speckle.Objects": "[3.5.1, )" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "2.2.0", + "contentHash": "Nxqhadc9FCmFHzU+fz3oc8sFlE6IadViYg8dfUdGzJZ2JUxnCsRghBhhOWdM4B2zSZqEc+0BjliBh/oNdRZuig==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "2.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging.Abstractions": "2.2.0", + "Microsoft.Extensions.Options": "2.2.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "2.2.0", + "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", + "dependencies": { + "Speckle.Sdk": "3.5.1" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.Data.Sqlite": "7.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Speckle.DoubleNumerics": "4.1.0", + "Speckle.Newtonsoft.Json": "13.0.2", + "Speckle.Sdk.Dependencies": "3.5.1" + } + }, + "Speckle.Sdk.Dependencies": { + "type": "CentralTransitive", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" + } } } } \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index d8321a084..8f56531f5 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,6 +6,7 @@ + @@ -17,6 +18,7 @@ + @@ -26,6 +28,7 @@ + diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportJob.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportJob.cs new file mode 100644 index 000000000..6a52696de --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportJob.cs @@ -0,0 +1,16 @@ +namespace Speckle.Importers.JobProcessor.Domain; + +/// +/// DB model for the fileimport job. +/// +internal sealed class FileimportJob +{ + public required string Id { get; init; } + public required string JobType { get; init; } + public required FileimportPayload Payload { get; init; } + public required JobStatus Status { get; init; } + public required int Attempt { get; init; } + public required int MaxAttempt { get; init; } + public required DateTime CreatedAt { get; init; } + public required DateTime UpdatedAt { get; init; } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportPayload.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportPayload.cs new file mode 100644 index 000000000..05536617e --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/FileimportPayload.cs @@ -0,0 +1,19 @@ +namespace Speckle.Importers.JobProcessor.Domain; + +/// +/// Payload for the fileimport job +/// +internal sealed class FileimportPayload +{ + public required string JobId { get; init; } + public required string Token { get; init; } + public required string BlobId { get; init; } + public required string JobType { get; init; } + public required string ModelId { get; init; } + public required string FileName { get; init; } + public required string FileType { get; init; } + public required string ProjectId { get; init; } + public required Uri ServerUrl { get; init; } + public required int PayloadVersion { get; init; } + public required int TimeOutSeconds { get; init; } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/JobStatus.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/JobStatus.cs new file mode 100644 index 000000000..03105fafc --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Domain/JobStatus.cs @@ -0,0 +1,12 @@ +namespace Speckle.Importers.JobProcessor.Domain; + +/// +/// Status enumeration for the job. +/// +internal enum JobStatus +{ + QUEUED, + PROCESSING, + SUCCEEDED, + FAILED, +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/Exceptions.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/Exceptions.cs new file mode 100644 index 000000000..158e71d63 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/Exceptions.cs @@ -0,0 +1,23 @@ +namespace Speckle.Importers.JobProcessor.JobHandlers; + +public sealed class MaxAttemptsExceededException : Exception +{ + public MaxAttemptsExceededException() { } + + public MaxAttemptsExceededException(string? message) + : base(message) { } + + public MaxAttemptsExceededException(string? message, Exception? innerException) + : base(message, innerException) { } +} + +public sealed class JobTimeoutException : Exception +{ + public JobTimeoutException() { } + + public JobTimeoutException(string? message) + : base(message) { } + + public JobTimeoutException(string? message, Exception? innerException) + : base(message, innerException) { } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/IJobHandler.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/IJobHandler.cs new file mode 100644 index 000000000..6a812bbdb --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/IJobHandler.cs @@ -0,0 +1,10 @@ +using Speckle.Importers.JobProcessor.Domain; +using Speckle.Sdk.Api; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; + +namespace Speckle.Importers.JobProcessor.JobHandlers; + +internal interface IJobHandler +{ + public Task ProcessJob(FileimportJob job, IClient client, CancellationToken cancellationToken); +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/RhinoJobHandler.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/RhinoJobHandler.cs new file mode 100644 index 000000000..6384323fc --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/JobHandlers/RhinoJobHandler.cs @@ -0,0 +1,37 @@ +using Speckle.Importers.JobProcessor.Domain; +using Speckle.Importers.Rhino; +using Speckle.Sdk.Api; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; + +namespace Speckle.Importers.JobProcessor.JobHandlers; + +internal sealed class RhinoJobHandler : IJobHandler +{ + public async Task ProcessJob(FileimportJob job, IClient client, CancellationToken cancellationToken) + { + var directory = Directory.CreateTempSubdirectory("speckle-file-import"); + try + { + string targetFilePath = $"{directory.FullName}/{job.Payload.JobId}.{job.Payload.FileType}"; + await client.FileImport.DownloadFile( + job.Payload.ProjectId, + job.Payload.BlobId, + targetFilePath, + null, + cancellationToken + ); + + return await Importer.Import( + targetFilePath, + job.Payload.ProjectId, + job.Payload.ModelId, + client.Account, + cancellationToken + ); + } + finally + { + Directory.Delete(directory.FullName, true); + } + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/JobProcessor.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/JobProcessor.cs new file mode 100644 index 000000000..cd2c638f7 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/JobProcessor.cs @@ -0,0 +1,204 @@ +using System.Diagnostics.CodeAnalysis; +using Microsoft.Extensions.Logging; +using Speckle.Connectors.Common.Extensions; +using Speckle.Connectors.Logging; +using Speckle.Importers.JobProcessor.Domain; +using Speckle.Importers.JobProcessor.JobHandlers; +using Speckle.Importers.JobProcessor.JobQueue; +using Speckle.Sdk.Api; +using Speckle.Sdk.Api.GraphQL.Inputs; +using Speckle.Sdk.Credentials; +using Speckle.Sdk.Logging; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; + +namespace Speckle.Importers.JobProcessor; + +internal sealed class JobProcessorInstance( + Repository repository, + ILogger logger, + IJobHandler jobHandler, + IAccountFactory accountFactory, + IClientFactory clientFactory, + ISdkActivityFactory activityFactory +) +{ + private static readonly TimeSpan s_idleTimeout = TimeSpan.FromSeconds(1); + + public async Task StartProcessing(CancellationToken cancellationToken = default) + { + await using var connection = await repository.SetupConnection(cancellationToken).ConfigureAwait(false); + + while (true) + { + logger.LogInformation("Listening for jobs..."); + + FileimportJob? job = await repository.GetNextJob(connection, cancellationToken); + if (job == null) + { + logger.LogDebug("No job found, sleeping for {timeout}", s_idleTimeout); + await Task.Delay(s_idleTimeout, cancellationToken); + continue; + } + logger.LogInformation("Starting {jobId}", job.Id); + + using var activity = activityFactory.Start(); + ActivityScope.SetTag("jobId", job.Id); + ActivityScope.SetTag("jobType", job.Payload.JobType); + ActivityScope.SetTag("job.attempt", job.Attempt.ToString()); + ActivityScope.SetTag("serverUrl", job.Payload.ServerUrl.ToString()); + ActivityScope.SetTag("projectId", job.Payload.ProjectId); + ActivityScope.SetTag("modelId", job.Payload.ModelId); + ActivityScope.SetTag("blobId", job.Payload.BlobId); + + try + { + JobStatus jobStatus = await AttemptJob(job, cancellationToken); + await repository.SetJobStatus(connection, job.Id, jobStatus, cancellationToken); + activity?.SetStatus(SdkActivityStatusCode.Ok); + } + catch (Exception ex) + { + activity?.RecordException(ex); + activity?.SetStatus(SdkActivityStatusCode.Error); + throw; + } + } + } + + private static async Task ReportSuccess( + FileimportJob job, + Version version, + IClient client, + CancellationToken cancellationToken + ) + { + var input = new FileImportSuccessInput + { + projectId = job.Payload.ProjectId, + jobId = job.Payload.BlobId, + warnings = [], + result = new FileImportResult(0, 0, 0, "Rhino Importer", versionId: version.id) + }; + await client.FileImport.FinishFileImportJob(input, cancellationToken); + } + + private static async Task ReportFailed( + FileimportJob job, + IClient client, + Exception ex, + CancellationToken cancellationToken + ) + { + var input = new FileImportErrorInput() + { + projectId = job.Payload.ProjectId, + jobId = job.Payload.BlobId, + warnings = [], + reason = ex.ToString(), + result = new FileImportResult(0, 0, 0, "Rhino Importer", versionId: null) + }; + await client.FileImport.FinishFileImportJob(input, cancellationToken); + } + + private async Task SetupClient(FileimportJob job, CancellationToken cancellationToken) + { + var account = await accountFactory.CreateAccount( + job.Payload.ServerUrl, + job.Payload.Token, + cancellationToken: cancellationToken + ); + + return clientFactory.Create(account); + } + + [SuppressMessage("Design", "CA1031:Do not catch general exception types")] + private async Task AttemptJob(FileimportJob job, CancellationToken cancellationToken) + { + using var activity = activityFactory.Start(); + + IClient? speckleClient = null; + try + { + speckleClient = await SetupClient(job, cancellationToken); + UserActivityScope.AddUserScope(speckleClient.Account); + + if (job.Attempt > job.MaxAttempt) + { + //something went wrong, it should have been marked as failed + throw new MaxAttemptsExceededException("Unhandled error silently failed the job multiple times"); + } + + try + { + Version version = await ExecuteJobWithTimeout(job, speckleClient, cancellationToken); + await ReportSuccess(job, version, speckleClient, cancellationToken); + logger.LogInformation("Job {jobId} has succeeded creating {versionId}", job.Id, version.id); + + activity?.SetStatus(SdkActivityStatusCode.Ok); + return JobStatus.SUCCEEDED; + } + catch (JobTimeoutException ex) + { + logger.LogInformation(ex, "Executing job timed out"); + + if (job.Attempt >= job.MaxAttempt) + { + throw new MaxAttemptsExceededException("The final attempt to process the job failed", ex); + } + + activity?.RecordException(ex); + activity?.SetStatus(SdkActivityStatusCode.Error); + return JobStatus.QUEUED; + } + } + catch (Exception ex) + { + logger.LogError(ex, "Attempt {attempt} to process {jobId} failed", job.Attempt, job.Id); + + if (speckleClient is not null) + { + await ReportFailed(job, speckleClient, ex, cancellationToken); + } + + activity?.RecordException(ex); + activity?.SetStatus(SdkActivityStatusCode.Error); + return JobStatus.FAILED; + } + finally + { + speckleClient?.Dispose(); + } + } + + /// + /// + /// + /// + /// + /// if attempt was successful, if job timedout, but can be re-attempted without exceeding + /// Timeout was reached AND MaxAttempt was reached + private async Task ExecuteJobWithTimeout( + FileimportJob job, + IClient client, + CancellationToken cancellationToken + ) + { + using CancellationTokenSource timeout = new(); + timeout.CancelAfter(TimeSpan.FromSeconds(job.Payload.TimeOutSeconds)); + using CancellationTokenSource linkedSource = CancellationTokenSource.CreateLinkedTokenSource( + timeout.Token, + cancellationToken + ); + try + { + return await jobHandler.ProcessJob(job, client, linkedSource.Token); + } + catch (OperationCanceledException ex) when (timeout.IsCancellationRequested) + { + throw new JobTimeoutException( + $"Job was cancelled due to reaching the {job.Payload.TimeOutSeconds} second timeout", + ex + ); + } + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/JsonHandler.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/JsonHandler.cs new file mode 100644 index 000000000..bc42fdc71 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/JsonHandler.cs @@ -0,0 +1,25 @@ +using System.Data; +using System.Text.Json; +using Dapper; + +namespace Speckle.Importers.JobProcessor.JobQueue; + +internal sealed class JsonHandler : SqlMapper.TypeHandler +{ + private readonly JsonSerializerOptions _options = new() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, }; + + public override void SetValue(IDbDataParameter parameter, T? value) + { + parameter.Value = JsonSerializer.Serialize(value); + } + + public override T? Parse(object value) + { + if (value is string json) + { + return JsonSerializer.Deserialize(json, _options); + } + + throw new DataException($"Cannot convert {value.GetType()} to {typeof(T)}"); + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/Repository.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/Repository.cs new file mode 100644 index 000000000..ef32fe7d6 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/JobQueue/Repository.cs @@ -0,0 +1,114 @@ +using System.Data; +using Dapper; +using Microsoft.Extensions.Logging; +using Npgsql; +using Speckle.Importers.JobProcessor.Domain; + +namespace Speckle.Importers.JobProcessor.JobQueue; + +internal sealed class Repository(ILogger logger) +{ + public async Task SetupConnection(CancellationToken cancellationToken) + { + string fileImportQueuePostgresUrl = + Environment.GetEnvironmentVariable("FILEIMPORT_QUEUE_POSTGRES_URL") + ?? throw new ArgumentException("Expected FILEIMPORT_QUEUE_POSTGRES_URL environment variable to be set"); + + string connectionString = ParseConnectionString(new(fileImportQueuePostgresUrl)); + var connection = new NpgsqlConnection(connectionString); + await connection.OpenAsync(cancellationToken).ConfigureAwait(false); + return connection; + } + + private static string ParseConnectionString(Uri connectionUrl) + { + if (connectionUrl.Scheme is not "postgres" and not "postgresql") + { + throw new ArgumentException("Invalid URI scheme. Expected 'postgres' or 'postgresql'.", nameof(connectionUrl)); + } + var userInfo = connectionUrl.UserInfo.Split(':'); + if (userInfo.Length != 2) + { + throw new ArgumentException("Invalid URI format: missing username or password."); + } + + var builder = new NpgsqlConnectionStringBuilder + { + Host = connectionUrl.Host, + Port = connectionUrl.Port > 0 ? connectionUrl.Port : 5432, // Default to 5432 if not specified + Username = userInfo[0], + Password = userInfo[1], + Database = connectionUrl.AbsolutePath.TrimStart('/') + }; + return builder.ConnectionString; + } + + public async Task GetNextJob(IDbConnection connection, CancellationToken cancellationToken) + { + //lang=postgresql + const string COMMAND_TEXT = """ + WITH next_job AS ( + UPDATE background_jobs + SET + "attempt" = "attempt" + 1, + "status" = @Status1, + "updatedAt" = NOW() + WHERE id = ( + SELECT id FROM background_jobs + WHERE ( --queued job + (payload ->> 'fileType') = ANY(@FileTypes) + AND status = @Status2 + ) + OR ( --timed job left on processing state + (payload ->> 'fileType') = ANY(@FileTypes) + AND status = @Status1 + AND "updatedAt" < NOW() - ("timeoutMs" * interval '1 millisecond') + ) + ORDER BY "createdAt" + FOR UPDATE SKIP LOCKED + LIMIT 1 + ) + RETURNING * + ) + SELECT * FROM next_job; + """; + + var command = new CommandDefinition( + commandText: COMMAND_TEXT, + parameters: new + { + Status1 = nameof(JobStatus.PROCESSING).ToLowerInvariant(), + Status2 = nameof(JobStatus.QUEUED).ToLowerInvariant(), + FileTypes = SupportedFileTypes.FileTypes, + }, + cancellationToken: cancellationToken + ); + + return await connection.QueryFirstOrDefaultAsync(command); + } + + public async Task SetJobStatus( + IDbConnection connection, + string jobId, + JobStatus jobStatus, + CancellationToken cancellationToken + ) + { + logger.LogInformation("Updating job: {jobId}'s status to {jobStatus}", jobId, jobStatus); + + //lang=postgresql + const string COMMAND_TEXT = """ + UPDATE background_jobs + SET status = @status, "updatedAt" = NOW() + WHERE id = @jobId + """; + + var command = new CommandDefinition( + commandText: COMMAND_TEXT, + parameters: new { status = jobStatus.ToString().ToLowerInvariant(), jobId, }, + cancellationToken: cancellationToken + ); + + await connection.ExecuteAsync(command); + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs new file mode 100644 index 000000000..0bcc2ea83 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Program.cs @@ -0,0 +1,78 @@ +// See https://aka.ms/new-console-template for more information + +using Dapper; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Rhino.Runtime.InProcess; +using RhinoInside; +using Speckle.Importers.JobProcessor.Domain; +using Speckle.Importers.JobProcessor.JobHandlers; +using Speckle.Importers.JobProcessor.JobQueue; + +namespace Speckle.Importers.JobProcessor; + +public static class Program +{ + static Program() + { + Resolver.Initialize(); + } + + [STAThread] + public static async Task Main() + { + ILogger? logger = null; + try + { + // Dapper doesn't understand how to handle JSON deserialization, so we need to tell it what types can be deserialzied + SqlMapper.AddTypeHandler(new JsonHandler()); + + // DI setup + var serviceCollection = new ServiceCollection(); + serviceCollection.AddJobProcessor(); + + serviceCollection.AddTransient(); + + var serviceProvider = serviceCollection.BuildServiceProvider(); + + var processor = serviceProvider.GetRequiredService(); + logger = serviceProvider.GetRequiredService>(); + + TaskScheduler.UnobservedTaskException += (sender, args) => + logger.LogCritical(args.Exception, "Unobserved Task Exception"); + + using (new RhinoCore(["/netcore-8"], WindowStyle.NoWindow)) + { + //What ever thread RhinoCore is created on it will grab as soon as it's available, and it will hog it forever. + //Right now, we're giving it the main STA thread (not 100% if it needs STA or if it could work on any thread) + await Task.Run(async () => + { + logger.LogInformation("Job processor has started!"); + try + { + await processor.StartProcessing(); + } + catch (Exception ex) + { + logger.LogCritical(ex, "Unhandled exception in Main"); + throw; + } + }) + .ConfigureAwait(false); + } + } + catch (Exception ex) + { + if (logger is not null) + { + logger.LogCritical(ex, "Unhandled exception reached entry point"); + } + else + { + Console.WriteLine($"Unhandled exception reached entry point: {ex}"); + } + + throw; + } + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Properties/launchSettings.json b/Importers/Rhino/Speckle.Importers.JobProcessor/Properties/launchSettings.json new file mode 100644 index 000000000..6dcb9cfd1 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Properties/launchSettings.json @@ -0,0 +1,11 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "profiles": { + "Local Docker DB": { + "commandName": "Project", + "environmentVariables": { + "FILEIMPORT_QUEUE_POSTGRES_URL": "postgresql://speckle:speckle@127.0.0.1:5432/speckle" + } + } + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/ServiceRegistration.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/ServiceRegistration.cs new file mode 100644 index 000000000..7536e483a --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/ServiceRegistration.cs @@ -0,0 +1,26 @@ +using Microsoft.Extensions.DependencyInjection; +using Speckle.Connectors.Common; +using Speckle.Importers.JobProcessor.JobQueue; +using Speckle.Sdk; + +namespace Speckle.Importers.JobProcessor; + +internal static class ServiceRegistration +{ + private static readonly Application s_application = new(".NET File Import Job Processor", "jobprocessor"); + + public static IServiceCollection AddJobProcessor(this IServiceCollection serviceCollection) + { + serviceCollection.AddLoggingConfig(); + serviceCollection.AddTransient(); + serviceCollection.AddTransient(); + return serviceCollection; + } + + private static IServiceCollection AddLoggingConfig(this IServiceCollection serviceCollection) + { + serviceCollection.Initialize(s_application, HostAppVersion.v3); + + return serviceCollection; + } +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/Speckle.Importers.JobProcessor.csproj b/Importers/Rhino/Speckle.Importers.JobProcessor/Speckle.Importers.JobProcessor.csproj new file mode 100644 index 000000000..6e4e7653e --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/Speckle.Importers.JobProcessor.csproj @@ -0,0 +1,23 @@ + + + + net8.0-windows + x64 + Exe + Debug;Release;Local + + + + + + + + + + + + + + + + diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/SupportedFileTypes.cs b/Importers/Rhino/Speckle.Importers.JobProcessor/SupportedFileTypes.cs new file mode 100644 index 000000000..0476c3527 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/SupportedFileTypes.cs @@ -0,0 +1,65 @@ +namespace Speckle.Importers.JobProcessor; + +public static class SupportedFileTypes +{ + /// + /// This is the full list of file extensions that this job processor will look for jobs with that extension + /// This also happens to be the full list of file types that Rhino 8 supports., + /// + public static readonly string[] FileTypes = + [ + "3dm", // Rhino 3D Model (except ver 1.x save) + "3dmbak", // Rhino 3D Model Backup + "rws", // Rhino Worksession + "3mf", // 3MF + "3ds", // 3D Studio + "amf", // AMF + "ai", // Adobe Illustrator + "dwg", // AutoCAD Drawing + "dxf", // AutoCAD Drawing Exchange + "x", // DirectX + "e57", // E57 + "dst", // Embroidery + "exp", + "dst", // Encapsulated PostScript + "exp", + "off", // Geomview OFF + "gf", // GHS Geometry + "gft", + "gltf", // GL Transmission Format + "glb", + "gts", // GTS (GNU Triangulated Surface) + "igs", // IGES + "iges", + "lwo", // Lightwave + "dgn", // Microstation + "fbx", // MotionBuilder + "scn", // NextEngine Scan + "obj", // OBJ (Wavefront) + "pdf", // PDF + "ply", // PLY + "asc", // Points + "csv", + "xyz", + "pts", + "cgo_ascii", // Points + "cgo_asci", + "txt", // Points + "raw", // Raw Triangles + "m", // Recon M + "svg", // Scalable Vector Graphics + "skp", // SketchUp + "slc", // Slice + "sldprt", // SOLIDWORKS + "sldasm", + "stp", // STEP + "step", + "stl", // STL (Stereolithography) + "vda", // VDA + "wrl", // VRML/Open Inventor + "vrml", + "iv", + "gdf", // WAMIT + "zpr", // Zcorp (3D Systems) + ]; +} diff --git a/Importers/Rhino/Speckle.Importers.JobProcessor/packages.lock.json b/Importers/Rhino/Speckle.Importers.JobProcessor/packages.lock.json new file mode 100644 index 000000000..9958aee9d --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.JobProcessor/packages.lock.json @@ -0,0 +1,382 @@ +{ + "version": 2, + "dependencies": { + "net8.0-windows7.0": { + "Dapper": { + "type": "Direct", + "requested": "[2.1.66, )", + "resolved": "2.1.66", + "contentHash": "/q77jUgDOS+bzkmk3Vy9SiWMaetTw+NOoPAV0xPBsGVAyljd5S6P+4RUW7R3ZUGGr9lDRyPKgAMj2UAOwvqZYw==" + }, + "Microsoft.NETFramework.ReferenceAssemblies": { + "type": "Direct", + "requested": "[1.0.3, )", + "resolved": "1.0.3", + "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", + "dependencies": { + "Microsoft.NETFramework.ReferenceAssemblies.net461": "1.0.3" + } + }, + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "Npgsql": { + "type": "Direct", + "requested": "[9.0.3, )", + "resolved": "9.0.3", + "contentHash": "tPvY61CxOAWxNsKLEBg+oR646X4Bc8UmyQ/tJszL/7mEmIXQnnBhVJZrZEEUv0Bstu0mEsHZD5At3EO8zQRAYw==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + } + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "RhinoCommon": { + "type": "Direct", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "Wo6JXheyDBvilyIwDY6xZCQJC4170jzAlTSlMgh8yokUY+vYyCl4KJVXZofIOynNt/xx5wLqb2On5gZZekXR6w==", + "dependencies": { + "System.Drawing.Common": "7.0.0" + } + }, + "RhinoWindows": { + "type": "Direct", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "9zqCorcLRBeiW/j1RTwUS4E7bnZetAdA9WDdtd/AQccjOpxdtw76wdN+ciyQ6qslseWkwZ9qSBeh7QaM800Ntw==", + "dependencies": { + "RhinoCommon": "[8.21.25188.17001]" + } + }, + "Serilog.Extensions.Logging": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", + "dependencies": { + "Microsoft.Extensions.Logging": "8.0.0", + "Serilog": "3.1.1" + } + }, + "Serilog.Formatting.Compact": { + "type": "Direct", + "requested": "[3.0.0, )", + "resolved": "3.0.0", + "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Serilog.Sinks.Console": { + "type": "Direct", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.6, )", + "resolved": "0.9.6", + "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" + }, + "GraphQL.Client": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "8yPNBbuVBpTptivyAlak4GZvbwbUcjeQTL4vN1HKHRuOykZ4r7l5fcLS6vpyPyLn0x8FsL31xbOIKyxbmR9rbA==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0", + "GraphQL.Client.Abstractions.Websocket": "6.0.0", + "System.Reactive": "5.0.0" + } + }, + "GraphQL.Client.Abstractions": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "h7uzWFORHZ+CCjwr/ThAyXMr0DPpzEANDa4Uo54wqCQ+j7qUKwqYTgOrb1W40sqbvNaZm9v/X7It31SUw0maHA==", + "dependencies": { + "GraphQL.Primitives": "6.0.0" + } + }, + "GraphQL.Client.Abstractions.Websocket": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "Nr9bPf8gIOvLuXpqEpqr9z9jslYFJOvd0feHth3/kPqeR3uMbjF5pjiwh4jxyMcxHdr8Pb6QiXkV3hsSyt0v7A==", + "dependencies": { + "GraphQL.Client.Abstractions": "6.0.0" + } + }, + "GraphQL.Primitives": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==" + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.5", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.5", + "contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "8.0.2", + "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==" + }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ==" + }, + "Speckle.Newtonsoft.Json": { + "type": "Transitive", + "resolved": "13.0.2", + "contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA==" + }, + "SQLitePCLRaw.bundle_e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.4", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.4" + } + }, + "SQLitePCLRaw.core": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "inBjvSHo9UDKneGNzfUfDjK08JzlcIhn1+SP5Y3m6cgXpCxXKCJDy6Mka7LpgSV+UZmKSnC8rTwB0SQ0xKu5pA==", + "dependencies": { + "System.Memory": "4.5.3" + } + }, + "SQLitePCLRaw.lib.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" + }, + "SQLitePCLRaw.provider.e_sqlite3": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "CSlb5dUp1FMIkez9Iv5EXzpeq7rHryVNqwJMWnpq87j9zWZexaEMdisDktMsnnrzKM6ahNrsTkjqNodTBPBxtQ==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Drawing.Common": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==", + "dependencies": { + "Microsoft.Win32.SystemEvents": "7.0.0" + } + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.3", + "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==" + }, + "speckle.connectors.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", + "Speckle.Connectors.Logging": "[1.0.0, )", + "Speckle.Objects": "[3.5.1, )", + "Speckle.Sdk": "[3.5.1, )", + "Speckle.Sdk.Dependencies": "[3.5.1, )" + } + }, + "speckle.connectors.dui": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", + "Speckle.Connectors.Common": "[1.0.0, )" + } + }, + "speckle.connectors.dui.webview": { + "type": "Project", + "dependencies": { + "Microsoft.Web.WebView2": "[1.0.1938.49, )", + "Speckle.Connectors.DUI": "[1.0.0, )" + } + }, + "speckle.connectors.logging": { + "type": "Project" + }, + "speckle.connectors.rhinoimporter": { + "type": "Project", + "dependencies": { + "Speckle.Connectors.Common": "[1.0.0, )", + "Speckle.Connectors.DUI.WebView": "[1.0.0, )", + "Speckle.Converters.Rhino8": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", + "Speckle.Objects": "[3.5.1, )" + } + }, + "speckle.converters.rhino8": { + "type": "Project", + "dependencies": { + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.importers.rhino": { + "type": "Project", + "dependencies": { + "Rhino.Inside": "[8.0.7-beta, )", + "Speckle.Connectors.RhinoImporter": "[1.0.0, )", + "Speckle.Converters.Rhino8": "[1.0.0, )" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "8.0.0", + "contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "8.0.0", + "contentHash": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[2.2.0, )", + "resolved": "8.0.2", + "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } + }, + "Microsoft.Web.WebView2": { + "type": "CentralTransitive", + "requested": "[1.0.1938.49, )", + "resolved": "1.0.1938.49", + "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" + }, + "Rhino.Inside": { + "type": "CentralTransitive", + "requested": "[8.0.7-beta, )", + "resolved": "8.0.7-beta", + "contentHash": "PNZdWysS2zI9vaxJ8HQig3iZA3Xg1yG1hnq09VPStQpceoj94iJ6xk0Ubddaw5oswkYYUIJRmQ8xr+bLTROs/g==", + "dependencies": { + "Grasshopper": "8.0.23304.9001", + "RhinoCommon": "8.0.23304.9001" + } + }, + "Serilog": { + "type": "CentralTransitive", + "requested": "[4.0.1, )", + "resolved": "4.0.0", + "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==" + }, + "Speckle.DoubleNumerics": { + "type": "CentralTransitive", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "20DtS+FsDRsOD9+AU3TwNFZ0qrKo5f6f7B5ZR9wStsIHHHC9k7DpjbCvuNtmnSjx54MD+TJC7wV2f5iyGVPj1A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "pBFTwdc49aQgE6Sho/9uYoqRRnkRyqEp9Sg+xBKWJ2i+XdKts91n//GgolUT2i9Xh46MJiZXgezWQx3ne6kr7w==", + "dependencies": { + "Speckle.Sdk": "3.5.1" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.Data.Sqlite": "7.0.5", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Speckle.DoubleNumerics": "4.1.0", + "Speckle.Newtonsoft.Json": "13.0.2", + "Speckle.Sdk.Dependencies": "3.5.1" + } + }, + "Speckle.Sdk.Dependencies": { + "type": "CentralTransitive", + "requested": "[3.5.1, )", + "resolved": "3.5.1", + "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" + } + } + } +} \ No newline at end of file diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Importer.cs b/Importers/Rhino/Speckle.Importers.Rhino/Importer.cs new file mode 100644 index 000000000..b60ff23d7 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Importer.cs @@ -0,0 +1,31 @@ +using Microsoft.Extensions.DependencyInjection; +using Speckle.Importers.Rhino.Internal; +using Speckle.Sdk.Credentials; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; + +namespace Speckle.Importers.Rhino; + +/// +/// Entry point for the rhino import. +/// Is a wrapper around an internal DI container. +/// It's very important that the state of services doesn't bleed between job, +/// So every import creates a new container for its processing +/// I don't trust the current services to not hold on to caches or state that could influence the next run +/// +public static class Importer +{ + public static async Task Import( + string filePath, + string projectId, + string modelId, + Account account, + CancellationToken cancellationToken + ) + { + var serviceCollection = new ServiceCollection(); + serviceCollection.AddRhinoImporter(); + using var serviceProvider = serviceCollection.BuildServiceProvider(); + var instance = serviceProvider.GetRequiredService(); + return await instance.RunRhinoImport(filePath, projectId, modelId, account, cancellationToken); + } +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/DefaultConfig.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/DefaultConfig.cs new file mode 100644 index 000000000..882de073a --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/DefaultConfig.cs @@ -0,0 +1,11 @@ +using Rhino; +using Rhino.Collections; + +namespace Speckle.Importers.Rhino.Internal.FileTypeConfig; + +public sealed class DefaultConfig : IFileTypeConfig +{ + public ArchivableDictionary? ImportOptions => null; + + public void PreProcessDocument(RhinoDoc doc) { } +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/IFileTypeConfig.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/IFileTypeConfig.cs new file mode 100644 index 000000000..a8742bfc0 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/IFileTypeConfig.cs @@ -0,0 +1,24 @@ +using Rhino; +using Rhino.Collections; + +namespace Speckle.Importers.Rhino.Internal.FileTypeConfig; + +/// +/// Represents configuration for a specific file type (e.g. .skp) to customise the import behaviour +/// +internal interface IFileTypeConfig +{ + /// + /// Options to pass to the command + /// + public ArchivableDictionary? ImportOptions { get; } + + /// + /// Run any operations on objects in the rhino document to clean up the export before converting to speckle + /// + /// + /// Ran on the document after importing, but before any Speckle conversion + /// + /// + public void PreProcessDocument(RhinoDoc doc); +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/SketchupConfig.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/SketchupConfig.cs new file mode 100644 index 000000000..289fbe458 --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/FileTypeConfig/SketchupConfig.cs @@ -0,0 +1,46 @@ +using Rhino; +using Rhino.Collections; +using Rhino.DocObjects; +using Rhino.Geometry; + +namespace Speckle.Importers.Rhino.Internal.FileTypeConfig; + +public sealed class SketchupConfig : IFileTypeConfig +{ + public ArchivableDictionary? ImportOptions => null; + + /// + /// Clean up step to strip imported meshes of their NGon data, leaving only the triangle/quad data behind. + /// This works around a bug in the sketchup importer creating invalid ngons. + /// + /// + /// Without this cleanup step, skp imports send incorrect meshes to speckle + /// I believe there is a bug in Rhino's skp file importing logic + /// The function documents that it will return ccw faces, + /// and this holds true for native modeled rhino meshes, but not meshes from sketchup imports. + /// Since Speckle's conversions rely on this function returning how it's documented, the resulting speckle geometry + /// would be invalid without this step + /// + /// + public void PreProcessDocument(RhinoDoc doc) + { + // Process regular meshes in the document + foreach (var obj in doc.Objects.GetObjectList(ObjectType.Mesh)) + { + if (obj.Geometry is not Mesh mesh) + { + continue; + } + + if (mesh.Ngons.Count <= 0) + { + continue; + } + + mesh.Ngons.Clear(); + _ = doc.Objects.Replace(obj.Id, mesh); + } + + //TODO: same for meshes inside blocks + } +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs new file mode 100644 index 000000000..3ec008add --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterInstance.cs @@ -0,0 +1,50 @@ +using Rhino; +using Speckle.Importers.Rhino.Internal.FileTypeConfig; +using Speckle.Sdk; +using Speckle.Sdk.Credentials; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; + +namespace Speckle.Importers.Rhino.Internal; + +internal sealed class ImporterInstance(Sender sender) +{ + public async Task RunRhinoImport( + string filePath, + string projectId, + string modelId, + Account account, + CancellationToken cancellationToken + ) + { + using RhinoDoc open = RhinoDoc.CreateHeadless(null); + try + { + var config = GetConfig(Path.GetExtension(filePath)); + + RhinoDoc.ActiveDoc = open; + if (!open.Import(filePath, config.ImportOptions)) + { + throw new SpeckleException("Rhino could not import this file"); + } + + config.PreProcessDocument(open); + + var version = await sender.Send(projectId, modelId, account, cancellationToken); + return version; + } + finally + { + //Being a bit extra defensive that we're cleaning up the old doc + RhinoDoc.ActiveDoc?.Dispose(); + RhinoDoc.ActiveDoc = null; + GC.Collect(); + } + } + + private static IFileTypeConfig GetConfig(string extension) => + extension.ToLowerInvariant() switch + { + ".skp" => new SketchupConfig(), + _ => new DefaultConfig(), + }; +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/ImporterThreadContext.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterThreadContext.cs similarity index 80% rename from Importers/Rhino/Speckle.Importers.Rhino/ImporterThreadContext.cs rename to Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterThreadContext.cs index 97f842c43..2516a2d4c 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/ImporterThreadContext.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ImporterThreadContext.cs @@ -1,8 +1,11 @@ using Speckle.Connectors.Common.Threading; -namespace Speckle.Importers.Rhino; +namespace Speckle.Importers.Rhino.Internal; -public class ImporterThreadContext : ThreadContext +/// +/// A custom implementation of the ThreadContext to behave correctly with windowless rhino +/// +internal sealed class ImporterThreadContext : ThreadContext { protected override Task WorkerToMainAsync(Func> action) { diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Progress.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/Progress.cs similarity index 77% rename from Importers/Rhino/Speckle.Importers.Rhino/Progress.cs rename to Importers/Rhino/Speckle.Importers.Rhino/Internal/Progress.cs index fc49354a2..e99f8a54a 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Progress.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/Progress.cs @@ -1,9 +1,9 @@ using Microsoft.Extensions.Logging; using Speckle.Connectors.Common.Operations; -namespace Speckle.Importers.Rhino; +namespace Speckle.Importers.Rhino.Internal; -public class Progress(ILogger logger) : IProgress +internal sealed class Progress(ILogger logger) : IProgress { private readonly TimeSpan _debounce = TimeSpan.FromMilliseconds(1000); private DateTime _lastTime = DateTime.UtcNow; diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/Sender.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/Sender.cs new file mode 100644 index 000000000..f666fe76a --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/Sender.cs @@ -0,0 +1,64 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Rhino; +using Rhino.DocObjects; +using Speckle.Connectors.Common.Operations; +using Speckle.Converters.Common; +using Speckle.Converters.Rhino; +using Speckle.Sdk; +using Speckle.Sdk.Credentials; +using Speckle.Sdk.Logging; +using Version = Speckle.Sdk.Api.GraphQL.Models.Version; + +namespace Speckle.Importers.Rhino.Internal; + +internal sealed class Sender( + ISdkActivityFactory activityFactory, + IServiceProvider serviceProvider, + IRhinoConversionSettingsFactory rhinoConversionSettingsFactory, + Progress progress, + ILogger logger +) +{ + public async Task Send( + string projectId, + string modelId, + Account account, + CancellationToken cancellationToken + ) + { + // NOTE: introduction of AddVisualizationProperties setting not accounted for, hence hardcoded as true (i.e. "as before") + using var activity = activityFactory.Start(); + using var scope = serviceProvider.CreateScope(); + scope + .ServiceProvider.GetRequiredService>() + .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc, true)); + + List rhinoObjects = RhinoDoc + .ActiveDoc.Objects.GetObjectList(ObjectType.AnyObject) + .Where(obj => obj != null) + .ToList(); + + if (rhinoObjects.Count == 0) + { + throw new SpeckleException("There are no objects found in the file"); + } + + var operation = scope.ServiceProvider.GetRequiredService>(); + var buildResults = await operation.Build(rhinoObjects, projectId, progress, cancellationToken); + var (results, version) = await operation.Send( + buildResults.RootObject, + projectId, + modelId, + "Rhino File Importer", + null, + account, + progress, + cancellationToken + ); + + logger.LogInformation($"Root: {results.RootId}"); + + return version; + } +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Internal/ServiceRegistration.cs b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ServiceRegistration.cs new file mode 100644 index 000000000..8d8bfd75f --- /dev/null +++ b/Importers/Rhino/Speckle.Importers.Rhino/Internal/ServiceRegistration.cs @@ -0,0 +1,26 @@ +using Microsoft.Extensions.DependencyInjection; +using Speckle.Connectors.Common; +using Speckle.Connectors.Common.Threading; +using Speckle.Connectors.Rhino.DependencyInjection; +using Speckle.Converters.Rhino; + +namespace Speckle.Importers.Rhino.Internal; + +internal static class ServiceRegistration +{ + public static IServiceCollection AddRhinoImporter(this IServiceCollection services) + { + services.Initialize(HostApplications.RhinoImporter, HostAppVersion.v8); + + services.AddRhino(false); + services.AddRhinoConverters(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + // override default thread context + services.AddSingleton(new ImporterThreadContext()); + + return services; + } +} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Program.cs b/Importers/Rhino/Speckle.Importers.Rhino/Program.cs deleted file mode 100644 index ba2a556fe..000000000 --- a/Importers/Rhino/Speckle.Importers.Rhino/Program.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System.CommandLine; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Rhino; -using Rhino.Runtime.InProcess; -using Serilog; -using Serilog.Formatting.Compact; -using Speckle.Connectors.Common; -using Speckle.Connectors.Common.Threading; -using Speckle.Connectors.Rhino.DependencyInjection; -using Speckle.Converters.Rhino; -using Speckle.Newtonsoft.Json; -using Speckle.Sdk.Logging; - -namespace Speckle.Importers.Rhino; - -public static class Program -{ - static Program() - { - Resolver.Initialize(); - } - - [STAThread] - public static async Task Main(string[] args) - { - try - { - RootCommand rootCommand = new(); - - Argument pathArg = new(name: "Source File Path", description: "Path to file to load and parse"); - Argument resultsPathArg = - new(name: "Results File Path", description: "Path to file to write results information (like version id)"); - Argument projectIdArg = new(name: "Project Id", description: "The project id to publish to"); - Argument modelIdArg = new(name: "Model Id", description: "The model id to publish to"); - Argument serverUrlArg = new(name: "Server Url", description: "The url of the server to publish to."); - Argument tokenArg = new(name: "Token", description: "The speckle token to use for publish"); - - rootCommand.AddArgument(pathArg); - rootCommand.AddArgument(resultsPathArg); - rootCommand.AddArgument(projectIdArg); - rootCommand.AddArgument(modelIdArg); - rootCommand.AddArgument(serverUrlArg); - rootCommand.AddArgument(tokenArg); - - rootCommand.SetHandler(Handle, pathArg, resultsPathArg, projectIdArg, modelIdArg, serverUrlArg, tokenArg); - - await rootCommand.InvokeAsync(args).ConfigureAwait(false); - - return 0; - } -#pragma warning disable CA1031 - catch (Exception e) -#pragma warning restore CA1031 - { - Console.WriteLine(e); - return -1; - } - } - -#pragma warning disable CA1506 - private static async Task Handle( - string filePath, - string resultsPath, - string projectId, - string modelId, -#pragma warning restore CA1506 - string serverUrl, - string token - ) - { - // Create file with account info here - var accountsDir = SpecklePathProvider.AccountsFolderPath; - if (!Directory.Exists(accountsDir)) - { - Directory.CreateDirectory(accountsDir); - } - - using (new RhinoCore([], WindowStyle.NoWindow)) - { - //doc is often null so dispose the active doc too - using var doc = RhinoDoc.Open(filePath, out _); - using var __ = RhinoDoc.ActiveDoc; - var services = new ServiceCollection(); - services.Initialize(HostApplications.RhinoImporter, HostAppVersion.v8); - services.AddRhino(false); - services.AddRhinoConverters(); - // override default - services.AddSingleton(new ImporterThreadContext()); - services.AddTransient(); - Log.Logger = new LoggerConfiguration() - .Enrich.FromLogContext() - .WriteTo.Console(new RenderedCompactJsonFormatter()) - .CreateLogger(); - services.AddLogging(loggingBuilder => - { - loggingBuilder.ClearProviders(); - loggingBuilder.AddSerilog(dispose: true); - }); - - // but the Rhino connector has `.rhp` as it is extension. - var container = services.BuildServiceProvider(); - try - { - var sender = ActivatorUtilities.CreateInstance(container); - var version = await sender.Send(projectId, modelId, new Uri(serverUrl), token); - - var result = - version == null - ? new RhinoImportResult() { Success = false, ErrorMessage = "Failed to create version!" } - : new RhinoImportResult() { Success = true, CommitId = version.id }; - - File.WriteAllText(resultsPath, JsonConvert.SerializeObject(result)); - } - catch (Exception ex) - { - container.GetRequiredService>().LogError(ex, "Fatal error for import"); - var results = new RhinoImportResult() { Success = false, ErrorMessage = ex.Message, }; - File.WriteAllText(resultsPath, JsonConvert.SerializeObject(results)); - throw; - } - } - } -} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Resolver.cs b/Importers/Rhino/Speckle.Importers.Rhino/Resolver.cs deleted file mode 100644 index 2e7194f7f..000000000 --- a/Importers/Rhino/Speckle.Importers.Rhino/Resolver.cs +++ /dev/null @@ -1,124 +0,0 @@ -using System.Reflection; -using Speckle.Sdk.Common; - -namespace Speckle.Importers.Rhino; - -//from https://github.com/mcneel/rhino.inside/blob/master/LICENSE -// https://github.com/mcneel/rhino.inside/commit/19b4d571ab3b02f5b29f1e0cf9112845e3323697 -// https://github.com/mcneel/rhino.inside/blob/master/DotNet/RhinoInside/Resolver.cs -// -public static class Resolver -{ - /// - /// Set up an assembly resolver to load RhinoCommon and other Rhino - /// assemblies from where Rhino is installed - /// - public static void Initialize() - { - if (System.IntPtr.Size != 8) - { - throw new InvalidOperationException("Only 64 bit applications can use RhinoInside"); - } - - AppDomain.CurrentDomain.AssemblyResolve += ResolveForRhinoAssemblies; - } - - private static string? s_rhinoSystemDirectory; - - /// - /// Directory used by assembly resolver to attempt load core Rhino assemblies. If not manually set, - /// this will be determined by inspecting the registry - /// - public static string? RhinoSystemDirectory - { - get - { - if (string.IsNullOrWhiteSpace(s_rhinoSystemDirectory)) - { - s_rhinoSystemDirectory = FindRhinoSystemDirectory(); - } - - return s_rhinoSystemDirectory; - } - set => s_rhinoSystemDirectory = value; - } - - /// - /// Whether or not to use the newest installation of Rhino on the system. By default the resolver will only use an - /// installation with a matching major version. - /// - public static bool UseLatest { get; set; } - - private static Assembly? ResolveForRhinoAssemblies(object? sender, ResolveEventArgs args) - { - string? assemblyName = new AssemblyName(args.Name).Name; - if (RhinoSystemDirectory is null) - { - return null; - } - - string path = System.IO.Path.Combine(RhinoSystemDirectory, assemblyName + ".dll"); - if (assemblyName != null && assemblyName.StartsWith("Speckle.Connectors.Rhino")) - { - path = Path.Combine( - Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location).NotNull(), - assemblyName + ".rhp" - ); - } - - if (System.IO.File.Exists(path)) - { - return Assembly.LoadFrom(path); - } - - return null; - } - - private static string? FindRhinoSystemDirectory() - { - var major = 8; - string baseName = @"SOFTWARE\McNeel\Rhinoceros"; - using var baseKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(baseName); - if (baseKey == null) - { - return null; - } - string[] children = baseKey.GetSubKeyNames(); - Array.Sort(children); - string versionName = ""; - for (int i = children.Length - 1; i >= 0; i--) - { - // 20 Jan 2020 S. Baer (https://github.com/mcneel/rhino.inside/issues/248) - // A generic double.TryParse is failing when run under certain locales. - if ( - double.TryParse( - children[i], - System.Globalization.NumberStyles.Any, - System.Globalization.CultureInfo.InvariantCulture, - out double d - ) - ) - { - versionName = children[i]; - - if (!UseLatest && (int)Math.Floor(d) != major) - { - continue; - } - - using var installKey = baseKey.OpenSubKey($"{versionName}\\Install"); - if (installKey is null) - { - return null; - } - string? corePath = (string?)installKey.GetValue("CoreDllPath"); - if (System.IO.File.Exists(corePath)) - { - return System.IO.Path.GetDirectoryName(corePath); - } - } - } - - return null; - } -} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/RhinoImportResult.cs b/Importers/Rhino/Speckle.Importers.Rhino/RhinoImportResult.cs deleted file mode 100644 index 7ec42f8c3..000000000 --- a/Importers/Rhino/Speckle.Importers.Rhino/RhinoImportResult.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Speckle.Newtonsoft.Json; - -namespace Speckle.Importers.Rhino; - -public class RhinoImportResult -{ - [JsonProperty("success")] - public bool Success { get; set; } - - [JsonProperty("commitId")] - public string CommitId { get; set; } - - [JsonProperty("errorMessage")] - public string ErrorMessage { get; set; } -} diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs b/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs index 98c827a02..5f282702b 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs +++ b/Importers/Rhino/Speckle.Importers.Rhino/Sender.cs @@ -1,70 +1 @@ -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Rhino; -using Rhino.DocObjects; -using Speckle.Connectors.Common.Operations; -using Speckle.Converters.Common; -using Speckle.Converters.Rhino; -using Speckle.Sdk.Credentials; -using Speckle.Sdk.Logging; -using Version = Speckle.Sdk.Api.GraphQL.Models.Version; - -namespace Speckle.Importers.Rhino; - -public class Sender( - ISdkActivityFactory activityFactory, - IServiceProvider serviceProvider, - IRhinoConversionSettingsFactory rhinoConversionSettingsFactory, - IAccountFactory accountFactory, - Progress progress, - ILogger logger -) -{ - public async Task Send(string projectId, string modelId, Uri serverUrl, string token) - { - // NOTE: introduction of AddVisualizationProperties setting not accounted for, hence hardcoded as true (i.e. "as before") - using var activity = activityFactory.Start(); - using var scope = serviceProvider.CreateScope(); - scope - .ServiceProvider.GetRequiredService>() - .Initialize(rhinoConversionSettingsFactory.Create(RhinoDoc.ActiveDoc, true)); - try - { - List rhinoObjects = RhinoDoc - .ActiveDoc.Objects.GetObjectList(ObjectType.AnyObject) - .Where(obj => obj != null) - .ToList(); - - if (rhinoObjects.Count == 0) - { - return null; - } - - var account = await accountFactory.CreateAccount(serverUrl, token); - var operation = scope.ServiceProvider.GetRequiredService>(); - var buildResults = await operation.Build(rhinoObjects, projectId, progress, CancellationToken.None); - var (results, version) = await operation.Send( - buildResults.RootObject, - projectId, - modelId, - token, - null, - account, - progress, - CancellationToken.None - ); - - logger.LogInformation($"Root: {results.RootId}"); - - return version; - } -#pragma warning disable CA1031 - catch (Exception ex) -#pragma warning restore CA1031 - { - logger.LogError(ex, "Error while sending"); - } - - return null; - } -} + \ No newline at end of file diff --git a/Importers/Rhino/Speckle.Importers.Rhino/Speckle.Importers.Rhino.csproj b/Importers/Rhino/Speckle.Importers.Rhino/Speckle.Importers.Rhino.csproj index 02d4b5f16..6d40326ab 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/Speckle.Importers.Rhino.csproj +++ b/Importers/Rhino/Speckle.Importers.Rhino/Speckle.Importers.Rhino.csproj @@ -1,23 +1,20 @@  - - net48 - x64 - Debug;Release;Local - Exe - + + net8.0-windows + x64 + Debug;Release;Local + - - - - - - + + + + - + diff --git a/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json b/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json index 2248f6cee..81c813358 100644 --- a/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json +++ b/Importers/Rhino/Speckle.Importers.Rhino/packages.lock.json @@ -1,14 +1,23 @@ { "version": 2, "dependencies": { - ".NETFramework,Version=v4.8": { + "net8.0-windows7.0": { + "Grasshopper": { + "type": "Direct", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "qpt9XQWuKLFfzn2cnYf5akfHRwYuffthK5AXsSY1UhjD0eG6bYSTtmAkNVH+Wdg130MZkGqJmPd012Om1kJPBA==", + "dependencies": { + "RhinoCommon": "[8.21.25188.17001]" + } + }, "Microsoft.NETFramework.ReferenceAssemblies": { "type": "Direct", "requested": "[1.0.3, )", "resolved": "1.0.3", "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies.net48": "1.0.3" + "Microsoft.NETFramework.ReferenceAssemblies.net461": "1.0.3" } }, "Microsoft.SourceLink.GitHub": { @@ -27,47 +36,32 @@ "resolved": "1.14.1", "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" }, + "Rhino.Inside": { + "type": "Direct", + "requested": "[8.0.7-beta, )", + "resolved": "8.0.7-beta", + "contentHash": "PNZdWysS2zI9vaxJ8HQig3iZA3Xg1yG1hnq09VPStQpceoj94iJ6xk0Ubddaw5oswkYYUIJRmQ8xr+bLTROs/g==", + "dependencies": { + "Grasshopper": "8.0.23304.9001", + "RhinoCommon": "8.0.23304.9001" + } + }, "RhinoCommon": { "type": "Direct", - "requested": "[8.9.24194.18121, )", - "resolved": "8.9.24194.18121", - "contentHash": "XRMnm38sBFeMT5AAtRTJdSaql/YNtT02AGi8TEVP1VZ4fkm8VJ1q2nNioWN3tW/+H8Tdi4nV+DuhB/5uE41MCg==" + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "Wo6JXheyDBvilyIwDY6xZCQJC4170jzAlTSlMgh8yokUY+vYyCl4KJVXZofIOynNt/xx5wLqb2On5gZZekXR6w==", + "dependencies": { + "System.Drawing.Common": "7.0.0" + } }, "RhinoWindows": { "type": "Direct", - "requested": "[8.9.24194.18121, )", - "resolved": "8.9.24194.18121", - "contentHash": "E+MMgC1ITYiPjcHTd+N2vLlg6pNDnRpNL1yGalfPp1eqHJiXkzsGpM1D8oz865D6ybnJAHOOeEVaKqUzFUSUag==", + "requested": "[8.21.25188.17001, )", + "resolved": "8.21.25188.17001", + "contentHash": "9zqCorcLRBeiW/j1RTwUS4E7bnZetAdA9WDdtd/AQccjOpxdtw76wdN+ciyQ6qslseWkwZ9qSBeh7QaM800Ntw==", "dependencies": { - "RhinoCommon": "[8.9.24194.18121]" - } - }, - "Serilog.Extensions.Logging": { - "type": "Direct", - "requested": "[8.0.0, )", - "resolved": "8.0.0", - "contentHash": "YEAMWu1UnWgf1c1KP85l1SgXGfiVo0Rz6x08pCiPOIBt2Qe18tcZLvdBUuV5o1QHvrs8FAry9wTIhgBRtjIlEg==", - "dependencies": { - "Microsoft.Extensions.Logging": "8.0.0", - "Serilog": "3.1.1" - } - }, - "Serilog.Formatting.Compact": { - "type": "Direct", - "requested": "[3.0.0, )", - "resolved": "3.0.0", - "contentHash": "wQsv14w9cqlfB5FX2MZpNsTawckN4a8dryuNGbebB/3Nh1pXnROHZov3swtu3Nj5oNG7Ba+xdu7Et/ulAUPanQ==", - "dependencies": { - "Serilog": "4.0.0" - } - }, - "Serilog.Sinks.Console": { - "type": "Direct", - "requested": "[6.0.0, )", - "resolved": "6.0.0", - "contentHash": "fQGWqVMClCP2yEyTXPIinSr5c+CBGUvBybPxjAGcf7ctDhadFhrQw03Mv8rJ07/wR5PDfFjewf2LimvXCDzpbA==", - "dependencies": { - "Serilog": "4.0.0" + "RhinoCommon": "[8.21.25188.17001]" } }, "Speckle.InterfaceGenerator": { @@ -76,15 +70,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "System.CommandLine": { - "type": "Direct", - "requested": "[2.0.0-beta4.22272.1, )", - "resolved": "2.0.0-beta4.22272.1", - "contentHash": "1uqED/q2H0kKoLJ4+hI2iPSBSEdTuhfCYADeJrAqERmiGQ2NNacYKRNEQ+gFbU4glgVyK8rxI+ZOe1onEtr/Pg==", - "dependencies": { - "System.Memory": "4.5.4" - } - }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -92,7 +77,6 @@ "dependencies": { "GraphQL.Client.Abstractions": "6.0.0", "GraphQL.Client.Abstractions.Websocket": "6.0.0", - "System.Net.WebSockets.Client.Managed": "1.0.22", "System.Reactive": "5.0.0" } }, @@ -117,29 +101,11 @@ "resolved": "6.0.0", "contentHash": "yg72rrYDapfsIUrul7aF6wwNnTJBOFvuA9VdDTQpPa8AlAriHbufeXYLBcodKjfUdkCnaiggX1U/nEP08Zb5GA==" }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "Microsoft.Bcl.HashCode": { - "type": "Transitive", - "resolved": "1.1.1", - "contentHash": "MalY0Y/uM/LjXtHfX/26l2VtN4LDNZ2OE3aumNOHDLsT4fNYy2hiHXI4CXCqKpNUNm7iJ2brrc4J89UdaL56FA==" - }, "Microsoft.Build.Tasks.Git": { "type": "Transitive", "resolved": "8.0.0", "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" }, - "Microsoft.CSharp": { - "type": "Transitive", - "resolved": "4.7.0", - "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" - }, "Microsoft.Data.Sqlite": { "type": "Transitive", "resolved": "7.0.5", @@ -157,44 +123,69 @@ "SQLitePCLRaw.core": "2.1.4" } }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "nOP8R1mVb/6mZtm2qgAJXn/LFm/2kMjHDAg/QJLFG6CuWYJtaD3p1BwQhufBVvRzL9ceJ/xF0SQ0qsI2GkDQAA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "2.2.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "65MrmXCziWaQFrI0UHkQbesrX5wTwf9XPjY5yFm/VkgJKFJ5gqvXRoXjIZcf2wLi5ZlwGz/oMYfyURVCWbM5iw==", + "dependencies": { + "Microsoft.Extensions.Primitives": "2.2.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "2.2.0", + "contentHash": "vJ9xvOZCnUAIHcGC3SU35r3HKmHTVIeHzo6u/qzlHAqD8m6xv92MLin4oJntTvkpKxVX3vI1GFFkIQtU3AdlsQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "2.2.0" + } + }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "cjWrLkJXK0rs4zofsK4bSdg+jhDLTaxrkXu4gS6Y7MAlCvRyNNgwY/lJi5RDlQOnSZweHqoyvgvbdvQsRIW+hg==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "8.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } + "resolved": "2.2.0", + "contentHash": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw==" }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "JOVOfqpnqlVLUzINQ2fox8evY2SKLYJ3BV8QDe/Jyp21u1T7r45x/R/5QdteURMR5r01GxeJSBBUOCOyaNXA3g==", + "resolved": "2.2.0", + "contentHash": "UpZLNLBpIZ0GTebShui7xXYh6DmBHjWM8NxGxZbdQh/bPZ5e6YswqI+bru6BnEL5eWiOdodsXtEz3FROcgi/qg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0", - "System.ValueTuple": "4.5.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Primitives": "2.2.0", + "System.ComponentModel.Annotations": "4.5.0" } }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "resolved": "2.2.0", + "contentHash": "azyQtqbm4fSaDzZHD/J+V6oWMFaf2tWP4WEGIYePLCMw3+b2RQdj9ybgbQyjCshcitQKQ4lEDOZjmSlTTrHxUg==", "dependencies": { - "System.Memory": "4.5.5", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" + "System.Memory": "4.5.1", + "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, - "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "Microsoft.NETFramework.ReferenceAssemblies.net461": { "type": "Transitive", "resolved": "1.0.3", - "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" }, + "Microsoft.Win32.SystemEvents": { + "type": "Transitive", + "resolved": "7.0.0", + "contentHash": "2nXPrhdAyAzir0gLl8Yy8S5Mnm/uBSQQA7jEsILOS1MTyS7DbmV1NgViMtvV1sfCD1ebITpNwb1NIinKeJgUVQ==" + }, "Speckle.Newtonsoft.Json": { "type": "Transitive", "resolved": "13.0.2", @@ -206,7 +197,7 @@ "contentHash": "EWI1olKDjFEBMJu0+3wuxwziIAdWDVMYLhuZ3Qs84rrz+DHwD00RzWPZCa+bLnHCf3oJwuFZIRsHT5p236QXww==", "dependencies": { "SQLitePCLRaw.lib.e_sqlite3": "2.1.4", - "SQLitePCLRaw.provider.dynamic_cdecl": "2.1.4" + "SQLitePCLRaw.provider.e_sqlite3": "2.1.4" } }, "SQLitePCLRaw.core": { @@ -222,113 +213,41 @@ "resolved": "2.1.4", "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" }, - "SQLitePCLRaw.provider.dynamic_cdecl": { + "SQLitePCLRaw.provider.e_sqlite3": { "type": "Transitive", "resolved": "2.1.4", - "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "contentHash": "CSlb5dUp1FMIkez9Iv5EXzpeq7rHryVNqwJMWnpq87j9zWZexaEMdisDktMsnnrzKM6ahNrsTkjqNodTBPBxtQ==", "dependencies": { "SQLitePCLRaw.core": "2.1.4" } }, - "System.Buffers": { + "System.ComponentModel.Annotations": { "type": "Transitive", - "resolved": "4.5.1", - "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + "resolved": "4.5.0", + "contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==" }, - "System.Collections.Immutable": { + "System.Drawing.Common": { "type": "Transitive", - "resolved": "9.0.4", - "contentHash": "wfm2NgK22MmBe5qJjp52qzpkeDZKb4l9LbdubhZSehY1z4LS+lld6R+B+UQNb2AZRHu/QJlHxEUcRst5hIEejg==", + "resolved": "7.0.0", + "contentHash": "KIX+oBU38pxkKPxvLcLfIkOV5Ien8ReN78wro7OF5/erwcmortzeFx+iBswlh2Vz6gVne0khocQudGwaO1Ey6A==", "dependencies": { - "System.Memory": "4.5.5", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Diagnostics.DiagnosticSource": { - "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "vaoWjvkG1aenR2XdjaVivlCV9fADfgyhW5bZtXT23qaEea0lWiUljdQuze4E31vKM7ZWJaSUsbYIKE3rnzfZUg==", - "dependencies": { - "System.Memory": "4.5.5", - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Formats.Nrbf": { - "type": "Transitive", - "resolved": "9.0.4", - "contentHash": "HuDjUInoaQvnX+3bRg2lX+KLD2raiDJA0v3c4hmukAHSQT8rpa6+2NKRoz+1W8Jmbu5ocvc+xPPKgHMVjeJpOg==", - "dependencies": { - "Microsoft.Bcl.HashCode": "1.1.1", - "System.Reflection.Metadata": "9.0.4", - "System.ValueTuple": "4.5.0" + "Microsoft.Win32.SystemEvents": "7.0.0" } }, "System.Memory": { "type": "Transitive", - "resolved": "4.5.5", - "contentHash": "XIWiDvKPXaTveaB7HVganDlOCRoj03l+jrwNvcge/t8vhGYKvqV+dMv6G4SAX2NoNmN0wZfVPTAlFwZcZvVOUw==", - "dependencies": { - "System.Buffers": "4.5.1", - "System.Numerics.Vectors": "4.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.3" - } - }, - "System.Net.WebSockets.Client.Managed": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "WqEOxPlXjuZrIjUtXNE9NxEfU/n5E35iV2PtoZdJSUC4tlrqwHnTee+wvMIM4OUaJWmwrymeqcgYrE0IkGAgLA==", - "dependencies": { - "System.Buffers": "4.4.0", - "System.Numerics.Vectors": "4.4.0" - } - }, - "System.Numerics.Vectors": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "QQTlPTl06J/iiDbJCiepZ4H//BVraReU4O4EoRw1U02H5TLUIT7xn3GnDp9AXPSlJUDyFs4uWjWafNX6WrAojQ==" + "resolved": "4.5.3", + "contentHash": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==" }, "System.Reactive": { "type": "Transitive", "resolved": "5.0.0", - "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "9.0.4", - "contentHash": "qeJNsMmZPc/Lieg0Md+D4F6LoLcxV3b9QsUNmBRXc2ZVOkMbAcwuO9l2jbQFv3n+fLiHJilN8v6i5aJNivjrCQ==", - "dependencies": { - "System.Collections.Immutable": "9.0.4", - "System.Memory": "4.5.5" - } + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==" }, "System.Runtime.CompilerServices.Unsafe": { "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, - "System.Threading.Channels": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==", - "dependencies": { - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "4.5.3" - } - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==" + "resolved": "4.5.1", + "contentHash": "Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw==" }, "speckle.connectors.common": { "type": "Project", @@ -354,23 +273,15 @@ "Speckle.Connectors.DUI": "[1.0.0, )" } }, - "speckle.connectors.grasshopper8": { - "type": "Project", - "dependencies": { - "GrasshopperAsyncComponent": "[2.0.3, )", - "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Converters.Rhino8": "[1.0.0, )", - "System.Resources.Extensions": "[9.0.4, )" - } - }, "speckle.connectors.logging": { "type": "Project" }, - "speckle.connectors.rhino8": { + "speckle.connectors.rhinoimporter": { "type": "Project", "dependencies": { + "Speckle.Connectors.Common": "[1.0.0, )", "Speckle.Connectors.DUI.WebView": "[1.0.0, )", - "Speckle.Connectors.Grasshopper8": "[1.0.0, )" + "Speckle.Converters.Rhino8": "[1.0.0, )" } }, "speckle.converters.common": { @@ -383,54 +294,35 @@ "speckle.converters.rhino8": { "type": "Project", "dependencies": { - "RhinoCommon": "[8.9.24194.18121, )", "Speckle.Converters.Common": "[1.0.0, )" } }, - "GrasshopperAsyncComponent": { - "type": "CentralTransitive", - "requested": "[2.0.3, )", - "resolved": "2.0.3", - "contentHash": "AZvHP96WhYZWftVi7J3J65LiZmXO3hGS6W4AntMMb099gkrLqeiBKC2DOYD6YM9cOyQqly3S5knbUL2yr0jc4Q==", - "dependencies": { - "PolySharp": "1.14.1" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", - "resolved": "8.0.0", - "contentHash": "V8S3bsm50ig6JSyrbcJJ8bW2b9QLGouz+G1miK3UTaOWmMtFwNNNzUf4AleyDWUmTrWMLNnFSLEQtxmxgNQnNQ==", + "resolved": "2.2.0", + "contentHash": "MZtBIwfDFork5vfjpJdG5g8wuJFt7d/y3LOSVVtDK/76wlbtz6cjltfKHqLx2TKVqTj5/c41t77m1+h20zqtPA==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "8.0.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0" } }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", - "resolved": "8.0.0", - "contentHash": "tvRkov9tAJ3xP51LCv3FJ2zINmv1P8Hi8lhhtcKGqM+ImiTCC84uOPEI4z8Cdq2C3o9e+Aa0Gw0rmrsJD77W+w==", + "resolved": "2.2.0", + "contentHash": "Nxqhadc9FCmFHzU+fz3oc8sFlE6IadViYg8dfUdGzJZ2JUxnCsRghBhhOWdM4B2zSZqEc+0BjliBh/oNdRZuig==", "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "8.0.0", - "Microsoft.Extensions.DependencyInjection": "8.0.0", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.Extensions.Options": "8.0.0", - "System.Diagnostics.DiagnosticSource": "8.0.0", - "System.ValueTuple": "4.5.0" + "Microsoft.Extensions.Configuration.Binder": "2.2.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging.Abstractions": "2.2.0", + "Microsoft.Extensions.Options": "2.2.0" } }, "Microsoft.Extensions.Logging.Abstractions": { "type": "CentralTransitive", "requested": "[2.2.0, )", - "resolved": "8.0.0", - "contentHash": "arDBqTgFCyS0EvRV7O3MZturChstm50OJ0y9bDJvAcmEPJm0FFpFyjU/JLYyStNGGey081DvnQYlncNX5SJJGA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "System.Buffers": "4.5.1", - "System.Memory": "4.5.5" - } + "resolved": "2.2.0", + "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, "Microsoft.Web.WebView2": { "type": "CentralTransitive", @@ -438,16 +330,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Serilog": { - "type": "CentralTransitive", - "requested": "[4.0.1, )", - "resolved": "4.0.0", - "contentHash": "2jDkUrSh5EofOp7Lx5Zgy0EB+7hXjjxE2ktTb1WVQmU00lDACR2TdROGKU0K1pDTBSJBN1PqgYpgOZF8mL7NJw==", - "dependencies": { - "System.Diagnostics.DiagnosticSource": "8.0.1", - "System.Threading.Channels": "8.0.0" - } - }, "Speckle.DoubleNumerics": { "type": "CentralTransitive", "requested": "[4.1.0, )", @@ -470,8 +352,6 @@ "contentHash": "J//TnVqZ+RzvMoRu0x3HjVb+7rnYTRMCLQ0bN05fagl0UwyHYrc+Lwn19eyTPMnRoAQIFPXIdZjb2Yk7fyd0FA==", "dependencies": { "GraphQL.Client": "6.0.0", - "Microsoft.Bcl.AsyncInterfaces": "5.0.0", - "Microsoft.CSharp": "4.7.0", "Microsoft.Data.Sqlite": "7.0.5", "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", "Microsoft.Extensions.Logging": "2.2.0", @@ -485,29 +365,6 @@ "requested": "[3.5.1, )", "resolved": "3.5.1", "contentHash": "jNFvbO0CVzBKSGAPtN2J20aixChyqVetLSU/4TwjVERY8UJdbhbvoxYIalaBZoTSIXdQoHshNC7Ul1o6+vTCcA==" - }, - "System.Resources.Extensions": { - "type": "CentralTransitive", - "requested": "[9.0.4, )", - "resolved": "9.0.4", - "contentHash": "X1oj5i1gy6O4TDU8Z48djqbDJJz4qkT+LgvD0Z2pbCsXieJNms9H5yBbvahXdEJad07Ntai5bST4J5XWoNmMsg==", - "dependencies": { - "System.Formats.Nrbf": "9.0.4", - "System.Memory": "4.5.5" - } - } - }, - ".NETFramework,Version=v4.8/win7-x64": { - "SQLitePCLRaw.lib.e_sqlite3": { - "type": "Transitive", - "resolved": "2.1.4", - "contentHash": "2C9Q9eX7CPLveJA0rIhf9RXAvu+7nWZu1A2MdG6SD/NOu26TakGgL1nsbc0JAspGijFOo3HoN79xrx8a368fBg==" - }, - "Microsoft.Web.WebView2": { - "type": "CentralTransitive", - "requested": "[1.0.1938.49, )", - "resolved": "1.0.1938.49", - "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" } } } diff --git a/Local.sln b/Local.sln index 194548af1..b8d765457 100644 --- a/Local.sln +++ b/Local.sln @@ -230,6 +230,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.Grasshop EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.Rhino8", "Connectors\Rhino\Speckle.Connectors.Rhino8\Speckle.Connectors.Rhino8.csproj", "{5807B4F7-5CCB-E01D-A024-0E8BEFE0D7F0}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.RhinoImporter", "Connectors\Rhino\Speckle.Connectors.RhinoImporter\Speckle.Connectors.RhinoImporter.csproj", "{90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converters.Rhino8", "Converters\Rhino\Speckle.Converters.Rhino8\Speckle.Converters.Rhino8.csproj", "{0D2A2F22-EAB0-802A-7ECE-AB012CE69B8D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Shared", "Shared", "{515D0695-DED8-6A19-72D5-7E987736EE52}" @@ -281,6 +283,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Ifc", "Im EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Rhino", "Rhino", "{8F2BAB74-BA0A-005A-0FF9-9498950E3ADC}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.JobProcessor", "Importers\Rhino\Speckle.Importers.JobProcessor\Speckle.Importers.JobProcessor.csproj", "{391676A9-0E05-9346-FDB9-4F5296F00509}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Rhino", "Importers\Rhino\Speckle.Importers.Rhino\Speckle.Importers.Rhino.csproj", "{A9B240B9-4F3D-DB41-CB33-BD2019BBCCF2}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sdk", "Sdk", "{FF13A09E-0E72-1904-124B-A4E979EF28D3}" @@ -307,11 +311,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Performance", "Sdk\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Testing", "Sdk\Speckle.Testing\Speckle.Testing.csproj", "{02E79865-6261-CDE0-77EA-3DD2E01DACBD}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "..\speckle-sharp-sdk\src\Speckle.Objects\Speckle.Objects", "..\speckle-sharp-sdk\src\Speckle.Objects\Speckle.Objects.csproj", "{FBD58ABD-9704-C232-7CF3-D96EC5CFCBE6}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Objects", "..\speckle-sharp-sdk\src\Speckle.Objects\Speckle.Objects.csproj", "{FBD58ABD-9704-C232-7CF3-D96EC5CFCBE6}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "..\speckle-sharp-sdk\src\Speckle.Sdk\Speckle.Sdk", "..\speckle-sharp-sdk\src\Speckle.Sdk\Speckle.Sdk.csproj", "{0201A282-BEFA-8897-C535-03EBAC94870B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Sdk", "..\speckle-sharp-sdk\src\Speckle.Sdk\Speckle.Sdk.csproj", "{0201A282-BEFA-8897-C535-03EBAC94870B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "..\speckle-sharp-sdk\src\Speckle.Sdk.Dependencies\Speckle.Sdk.Dependencies", "..\speckle-sharp-sdk\src\Speckle.Sdk.Dependencies\Speckle.Sdk.Dependencies.csproj", "{0677CA87-027F-D526-4463-3517F75B76EC}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Sdk.Dependencies", "..\speckle-sharp-sdk\src\Speckle.Sdk.Dependencies\Speckle.Sdk.Dependencies.csproj", "{0677CA87-027F-D526-4463-3517F75B76EC}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -650,6 +654,12 @@ Global {5807B4F7-5CCB-E01D-A024-0E8BEFE0D7F0}.Local|Any CPU.Build.0 = Local|Any CPU {5807B4F7-5CCB-E01D-A024-0E8BEFE0D7F0}.Release|Any CPU.ActiveCfg = Release|Any CPU {5807B4F7-5CCB-E01D-A024-0E8BEFE0D7F0}.Release|Any CPU.Build.0 = Release|Any CPU + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}.Local|Any CPU.ActiveCfg = Local|Any CPU + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}.Local|Any CPU.Build.0 = Local|Any CPU + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073}.Release|Any CPU.Build.0 = Release|Any CPU {0D2A2F22-EAB0-802A-7ECE-AB012CE69B8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0D2A2F22-EAB0-802A-7ECE-AB012CE69B8D}.Debug|Any CPU.Build.0 = Debug|Any CPU {0D2A2F22-EAB0-802A-7ECE-AB012CE69B8D}.Local|Any CPU.ActiveCfg = Local|Any CPU @@ -710,6 +720,12 @@ Global {9F11639F-3AB6-867F-7968-FFF8BFD8C410}.Local|Any CPU.Build.0 = Local|Any CPU {9F11639F-3AB6-867F-7968-FFF8BFD8C410}.Release|Any CPU.ActiveCfg = Release|Any CPU {9F11639F-3AB6-867F-7968-FFF8BFD8C410}.Release|Any CPU.Build.0 = Release|Any CPU + {391676A9-0E05-9346-FDB9-4F5296F00509}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {391676A9-0E05-9346-FDB9-4F5296F00509}.Debug|Any CPU.Build.0 = Debug|Any CPU + {391676A9-0E05-9346-FDB9-4F5296F00509}.Local|Any CPU.ActiveCfg = Local|Any CPU + {391676A9-0E05-9346-FDB9-4F5296F00509}.Local|Any CPU.Build.0 = Local|Any CPU + {391676A9-0E05-9346-FDB9-4F5296F00509}.Release|Any CPU.ActiveCfg = Release|Any CPU + {391676A9-0E05-9346-FDB9-4F5296F00509}.Release|Any CPU.Build.0 = Release|Any CPU {A9B240B9-4F3D-DB41-CB33-BD2019BBCCF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {A9B240B9-4F3D-DB41-CB33-BD2019BBCCF2}.Debug|Any CPU.Build.0 = Debug|Any CPU {A9B240B9-4F3D-DB41-CB33-BD2019BBCCF2}.Local|Any CPU.ActiveCfg = Local|Any CPU @@ -904,6 +920,7 @@ Global {DB77E488-CD1B-681C-687F-AFA935E8E6A8} = {1FE9B3A2-9228-8E78-261C-2221B28F0E7B} {2DF824DD-0A2F-0B15-F225-B054C92BC4EA} = {DB77E488-CD1B-681C-687F-AFA935E8E6A8} {5807B4F7-5CCB-E01D-A024-0E8BEFE0D7F0} = {DB77E488-CD1B-681C-687F-AFA935E8E6A8} + {90EFBF9F-FED4-BD4B-DD87-F3F184C1D073} = {DB77E488-CD1B-681C-687F-AFA935E8E6A8} {0D2A2F22-EAB0-802A-7ECE-AB012CE69B8D} = {DB77E488-CD1B-681C-687F-AFA935E8E6A8} {515D0695-DED8-6A19-72D5-7E987736EE52} = {1FE9B3A2-9228-8E78-261C-2221B28F0E7B} {66FDCF46-2365-F12E-9F40-92E86543B5A2} = {515D0695-DED8-6A19-72D5-7E987736EE52} @@ -927,6 +944,7 @@ Global {9DC47E2F-957F-CECC-82C0-1BAD872F8E13} = {88E31408-0177-4235-0BE8-6C9C8103E392} {9F11639F-3AB6-867F-7968-FFF8BFD8C410} = {88E31408-0177-4235-0BE8-6C9C8103E392} {8F2BAB74-BA0A-005A-0FF9-9498950E3ADC} = {0B7587C3-F447-44C0-7126-E1085C8A32F4} + {391676A9-0E05-9346-FDB9-4F5296F00509} = {8F2BAB74-BA0A-005A-0FF9-9498950E3ADC} {A9B240B9-4F3D-DB41-CB33-BD2019BBCCF2} = {8F2BAB74-BA0A-005A-0FF9-9498950E3ADC} {9AA81E7A-C9BC-C56B-BE8F-55BC1D85EEBF} = {FF13A09E-0E72-1904-124B-A4E979EF28D3} {1BD0E5FD-D4B8-8018-08FE-E7DD4ABA741F} = {FF13A09E-0E72-1904-124B-A4E979EF28D3} diff --git a/Local.slnx b/Local.slnx index b63c77754..a2252b5d5 100644 --- a/Local.slnx +++ b/Local.slnx @@ -151,6 +151,7 @@ + @@ -184,6 +185,9 @@ + + + @@ -199,7 +203,7 @@ - - - + + + \ No newline at end of file diff --git a/Speckle.Autocad.slnx b/Speckle.Autocad.slnx index 83190546d..46cab5257 100644 --- a/Speckle.Autocad.slnx +++ b/Speckle.Autocad.slnx @@ -67,6 +67,9 @@ + + + diff --git a/Speckle.Civil3d.slnx b/Speckle.Civil3d.slnx index 83190546d..46cab5257 100644 --- a/Speckle.Civil3d.slnx +++ b/Speckle.Civil3d.slnx @@ -67,6 +67,9 @@ + + + diff --git a/Speckle.Connectors.sln b/Speckle.Connectors.sln index cd2ddecfe..56d1e3337 100644 --- a/Speckle.Connectors.sln +++ b/Speckle.Connectors.sln @@ -310,6 +310,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Rhino", "Rhino", "{CD0C216A EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.Rhino", "Importers\Rhino\Speckle.Importers.Rhino\Speckle.Importers.Rhino.csproj", "{92F065BE-97E2-4192-B561-88A6A8CFA53F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Importers.JobProcessor", "Importers\Rhino\Speckle.Importers.JobProcessor\Speckle.Importers.JobProcessor.csproj", "{1953F875-B271-484B-B589-3D4AC1288C2B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.RhinoImporter", "Connectors\Rhino\Speckle.Connectors.RhinoImporter\Speckle.Connectors.RhinoImporter.csproj", "{5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -779,6 +783,18 @@ Global {92F065BE-97E2-4192-B561-88A6A8CFA53F}.Local|Any CPU.Build.0 = Local|Any CPU {92F065BE-97E2-4192-B561-88A6A8CFA53F}.Release|Any CPU.ActiveCfg = Release|Any CPU {92F065BE-97E2-4192-B561-88A6A8CFA53F}.Release|Any CPU.Build.0 = Release|Any CPU + {1953F875-B271-484B-B589-3D4AC1288C2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1953F875-B271-484B-B589-3D4AC1288C2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1953F875-B271-484B-B589-3D4AC1288C2B}.Local|Any CPU.ActiveCfg = Debug|Any CPU + {1953F875-B271-484B-B589-3D4AC1288C2B}.Local|Any CPU.Build.0 = Debug|Any CPU + {1953F875-B271-484B-B589-3D4AC1288C2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1953F875-B271-484B-B589-3D4AC1288C2B}.Release|Any CPU.Build.0 = Release|Any CPU + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}.Local|Any CPU.ActiveCfg = Local|Any CPU + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}.Local|Any CPU.Build.0 = Local|Any CPU + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -918,6 +934,8 @@ Global {60445031-CCEE-4421-83C0-BB10BEF7B7F2} = {FC224610-32D3-454E-9BC1-1219FE8ACD5F} {CD0C216A-2A96-4423-956E-3DDFCAEA510C} = {336F0341-5C39-40F7-9377-122FED4E4549} {92F065BE-97E2-4192-B561-88A6A8CFA53F} = {CD0C216A-2A96-4423-956E-3DDFCAEA510C} + {1953F875-B271-484B-B589-3D4AC1288C2B} = {CD0C216A-2A96-4423-956E-3DDFCAEA510C} + {5422F2C8-1E00-4DAE-BB01-65A17BE8CD68} = {5929C9C7-F971-449E-BC5B-4486016BD11F} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8} diff --git a/Speckle.Connectors.slnx b/Speckle.Connectors.slnx index 8fb52b854..5372f2120 100644 --- a/Speckle.Connectors.slnx +++ b/Speckle.Connectors.slnx @@ -151,6 +151,7 @@ + @@ -184,6 +185,9 @@ + + + diff --git a/Speckle.Etabs.slnx b/Speckle.Etabs.slnx index fca70cba5..3aa933461 100644 --- a/Speckle.Etabs.slnx +++ b/Speckle.Etabs.slnx @@ -43,6 +43,9 @@ + + + diff --git a/Speckle.Navisworks.slnx b/Speckle.Navisworks.slnx index 99a832308..784ef2c93 100644 --- a/Speckle.Navisworks.slnx +++ b/Speckle.Navisworks.slnx @@ -63,6 +63,9 @@ + + + diff --git a/Speckle.Revit.Local.slnx b/Speckle.Revit.Local.slnx index b4755f4e1..055eadf0b 100644 --- a/Speckle.Revit.Local.slnx +++ b/Speckle.Revit.Local.slnx @@ -58,6 +58,9 @@ + + + @@ -73,7 +76,7 @@ - - - + + + \ No newline at end of file diff --git a/Speckle.Revit.slnx b/Speckle.Revit.slnx index 4c2ab58f6..528b29cb9 100644 --- a/Speckle.Revit.slnx +++ b/Speckle.Revit.slnx @@ -58,6 +58,9 @@ + + + diff --git a/Speckle.Rhino-importer.slnx b/Speckle.Rhino-importer.slnx new file mode 100644 index 000000000..5adab161d --- /dev/null +++ b/Speckle.Rhino-importer.slnx @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Speckle.Rhino.slnx b/Speckle.Rhino.slnx index 12ab34290..006d9755b 100644 --- a/Speckle.Rhino.slnx +++ b/Speckle.Rhino.slnx @@ -32,6 +32,7 @@ + @@ -46,6 +47,9 @@ + + + diff --git a/Speckle.Teklastructures.slnx b/Speckle.Teklastructures.slnx index 962516712..58b2094c4 100644 --- a/Speckle.Teklastructures.slnx +++ b/Speckle.Teklastructures.slnx @@ -47,6 +47,9 @@ + + +