From 6defdbe3531f5228e922ae2ba089d6bbe6a86914 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 24 Sep 2024 22:38:34 +0100 Subject: [PATCH 01/62] wip: better rhino > revit brep support --- .../Raw/BaseToHostGeometryObjectConverter.cs | 38 ++++++++++++++++++- .../ToSpeckle/Raw/BrepToSpeckleConverter.cs | 30 ++++++++++++++- 2 files changed, 66 insertions(+), 2 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs index ac4685557..9f3fac0d8 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs @@ -1,5 +1,7 @@ using System.Collections; +using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared.Settings; using Speckle.Objects; using Speckle.Sdk.Models; using Speckle.Sdk.Models.Extensions; @@ -11,16 +13,19 @@ public class BaseToHostGeometryObjectConverter : ITypedConverter _pointConverter; private readonly ITypedConverter _curveConverter; private readonly ITypedConverter> _meshConverter; + private readonly IConverterSettingsStore _settings; public BaseToHostGeometryObjectConverter( ITypedConverter pointConverter, ITypedConverter curveConverter, - ITypedConverter> meshConverter + ITypedConverter> meshConverter, + IConverterSettingsStore settings ) { _pointConverter = pointConverter; _curveConverter = curveConverter; _meshConverter = meshConverter; + _settings = settings; } public List Convert(Base target) @@ -41,6 +46,14 @@ public BaseToHostGeometryObjectConverter( var meshes = _meshConverter.Convert(mesh).Cast(); result.AddRange(meshes); break; + case SOG.Brep burp: + // should be try caught and default back to mesh + var boss = TryImportBrepShape(burp); + if (boss != null) + { + result.AddRange(boss); + } + break; default: var displayValue = target.TryGetDisplayValue(); if ((displayValue is IList && !displayValue.Any()) || displayValue is null) @@ -58,4 +71,27 @@ public BaseToHostGeometryObjectConverter( return result; } + + public IEnumerable TryImportBrepShape(SOG.Brep burp) + { + var burpRhinoContents = burp["fileBlob"] as string; // note: temp, this is for now 3dm specific (?) + var fileBytes = System.Convert.FromBase64String(burpRhinoContents!); + var filePath = Path.Combine(Path.GetTempPath(), "Speckle", "Revit Import", $"{Guid.NewGuid():N}.3dm"); + Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), "Speckle", "Revit Import")); + File.WriteAllBytes(filePath, fileBytes); + + using var importer = new DB.ShapeImporter(); + var list = importer.Convert(_settings.Current.Document, filePath).OfType(); + + return list; + // Note: we might want to export in the future single breps from rhino as multiple ones to bypass limitations of the geometry kernel here; tbd - but we should not necessarily assume a single shape + // if (list.OfType().FirstOrDefault() is DB.GeometryObject shape) + // { + // // note: scaling is a todo + // // DB.SolidUtils.CreateTransformed(shape, DB.Transform.Identity); + // // _settings.Document.Paint(); // note: we can pain faces post creation with whatever material we want, to make 'em look as needed + // return shape; + // } + // return null; + } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs index d373e10bb..324f0d52b 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs @@ -1,4 +1,6 @@ -using Speckle.Converters.Common; +using Rhino; +using Rhino.FileIO; +using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Objects; using Speckle.Sdk; @@ -65,6 +67,7 @@ public SOG.Brep Convert(RG.Brep target) // displayValue["renderMaterial"] = mat; // } + // Vertices, uv curves, 3d curves and surfaces List vertices = new(target.Vertices.Count); vertices.AddRange(target.Vertices.Select(v => _pointConverter.Convert(v.Location))); @@ -101,6 +104,31 @@ public SOG.Brep Convert(RG.Brep target) Faces = new(target.Faces.Count) }; + var options = new SerializationOptions() { WriteUserData = false }; + var shallowBrep = target.DuplicateShallow(); + // var openNurbs = shallowBrep.ToJSON(options); + + var filePath = Path.Combine(Path.GetTempPath(), "Speckle", $"{Guid.NewGuid():N}.3dm"); + var filePath2 = Path.Combine(Path.GetTempPath(), "Speckle", $"{Guid.NewGuid():N}-doc.3dm"); + Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), "Speckle")); + + using (var doc = RhinoDoc.CreateHeadless(default)) + { + doc.ModelUnitSystem = _settingsStore.Current.Document.ModelUnitSystem; + doc.ModelAbsoluteTolerance = _settingsStore.Current.Document.ModelAbsoluteTolerance; + doc.ModelAngleToleranceRadians = _settingsStore.Current.Document.ModelAngleToleranceRadians; + + doc.Objects.Add(target); + doc.Write3dmFile(filePath2, new FileWriteOptions() { IncludeRenderMeshes = false }); + } + + var fileBytes = System.Convert.ToBase64String(File.ReadAllBytes(filePath2)); + speckleBrep["fileBlob"] = fileBytes; + // File.Delete(filePath2); + + // var blob = new Blob() { originalPath = filePath2, applicationId = Guid.NewGuid().ToString() }; + + // speckleBrep["blob"] = blob; // Brep non-geometry types ConvertBrepFaces(target, speckleBrep); ConvertBrepEdges(target, speckleBrep); From 2bf6c834c1ad5adc164540a428e8ca17865a077b Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 25 Sep 2024 11:46:24 +0100 Subject: [PATCH 02/62] adds units to object params --- .../Parameters/ParameterDefinitionHandler.cs | 11 ++++++++--- .../ToSpeckle/Parameters/ParameterExtractor.cs | 10 +++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterDefinitionHandler.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterDefinitionHandler.cs index f556656d4..19eacbace 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterDefinitionHandler.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterDefinitionHandler.cs @@ -16,7 +16,7 @@ public class ParameterDefinitionHandler /// /// /// - public (string internalDefinitionName, string humanReadableName, string groupName) HandleDefinition( + public (string internalDefinitionName, string humanReadableName, string groupName, string? units) HandleDefinition( DB.Parameter parameter ) { @@ -42,7 +42,12 @@ definition is DB.InternalDefinition internalDefinition #pragma warning restore CA1854 { var def = Definitions[internalDefinitionName]; - return (internalDefinitionName, humanReadableName, def["group"]! as string ?? "unknown group"); + return ( + internalDefinitionName, + humanReadableName, + def["group"]! as string ?? "unknown group", + def["units"]! as string + ); } string? units = null; @@ -63,6 +68,6 @@ definition is DB.InternalDefinition internalDefinition ["group"] = group }; - return (internalDefinitionName, humanReadableName, group); + return (internalDefinitionName, humanReadableName, group, units); } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index c554eaf75..3a007bb78 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -97,9 +97,8 @@ ILogger logger continue; } - var (internalDefinitionName, humanReadableName, groupName) = _parameterDefinitionHandler.HandleDefinition( - parameter - ); + var (internalDefinitionName, humanReadableName, groupName, units) = + _parameterDefinitionHandler.HandleDefinition(parameter); var param = new Dictionary() { @@ -108,6 +107,11 @@ ILogger logger ["internalDefinitionName"] = internalDefinitionName }; + if (units is string paramUnits) + { + param["units"] = units; + } + if (!dict.TryGetValue(groupName, out Dictionary? paramGroup)) { paramGroup = new Dictionary(); From fa31283d9405c618eb774aaa9f6b50dc9f659214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20Koral?= <45078678+oguzhankoral@users.noreply.github.com> Date: Wed, 25 Sep 2024 17:27:15 +0300 Subject: [PATCH 03/62] Chore(revit): Refactor material cache to ToHost ToSpeckle singletons (#262) * A bit better * Post conflict errors * Remove old notes --- .../Receive/RevitHostObjectBuilder.cs | 10 +-- .../Operations/Send/RevitRootObjectBuilder.cs | 8 +- .../RevitConverterModule.cs | 3 +- .../Helpers/RevitToHostCacheSingleton.cs | 12 +++ ...ton.cs => RevitToSpeckleCacheSingleton.cs} | 31 +++---- .../ServiceRegistration.cs | 3 +- .../Speckle.Converters.RevitShared.projitems | 6 +- .../Raw/Geometry/MeshConverterToHost.cs | 11 +-- .../MeshByMaterialDictionaryToSpeckle.cs | 17 ++-- ...erialAsRevitMaterialConversionToSpeckle.cs | 55 ++++++++++++ ...ialAsSpeckleMaterialConversionToSpeckle.cs | 50 +++++++++++ .../Raw/MaterialConversionToSpeckle.cs | 86 ------------------- .../Raw/MaterialQuantitiesToSpeckle.cs | 10 +-- 13 files changed, 165 insertions(+), 137 deletions(-) create mode 100644 Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToHostCacheSingleton.cs rename Converters/Revit/Speckle.Converters.RevitShared/Helpers/{RevitMaterialCacheSingleton.cs => RevitToSpeckleCacheSingleton.cs} (54%) create mode 100644 Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsRevitMaterialConversionToSpeckle.cs create mode 100644 Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsSpeckleMaterialConversionToSpeckle.cs delete mode 100644 Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialConversionToSpeckle.cs diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index dafc18681..b270b084e 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -19,7 +19,7 @@ internal sealed class RevitHostObjectBuilder : IHostObjectBuilder, IDisposable { private readonly IRootToHostConverter _converter; private readonly IConverterSettingsStore _converterSettings; - private readonly RevitMaterialCacheSingleton _revitMaterialCacheSingleton; + private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; private readonly ITransactionManager _transactionManager; private readonly ILocalToGlobalUnpacker _localToGlobalUnpacker; private readonly LocalToGlobalConverterUtils _localToGlobalConverterUtils; @@ -41,7 +41,7 @@ public RevitHostObjectBuilder( RevitMaterialBaker materialBaker, RootObjectUnpacker rootObjectUnpacker, ILogger logger, - RevitMaterialCacheSingleton revitMaterialCacheSingleton + RevitToHostCacheSingleton revitToHostCacheSingleton ) { _converter = converter; @@ -53,7 +53,7 @@ RevitMaterialCacheSingleton revitMaterialCacheSingleton _materialBaker = materialBaker; _rootObjectUnpacker = rootObjectUnpacker; _logger = logger; - _revitMaterialCacheSingleton = revitMaterialCacheSingleton; + _revitToHostCacheSingleton = revitToHostCacheSingleton; _activityFactory = activityFactory; } @@ -118,7 +118,7 @@ CancellationToken cancellationToken var map = _materialBaker.BakeMaterials(unpackedRoot.RenderMaterialProxies, baseGroupName); foreach (var kvp in map) { - _revitMaterialCacheSingleton.ObjectIdAndMaterialIndexMap.Add(kvp.Key, kvp.Value); + _revitToHostCacheSingleton.MaterialsByObjectId.Add(kvp.Key, kvp.Value); } } @@ -149,7 +149,7 @@ CancellationToken cancellationToken createGroupTransaction.Assimilate(); } - _revitMaterialCacheSingleton.ObjectIdAndMaterialIndexMap.Clear(); // Massive hack! + _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); // Massive hack! return conversionResults; } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs index b832de98f..36001723b 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs @@ -27,7 +27,7 @@ public class RevitRootObjectBuilder : IRootObjectBuilder private readonly ISendConversionCache _sendConversionCache; private readonly ElementUnpacker _elementUnpacker; private readonly SendCollectionManager _sendCollectionManager; - private readonly RevitMaterialCacheSingleton _revitMaterialCacheSingleton; + private readonly RevitToSpeckleCacheSingleton _revitToSpeckleCacheSingleton; private readonly ILogger _logger; private readonly ParameterDefinitionHandler _parameterDefinitionHandler; @@ -39,7 +39,7 @@ public RevitRootObjectBuilder( SendCollectionManager sendCollectionManager, ILogger logger, ParameterDefinitionHandler parameterDefinitionHandler, - RevitMaterialCacheSingleton revitMaterialCacheSingleton + RevitToSpeckleCacheSingleton revitToSpeckleCacheSingleton ) { _converter = converter; @@ -47,7 +47,7 @@ RevitMaterialCacheSingleton revitMaterialCacheSingleton _sendConversionCache = sendConversionCache; _elementUnpacker = elementUnpacker; _sendCollectionManager = sendCollectionManager; - _revitMaterialCacheSingleton = revitMaterialCacheSingleton; + _revitToSpeckleCacheSingleton = revitToSpeckleCacheSingleton; _logger = logger; _parameterDefinitionHandler = parameterDefinitionHandler; @@ -135,7 +135,7 @@ public async Task Build( } var idsAndSubElementIds = _elementUnpacker.GetElementsAndSubelementIdsFromAtomicObjects(atomicObjects); - var materialProxies = _revitMaterialCacheSingleton.GetRenderMaterialProxyListForObjects(idsAndSubElementIds); + var materialProxies = _revitToSpeckleCacheSingleton.GetRenderMaterialProxyListForObjects(idsAndSubElementIds); _rootObject[ProxyKeys.RENDER_MATERIAL] = materialProxies; // NOTE: these are currently not used anywhere, so we could even skip them (?). _rootObject[ProxyKeys.PARAMETER_DEFINITIONS] = _parameterDefinitionHandler.Definitions; diff --git a/Converters/Revit/Speckle.Converters.RevitShared.DependencyInjection/RevitConverterModule.cs b/Converters/Revit/Speckle.Converters.RevitShared.DependencyInjection/RevitConverterModule.cs index d2daf71af..1d0a98d23 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared.DependencyInjection/RevitConverterModule.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared.DependencyInjection/RevitConverterModule.cs @@ -24,7 +24,8 @@ public void Load(SpeckleContainerBuilder builder) builder.AddScoped(); builder.AddSingleton(new RevitContext()); - builder.AddSingleton(new RevitMaterialCacheSingleton()); + builder.AddSingleton(new RevitToHostCacheSingleton()); + builder.AddSingleton(new RevitToSpeckleCacheSingleton()); // POC: do we need ToSpeckleScalingService as is, do we need to interface it out? builder.AddScoped(); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToHostCacheSingleton.cs b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToHostCacheSingleton.cs new file mode 100644 index 000000000..ae32f20e9 --- /dev/null +++ b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToHostCacheSingleton.cs @@ -0,0 +1,12 @@ +namespace Speckle.Converters.RevitShared.Helpers; + +public class RevitToHostCacheSingleton +{ + /// + /// POC: Not sure is there a way to create it on "RevitHostObjectBuilder" with a scope instead singleton. For now we fill this dictionary and clear it on "RevitHostObjectBuilder". + /// Map extracted by revit material baker to be able to use it in converter. + /// This is needed because we cannot set materials for meshes in connector. + /// They needed to be set while creating "TessellatedFace". + /// + public Dictionary MaterialsByObjectId { get; } = new(); +} diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitMaterialCacheSingleton.cs b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToSpeckleCacheSingleton.cs similarity index 54% rename from Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitMaterialCacheSingleton.cs rename to Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToSpeckleCacheSingleton.cs index 2a441f241..9cd5ce502 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitMaterialCacheSingleton.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/Helpers/RevitToSpeckleCacheSingleton.cs @@ -1,37 +1,34 @@ -using Speckle.Objects.Other; +using Speckle.Objects.Other; using Speckle.Objects.Other.Revit; namespace Speckle.Converters.RevitShared.Helpers; /// -/// Persistent cache (across conversions) for all generated render material proxies. This cache stores a list of render material proxies per element id, and provides a method to get out the merged render material proxy list from a set of object ids for setting on the root commit object post conversion phase. /// -/// Why is this needed? Because two reasons: send caching bypasses converter and revit conversions typically generate multiple display values per element. Ask dim for more and he might start crying. +/// Lifetime of this singleton should be per document. +/// +/// +/// Why is this needed? Because two reasons: send caching bypasses converter and revit conversions typically generate multiple display values per element. +/// Ask dim for more and he might start crying. /// -/// TODO: this dude needs to be split into single responsability (render materials and material quantities), and removed from the context - as it's not needed for it to be there. It can be DI'ed as appropriate (see ParameterDefinitionHandler) /// -public class RevitMaterialCacheSingleton +public class RevitToSpeckleCacheSingleton { /// - /// map(object id, ( map (materialId, proxy) ) ) - /// a per object map of material proxies. not the best way??? + /// (DB.Material id, RevitMaterial). This can be generated from converting render materials or material quantities. /// - public Dictionary> ObjectRenderMaterialProxiesMap { get; } = new(); + public Dictionary RevitMaterialCache { get; } = new(); /// - /// POC: The map we mutate PER RECEIVE operation, this smells a LOT! Once we have better conversion context stack that we can manage our data between connector - converter, this property must go away! + /// (DB.Material id, RenderMaterial). This can be generated from converting render materials or material quantities. /// - public Dictionary ObjectIdAndMaterialIndexMap { get; } = new(); + public Dictionary SpeckleRenderMaterialCache { get; } = new(); /// - /// map (DB.Material id, RevitMaterial). This can be generated from converting render materials or material quantities. - /// - public Dictionary ConvertedRevitMaterialMap { get; } = new(); - - /// - /// map (DB.Material id, RenderMaterial). This can be generated from converting render materials or material quantities. + /// map(object id, ( map (materialId, proxy) ) ) + /// a per object map of material proxies. not the best way??? /// - public Dictionary ConvertedRenderMaterialMap { get; } = new(); + public Dictionary> ObjectRenderMaterialProxiesMap { get; } = new(); /// /// Returns the merged material proxy list for the given object ids. Use this to get post conversion a correct list of material proxies for setting on the root commit object. diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs b/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs index 787d41326..ed644f76c 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ServiceRegistration.cs @@ -26,7 +26,8 @@ public static IServiceCollection AddRevitConverters(this IServiceCollection serv serviceCollection.AddScoped(); serviceCollection.AddSingleton(new RevitContext()); - serviceCollection.AddSingleton(new RevitMaterialCacheSingleton()); + serviceCollection.AddSingleton(new RevitToHostCacheSingleton()); + serviceCollection.AddSingleton(new RevitToSpeckleCacheSingleton()); // POC: do we need ToSpeckleScalingService as is, do we need to interface it out? serviceCollection.AddScoped(); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems b/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems index c33cdb8a9..c7214cd00 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems +++ b/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems @@ -12,7 +12,8 @@ - + + @@ -69,7 +70,8 @@ - + + diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs index a5652fb60..2cc0974d4 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs @@ -9,15 +9,15 @@ namespace Speckle.Converters.RevitShared.ToHost.TopLevel; public class MeshConverterToHost : ITypedConverter> { private readonly ITypedConverter _pointConverter; - private readonly RevitMaterialCacheSingleton _revitMaterialCacheSingleton; + private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; public MeshConverterToHost( ITypedConverter pointConverter, - RevitMaterialCacheSingleton revitMaterialCacheSingleton + RevitToHostCacheSingleton revitToHostCacheSingleton ) { _pointConverter = pointConverter; - _revitMaterialCacheSingleton = revitMaterialCacheSingleton; + _revitToHostCacheSingleton = revitToHostCacheSingleton; } public List Convert(SOG.Mesh mesh) @@ -39,10 +39,7 @@ RevitMaterialCacheSingleton revitMaterialCacheSingleton ElementId materialId = ElementId.InvalidElementId; if ( - _revitMaterialCacheSingleton.ObjectIdAndMaterialIndexMap.TryGetValue( - mesh.applicationId ?? mesh.id, - out var mappedElementId - ) + _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(mesh.applicationId ?? mesh.id, out var mappedElementId) ) { materialId = mappedElementId; diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/Geometry/MeshByMaterialDictionaryToSpeckle.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/Geometry/MeshByMaterialDictionaryToSpeckle.cs index 40c60762d..93c346434 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/Geometry/MeshByMaterialDictionaryToSpeckle.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/Geometry/MeshByMaterialDictionaryToSpeckle.cs @@ -3,7 +3,6 @@ using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Settings; using Speckle.Objects.Other; -using Speckle.Objects.Other.Revit; using Speckle.Sdk.Common; namespace Speckle.Converters.RevitShared.ToSpeckle; @@ -12,21 +11,21 @@ public class MeshByMaterialDictionaryToSpeckle : ITypedConverter<(Dictionary> target, DB.ElementId parentElementId), List> { private readonly IConverterSettingsStore _converterSettings; - private readonly ITypedConverter _materialConverter; + private readonly ITypedConverter _speckleRenderMaterialConverter; private readonly ITypedConverter, SOG.Mesh> _meshListConverter; - private readonly RevitMaterialCacheSingleton _revitMaterialCacheSingleton; + private readonly RevitToSpeckleCacheSingleton _revitToSpeckleCacheSingleton; public MeshByMaterialDictionaryToSpeckle( - ITypedConverter materialConverter, ITypedConverter, SOG.Mesh> meshListConverter, IConverterSettingsStore converterSettings, - RevitMaterialCacheSingleton revitMaterialCacheSingleton + RevitToSpeckleCacheSingleton revitToSpeckleCacheSingleton, + ITypedConverter speckleRenderMaterialConverter ) { - _materialConverter = materialConverter; _meshListConverter = meshListConverter; _converterSettings = converterSettings; - _revitMaterialCacheSingleton = revitMaterialCacheSingleton; + _revitToSpeckleCacheSingleton = revitToSpeckleCacheSingleton; + _speckleRenderMaterialConverter = speckleRenderMaterialConverter; } /// @@ -46,7 +45,7 @@ RevitMaterialCacheSingleton revitMaterialCacheSingleton public List Convert((Dictionary> target, DB.ElementId parentElementId) args) { var result = new List(args.target.Keys.Count); - var objectRenderMaterialProxiesMap = _revitMaterialCacheSingleton.ObjectRenderMaterialProxiesMap; + var objectRenderMaterialProxiesMap = _revitToSpeckleCacheSingleton.ObjectRenderMaterialProxiesMap; var materialProxyMap = new Dictionary(); objectRenderMaterialProxiesMap[args.parentElementId.ToString().NotNull()] = materialProxyMap; @@ -69,7 +68,7 @@ RevitMaterialCacheSingleton revitMaterialCacheSingleton // get the render material if any if (_converterSettings.Current.Document.GetElement(materialId) is DB.Material material) { - (RevitMaterial _, RenderMaterial convertedRenderMaterial) = _materialConverter.Convert(material); + RenderMaterial convertedRenderMaterial = _speckleRenderMaterialConverter.Convert(material); if (!materialProxyMap.TryGetValue(materialIdString, out RenderMaterialProxy? renderMaterialProxy)) { diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsRevitMaterialConversionToSpeckle.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsRevitMaterialConversionToSpeckle.cs new file mode 100644 index 000000000..3d125e652 --- /dev/null +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsRevitMaterialConversionToSpeckle.cs @@ -0,0 +1,55 @@ +using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared.Helpers; +using Speckle.Objects.Other.Revit; + +namespace Speckle.Converters.RevitShared.ToSpeckle; + +public class MaterialAsRevitMaterialConversionToSpeckle : ITypedConverter +{ + private readonly RevitToSpeckleCacheSingleton _revitToSpeckleCacheSingleton; + + public MaterialAsRevitMaterialConversionToSpeckle(RevitToSpeckleCacheSingleton revitToSpeckleCacheSingleton) + { + _revitToSpeckleCacheSingleton = revitToSpeckleCacheSingleton; + } + + public RevitMaterial Convert(DB.Material target) + { + RevitMaterial material; + if ( + _revitToSpeckleCacheSingleton.RevitMaterialCache.TryGetValue(target.UniqueId, out RevitMaterial? cachedMaterial) + ) + { + material = cachedMaterial; + } + else + { + material = ConvertToRevitMaterial(target); + _revitToSpeckleCacheSingleton.RevitMaterialCache.Add(target.UniqueId, material); + } + + return material; + } + + private RevitMaterial ConvertToRevitMaterial(DB.Material target) + { + // POC: we need to validate these properties on the RevitMaterial class, ie are they used? + RevitMaterial material = + new( + target.Name, + target.MaterialCategory, + target.MaterialClass, + target.Shininess, + target.Smoothness, + target.Transparency + ) + { + applicationId = target.UniqueId + }; + + // POC: I'm removing material parameter assigning here as we're exploding a bit the whole space with too many parameters. + // We can bring this back if needed/requested by our end users. + // _parameterObjectAssigner.AssignParametersToBase(target, material); + return material; + } +} diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsSpeckleMaterialConversionToSpeckle.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsSpeckleMaterialConversionToSpeckle.cs new file mode 100644 index 000000000..1a1b8144b --- /dev/null +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialAsSpeckleMaterialConversionToSpeckle.cs @@ -0,0 +1,50 @@ +using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared.Helpers; +using Speckle.Objects.Other; + +namespace Speckle.Converters.RevitShared.ToSpeckle; + +public class MaterialAsSpeckleMaterialConversionToSpeckle : ITypedConverter +{ + private readonly RevitToSpeckleCacheSingleton _revitToSpeckleCacheSingleton; + + public MaterialAsSpeckleMaterialConversionToSpeckle(RevitToSpeckleCacheSingleton revitToSpeckleCacheSingleton) + { + _revitToSpeckleCacheSingleton = revitToSpeckleCacheSingleton; + } + + public RenderMaterial Convert(DB.Material target) + { + RenderMaterial renderMaterial; + if ( + _revitToSpeckleCacheSingleton.SpeckleRenderMaterialCache.TryGetValue( + target.UniqueId, + out RenderMaterial? cachedRenderMaterial + ) + ) + { + renderMaterial = cachedRenderMaterial; + } + else + { + renderMaterial = ConvertToRenderMaterial(target); + _revitToSpeckleCacheSingleton.SpeckleRenderMaterialCache.Add(target.UniqueId, renderMaterial); + } + + return renderMaterial; + } + + private RenderMaterial ConvertToRenderMaterial(DB.Material target) + { + RenderMaterial renderMaterial = + new() + { + name = target.Name, + opacity = 1 - target.Transparency / 100d, + diffuse = System.Drawing.Color.FromArgb(target.Color.Red, target.Color.Green, target.Color.Blue).ToArgb(), + applicationId = target.UniqueId + }; + + return renderMaterial; + } +} diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialConversionToSpeckle.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialConversionToSpeckle.cs deleted file mode 100644 index 247e997b0..000000000 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialConversionToSpeckle.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Speckle.Converters.Common.Objects; -using Speckle.Converters.RevitShared.Helpers; -using Speckle.Objects.Other; -using Speckle.Objects.Other.Revit; - -namespace Speckle.Converters.RevitShared.ToSpeckle; - -public class MaterialConversionToSpeckle : ITypedConverter -{ - private readonly RevitMaterialCacheSingleton _materialCacheSingleton; - - public MaterialConversionToSpeckle(RevitMaterialCacheSingleton materialCacheSingleton) - { - _materialCacheSingleton = materialCacheSingleton; - } - - public (RevitMaterial, RenderMaterial) Convert(DB.Material target) - { - RevitMaterial material; - if ( - _materialCacheSingleton.ConvertedRevitMaterialMap.TryGetValue(target.UniqueId, out RevitMaterial? cachedMaterial) - ) - { - material = cachedMaterial; - } - else - { - material = ConvertToRevitMaterial(target); - _materialCacheSingleton.ConvertedRevitMaterialMap.Add(target.UniqueId, material); - } - - RenderMaterial renderMaterial; - if ( - _materialCacheSingleton.ConvertedRenderMaterialMap.TryGetValue( - target.UniqueId, - out RenderMaterial? cachedRenderMaterial - ) - ) - { - renderMaterial = cachedRenderMaterial; - } - else - { - renderMaterial = ConvertToRenderMaterial(target); - _materialCacheSingleton.ConvertedRenderMaterialMap.Add(target.UniqueId, renderMaterial); - } - - return (material, renderMaterial); - } - - private RevitMaterial ConvertToRevitMaterial(DB.Material target) - { - // POC: we need to validate these properties on the RevitMaterial class, ie are they used? - RevitMaterial material = - new( - target.Name, - target.MaterialCategory, - target.MaterialClass, - target.Shininess, - target.Smoothness, - target.Transparency - ) - { - applicationId = target.UniqueId - }; - - // POC: I'm removing material parameter assigning here as we're exploding a bit the whole space with too many parameters. - // We can bring this back if needed/requested by our end users. - // _parameterObjectAssigner.AssignParametersToBase(target, material); - return material; - } - - private RenderMaterial ConvertToRenderMaterial(DB.Material target) - { - RenderMaterial renderMaterial = - new() - { - name = target.Name, - opacity = 1 - target.Transparency / 100d, - diffuse = System.Drawing.Color.FromArgb(target.Color.Red, target.Color.Green, target.Color.Blue).ToArgb(), - applicationId = target.UniqueId - }; - - return renderMaterial; - } -} diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs index 37c32a36b..0953be5a0 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs @@ -70,19 +70,19 @@ public List> Convert(DB.Element target) [Obsolete("Creates a rather bloated data structure - 2.0 style. More in the comment above.")] public class MaterialQuantitiesToSpeckle : ITypedConverter> { - private readonly ITypedConverter _materialConverter; + private readonly ITypedConverter _revitMaterialConverter; private readonly ScalingServiceToSpeckle _scalingService; private readonly IConverterSettingsStore _converterSettings; public MaterialQuantitiesToSpeckle( - ITypedConverter materialConverter, ScalingServiceToSpeckle scalingService, - IConverterSettingsStore converterSettings + IConverterSettingsStore converterSettings, + ITypedConverter revitMaterialConverter ) { - _materialConverter = materialConverter; _scalingService = scalingService; _converterSettings = converterSettings; + _revitMaterialConverter = revitMaterialConverter; } /// @@ -117,7 +117,7 @@ public List Convert(DB.Element target) if (_converterSettings.Current.Document.GetElement(matId) is DB.Material material) { - (RevitMaterial convertedMaterial, RenderMaterial _) = _materialConverter.Convert(material); + RevitMaterial convertedMaterial = _revitMaterialConverter.Convert(material); // NOTE: the RevitMaterial class is semi useless, and it used to extract parameters out too for each material. Overkill. quantities.Add(new(convertedMaterial, volume, area, _converterSettings.Current.SpeckleUnits)); } From df1b972d729e6065c43d9018ee33e39a52ebb3ef Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 25 Sep 2024 17:26:48 +0100 Subject: [PATCH 04/62] sends integer values as string when non-integer (#281) --- .../ToSpeckle/Parameters/ParameterExtractor.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index c554eaf75..e3c139e4d 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -140,7 +140,9 @@ ILogger logger case DB.StorageType.Double: return _scalingServiceToSpeckle.Scale(parameter.AsDouble(), parameter.GetUnitTypeId()); case DB.StorageType.Integer: - return parameter.AsInteger(); + return parameter.AsInteger().ToString() == parameter.AsValueString() + ? parameter.AsInteger() + : parameter.AsValueString(); case DB.StorageType.ElementId: var elId = parameter.AsElementId()!; if (_elementNameCache.TryGetValue(elId, out string? value)) From 7f6029d7574dd246c33bf14d94769468a0ce29e6 Mon Sep 17 00:00:00 2001 From: Alan Rynne Date: Thu, 26 Sep 2024 10:07:23 +0200 Subject: [PATCH 05/62] fix: Removes some properties from the .targets file and puts them into each csproj (#283) * fix: Removes some properties from the .targets file and puts them into each csproj > repetition but also much > clarity on what's going on. * fix: Undo props changes --- .../Speckle.Connectors.Autocad2022.csproj | 3 ++ .../Speckle.Connectors.Autocad2023.csproj | 3 ++ .../Speckle.Connectors.Autocad2024.csproj | 3 ++ .../Speckle.Connectors.Autocad2025.csproj | 3 ++ .../Speckle.Connectors.Civil3d2024.csproj | 3 ++ .../Speckle.Connectors.Rhino7.csproj | 11 ++++++ .../Speckle.Connectors.Rhino8.csproj | 11 ++++++ .../Speckle.Converters.Autocad2024.csproj | 1 - .../Speckle.Converters.Autocad2025.csproj | 1 - Directory.Build.targets | 34 ++++--------------- 10 files changed, 43 insertions(+), 30 deletions(-) diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj b/Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj index 53fc11282..cdc7b30b1 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/Speckle.Connectors.Autocad2022.csproj @@ -2,9 +2,12 @@ net48 x64 + true 2022 $(DefineConstants);AUTOCAD;AUTOCAD2022;AUTOCAD2022_OR_GREATER Debug;Release;Local + Program + $(ProgramW6432)\Autodesk\AutoCAD $(AutoCADVersion)\acad.exe diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj b/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj index 4b52daee3..ce9c5379c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/Speckle.Connectors.Autocad2023.csproj @@ -2,9 +2,12 @@ net48 x64 + true 2023 $(DefineConstants);AUTOCAD;AUTOCAD2023;AUTOCAD2022_OR_GREATER;AUTOCAD2023_OR_GREATER Debug;Release;Local + Program + $(ProgramW6432)\Autodesk\AutoCAD $(AutoCADVersion)\acad.exe diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj b/Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj index 6b2e10aea..9094b59b9 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/Speckle.Connectors.Autocad2024.csproj @@ -2,9 +2,12 @@ net48 x64 + true 2024 $(DefineConstants);AUTOCAD;AUTOCAD2024;AUTOCAD2022_OR_GREATER;AUTOCAD2023_OR_GREATER;AUTOCAD2024_OR_GREATER Debug;Release;Local + Program + $(ProgramW6432)\Autodesk\AutoCAD $(AutoCADVersion)\acad.exe diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj b/Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj index f07bc0537..bb759038b 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/Speckle.Connectors.Autocad2025.csproj @@ -2,11 +2,14 @@ net8.0-windows x64 + true 2025 $(DefineConstants);AUTOCAD2025;AUTOCAD Debug;Release;Local true win-x64 + Program + $(ProgramW6432)\Autodesk\AutoCAD $(AutoCADVersion)\acad.exe diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj index 87f0841ce..fd14da12c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj @@ -2,9 +2,12 @@ net48 x64 + true 2024 $(DefineConstants);CIVIL3D;CIVIL3D2024;CIVIL3D2024_OR_GREATER Debug;Release;Local + Program + $(ProgramW6432)\Autodesk\AutoCAD $(Civil3DVersion)\acad.exe diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj b/Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj index 7f5b6168c..241571403 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/Speckle.Connectors.Rhino7.csproj @@ -4,6 +4,12 @@ Debug;Release;Local 7 $(DefineConstants);RHINO7;RHINO7_OR_GREATER + .rhp + $(ProgramFiles)\Rhino $(RhinoVersion)\System\Rhino.exe + true + true + true + true @@ -17,5 +23,10 @@ + + + + + diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj b/Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj index 6d1450e11..55680b7f4 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/Speckle.Connectors.Rhino8.csproj @@ -4,6 +4,12 @@ Debug;Release;Local 8 $(DefineConstants);RHINO8;RHINO7_OR_GREATER;RHIN08_OR_GREATER + .rhp + $(ProgramFiles)\Rhino $(RhinoVersion)\System\Rhino.exe + true + true + true + true @@ -16,6 +22,11 @@ + + + + + diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj b/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj index 533d3c93e..1f8eacd4c 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/Speckle.Converters.Autocad2024.csproj @@ -2,7 +2,6 @@ net48 x64 - 2024 $(DefineConstants)AUTOCAD;AUTOCAD2024;AUTOCAD2022_OR_GREATER;AUTOCAD2023_OR_GREATER;AUTOCAD2024_OR_GREATER Debug;Release;Local diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj b/Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj index da319d194..90c8bdc9a 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/Speckle.Converters.Autocad2025.csproj @@ -2,7 +2,6 @@ net8.0-windows x64 - 2025 $(DefineConstants);AUTOCAD2025;AUTOCAD Debug;Release;Local diff --git a/Directory.Build.targets b/Directory.Build.targets index 4ad4f99dc..cabf959a2 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -4,6 +4,7 @@ + @@ -17,6 +18,7 @@ + @@ -24,17 +26,11 @@ - - true - - - Program - $(ProgramW6432)\Autodesk\AutoCAD $(AutoCADVersion)\acad.exe - + @@ -42,32 +38,14 @@ - - true - - - Program - $(ProgramW6432)\Autodesk\AutoCAD $(Civil3DVersion)\acad.exe - + + + - - .rhp - $(ProgramFiles)\Rhino $(RhinoVersion)\System\Rhino.exe - - - .rhp - true - true - true - - - - - From 2bb558548b189f6dc79d9e900ac1fc965a63910b Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Thu, 26 Sep 2024 10:36:07 +0100 Subject: [PATCH 06/62] Jedd/cxpla 84 add commit context to receive trace (#248) * context * rename activity * Fixed build * remove crap * Fixed issue with CallerMemberName --- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 22 +-- .../packages.lock.json | 22 +-- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 20 +-- .../packages.lock.json | 40 ++--- .../Speckle.Connectors.DUI/packages.lock.json | 18 +-- Directory.Packages.props | 4 +- .../ConnectorActivityFactory.cs | 5 +- .../Operations/ReceiveOperation.cs | 147 +++++++++++------- .../Speckle.Connectors.Common.csproj | 2 +- .../packages.lock.json | 14 +- .../LoggingActivityFactory.cs | 1 + .../packages.lock.json | 18 +-- .../packages.lock.json | 16 +- .../packages.lock.json | 14 +- 40 files changed, 430 insertions(+), 401 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index 53c11bdb0..df52ffdbe 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -239,7 +239,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -264,7 +264,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 5db40f1a2..6d02da77f 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -294,7 +294,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -332,18 +332,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 848ab1403..95b85af40 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -294,7 +294,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -332,18 +332,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index 487e222a2..fbd71530e 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -295,7 +295,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -333,18 +333,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 5943d991f..d7eb00c6c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -224,8 +224,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -233,7 +233,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -297,18 +297,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index d95249c49..49f1797c7 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -269,8 +269,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -304,7 +304,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -342,18 +342,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 10245828f..ed0042e8d 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -288,8 +288,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -297,7 +297,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.converters.revit2022": { @@ -347,11 +347,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Revit.API": { @@ -362,9 +362,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 12286f08c..81ab1acef 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -288,8 +288,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -297,7 +297,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.converters.revit2023": { @@ -347,11 +347,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Revit.API": { @@ -362,9 +362,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 36bb56210..7f48440c7 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -288,8 +288,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -297,7 +297,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.converters.revit2024": { @@ -347,11 +347,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Revit.API": { @@ -362,9 +362,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 39e6473a6..9a1824553 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -246,8 +246,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -255,7 +255,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.converters.revit2025": { @@ -318,11 +318,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Revit.API": { @@ -333,9 +333,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index d8bdfd8c6..32aead9ff 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -269,8 +269,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -296,7 +296,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.converters.rhino7": { @@ -341,18 +341,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index b7832193a..6e9fc2699 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -269,8 +269,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -296,7 +296,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.converters.rhino8": { @@ -341,18 +341,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index 7800a6e94..ef91a4f67 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -223,7 +223,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -246,18 +246,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 1263be458..531ee5443 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 0de215d7c..b5b30b80b 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 281b57525..dfa956e50 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -287,7 +287,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -325,18 +325,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 1ccdd07a0..617e871d4 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -224,8 +224,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -233,7 +233,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -251,7 +251,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -289,18 +289,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index ef914dc48..8ed7fd3c7 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -268,7 +268,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -291,18 +291,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 3dbff6d8e..e01e0de9a 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -349,7 +349,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.testing": { @@ -379,18 +379,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 864ede376..873d2ee02 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index 68a841dfb..a300ea11f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -349,7 +349,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.testing": { @@ -379,18 +379,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index 9d9b1da8e..d1cff2fb0 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index cdf30fe53..834e77a9f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -349,7 +349,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.testing": { @@ -379,18 +379,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 401fd38c2..04cec0ad1 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index e72b2bd01..ff3bf1fc7 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -223,7 +223,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -246,18 +246,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 146519ee8..47d13c952 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -349,7 +349,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.testing": { @@ -379,18 +379,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index a8ac32461..e62307d35 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 793da53a3..fa1df780e 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -259,7 +259,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "Microsoft.Extensions.Logging": { @@ -282,18 +282,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 50599e569..a3b7186f9 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -328,8 +328,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -337,7 +337,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -380,18 +380,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index d9998e0f7..fda27580e 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -305,18 +305,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -560,8 +560,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.dui": { @@ -569,7 +569,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -605,18 +605,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 05acaaa5f..0968d3cbc 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -41,9 +41,9 @@ }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -311,8 +311,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.logging": { @@ -341,11 +341,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index 3b0a94aaa..26ed65972 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -31,8 +31,8 @@ - - + + diff --git a/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs b/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs index ea1955793..c9c30ba9e 100644 --- a/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs +++ b/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs @@ -1,4 +1,5 @@ -using Speckle.Connectors.Logging; +using System.Runtime.CompilerServices; +using Speckle.Connectors.Logging; using Speckle.Sdk.Common; using Speckle.Sdk.Logging; @@ -10,7 +11,7 @@ public sealed class ConnectorActivityFactory : ISdkActivityFactory, IDisposable public void Dispose() => _loggingActivityFactory.Dispose(); - public ISdkActivity? Start(string? name = default, string source = "") + public ISdkActivity? Start(string? name = default, [CallerMemberName] string source = "") { var activity = _loggingActivityFactory?.Start(name, source); if (activity is null) diff --git a/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs index 575cd070d..e7e63475a 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs @@ -3,6 +3,7 @@ using Speckle.Sdk.Credentials; using Speckle.Sdk.Logging; using Speckle.Sdk.Models; +using Speckle.Sdk.Models.Extensions; using Speckle.Sdk.Transports; namespace Speckle.Connectors.Common.Operations; @@ -42,78 +43,73 @@ public async Task Execute( Action? onOperationProgressed = null ) { - using var execute = _activityFactory.Start(); - Speckle.Sdk.Api.GraphQL.Models.Version? version; - Base? commitObject; - HostObjectBuilderResult? res; + using var execute = _activityFactory.Start("Receive Operation"); + execute?.SetTag("receiveInfo", receiveInfo); // 2 - Check account exist Account account = _accountService.GetAccountWithServerUrlFallback(receiveInfo.AccountId, receiveInfo.ServerUrl); using Client apiClient = _clientFactory.Create(account); - using (var _ = _activityFactory.Start("Receive version")) - { - version = await apiClient - .Version.Get(receiveInfo.SelectedVersionId, receiveInfo.ModelId, receiveInfo.ProjectId, cancellationToken) - .ConfigureAwait(false); - } + var version = await apiClient + .Version.Get(receiveInfo.SelectedVersionId, receiveInfo.ModelId, receiveInfo.ProjectId, cancellationToken) + .ConfigureAwait(false); int totalCount = 1; using var transport = _serverTransportFactory.Create(account, receiveInfo.ProjectId); - using (var _ = _activityFactory.Start("Receive objects")) - { - _progressDisplayManager.Begin(); - commitObject = await _operations - .Receive( - version.referencedObject, - transport, - onProgressAction: dict => + + _progressDisplayManager.Begin(); + Base? commitObject = await _operations + .Receive( + version.referencedObject, + transport, + onProgressAction: dict => + { + if (!_progressDisplayManager.ShouldUpdate()) { - if (!_progressDisplayManager.ShouldUpdate()) - { - return; - } - // NOTE: this looks weird for the user, as when deserialization kicks in, the progress bar will go down, and then start progressing again. - // This is something we're happy to live with until we refactor the whole receive pipeline. - var args = dict.FirstOrDefault(); - if (args is null) - { - return; - } - switch (args.ProgressEvent) - { - case ProgressEvent.DownloadBytes: - onOperationProgressed?.Invoke( - $"Downloading ({_progressDisplayManager.CalculateSpeed(args)})", - _progressDisplayManager.CalculatePercentage(args) - ); - break; - case ProgressEvent.DownloadObject: - onOperationProgressed?.Invoke("Downloading Root Object...", null); - break; - case ProgressEvent.DeserializeObject: - onOperationProgressed?.Invoke( - $"Deserializing ({_progressDisplayManager.CalculateSpeed(args)})", - _progressDisplayManager.CalculatePercentage(args) - ); - break; - } - }, - onTotalChildrenCountKnown: c => totalCount = c, - cancellationToken: cancellationToken - ) - .ConfigureAwait(false); + return; + } - cancellationToken.ThrowIfCancellationRequested(); - } + // NOTE: this looks weird for the user, as when deserialization kicks in, the progress bar will go down, and then start progressing again. + // This is something we're happy to live with until we refactor the whole receive pipeline. + var args = dict.FirstOrDefault(); + if (args is null) + { + return; + } + switch (args.ProgressEvent) + { + case ProgressEvent.DownloadBytes: + onOperationProgressed?.Invoke( + $"Downloading ({_progressDisplayManager.CalculateSpeed(args)})", + _progressDisplayManager.CalculatePercentage(args) + ); + break; + case ProgressEvent.DownloadObject: + onOperationProgressed?.Invoke("Downloading Root Object...", null); + break; + case ProgressEvent.DeserializeObject: + onOperationProgressed?.Invoke( + $"Deserializing ({_progressDisplayManager.CalculateSpeed(args)})", + _progressDisplayManager.CalculatePercentage(args) + ); + break; + } + }, + onTotalChildrenCountKnown: c => totalCount = c, + cancellationToken: cancellationToken + ) + .ConfigureAwait(false); + + cancellationToken.ThrowIfCancellationRequested(); // 4 - Convert objects - using (var _ = _activityFactory.Start("Convert")) - { - res = await _hostObjectBuilder - .Build(commitObject, receiveInfo.ProjectName, receiveInfo.ModelName, onOperationProgressed, cancellationToken) - .ConfigureAwait(false); - } + HostObjectBuilderResult? res = await ConvertObjects( + commitObject, + receiveInfo, + onOperationProgressed, + cancellationToken + ) + .ConfigureAwait(false); await apiClient .Version.Received(new(version.id, receiveInfo.ProjectId, receiveInfo.SourceApplication), cancellationToken) @@ -121,4 +117,35 @@ await apiClient return res; } + + private async Task ConvertObjects( + Base commitObject, + ReceiveInfo receiveInfo, + Action? onOperationProgressed, + CancellationToken cancellationToken + ) + { + using var conversionActivity = _activityFactory.Start("ReceiveOperation.ConvertObjects"); + conversionActivity?.SetTag("smellsLikeV2Data", commitObject.SmellsLikeV2Data()); + conversionActivity?.SetTag("receiveInfo.serverUrl", receiveInfo.ServerUrl); + conversionActivity?.SetTag("receiveInfo.projectId", receiveInfo.ProjectId); + conversionActivity?.SetTag("receiveInfo.modelId", receiveInfo.ModelId); + conversionActivity?.SetTag("receiveInfo.selectedVersionId", receiveInfo.SelectedVersionId); + conversionActivity?.SetTag("receiveInfo.sourceApplication", receiveInfo.SourceApplication); + + try + { + var res = await _hostObjectBuilder + .Build(commitObject, receiveInfo.ProjectName, receiveInfo.ModelName, onOperationProgressed, cancellationToken) + .ConfigureAwait(false); + conversionActivity?.SetStatus(SdkActivityStatusCode.Ok); + return res; + } + catch (Exception ex) + { + conversionActivity?.RecordException(ex); + conversionActivity?.SetStatus(SdkActivityStatusCode.Error); + throw; + } + } } diff --git a/Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj b/Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj index c59c169e3..3b90f2d22 100644 --- a/Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj +++ b/Sdk/Speckle.Connectors.Common/Speckle.Connectors.Common.csproj @@ -12,7 +12,7 @@ - + diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index f8cbfc650..e4728ea1f 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.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs b/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs index dff87de43..708d1f6b0 100644 --- a/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs +++ b/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs @@ -12,6 +12,7 @@ public sealed class LoggingActivityFactory : IDisposable public LoggingActivity? Start(string? name = null, [CallerMemberName] string source = "") { + //If you get a MissingManifestResourceException, Likely source or name is empty string, which is no good. var activity = _activitySource?.StartActivity(name ?? source, ActivityKind.Client); if (activity is null) { diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index f16451831..82150c4b7 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -328,8 +328,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" } }, "speckle.connectors.logging": { @@ -371,18 +371,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index 3d9dc7029..f4d9ba24b 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -336,7 +336,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[3.1.0-dev.146, )" } }, "speckle.testing": { @@ -366,18 +366,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 2cf3d50e4..2d8d14568 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.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" + "Speckle.Sdk": "3.1.0-dev.146" } }, "GraphQL.Client": { @@ -305,9 +305,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", From 9f402e852ed7d9137ba770ffc667b49c81f8ce72 Mon Sep 17 00:00:00 2001 From: Alan Rynne Date: Thu, 26 Sep 2024 11:52:22 +0200 Subject: [PATCH 07/62] CXPLA-89: Replace AutomaticallyUseReferenceAssemblyPackages with nuget (#284) * feat: replace AutomaticallyUseReferenceAssemblyPackages with package instead * chore: Update package lock files * No privateAssets needed in global package ref --- Build/packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 28 +++++++++++++++++++ .../Speckle.Connectors.DUI/packages.lock.json | 14 ++++++++++ Directory.Build.props | 1 - Directory.Packages.props | 1 + .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ .../packages.lock.json | 14 ++++++++++ Sdk/Speckle.Testing/packages.lock.json | 14 ++++++++++ 40 files changed, 547 insertions(+), 1 deletion(-) diff --git a/Build/packages.lock.json b/Build/packages.lock.json index 560d07d9a..df89bd19f 100644 --- a/Build/packages.lock.json +++ b/Build/packages.lock.json @@ -30,6 +30,15 @@ "System.Threading.Tasks.Dataflow": "8.0.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, )", @@ -73,6 +82,11 @@ "resolved": "17.10.4", "contentHash": "wyABaqY+IHCMMSTQmcc3Ca6vbmg5BaEPgicnEgpll+4xyWZWlkQqUwafweUd9VAhBb4jqplMl6voUHQ6yfdUcg==" }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index df52ffdbe..28f2a8143 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -14,6 +14,15 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "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, )", @@ -142,6 +151,11 @@ "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", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 6d02da77f..cd5530eaa 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 95b85af40..0c27ca45e 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index fbd71530e..1a271cec7 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index d7eb00c6c..320d005ca 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -2,6 +2,15 @@ "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, )", @@ -136,6 +145,11 @@ "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", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 49f1797c7..e76199417 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -146,6 +155,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index ed0042e8d..5cfdef1f4 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -11,6 +11,15 @@ "CefSharp.Common": "[65.0.1]" } }, + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -165,6 +174,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 81ab1acef..c147d7c09 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -11,6 +11,15 @@ "CefSharp.Common": "[92.0.260]" } }, + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -165,6 +174,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 7f48440c7..cf6831c4b 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -11,6 +11,15 @@ "CefSharp.Common": "[105.3.390]" } }, + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -165,6 +174,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 9a1824553..5a8195d5c 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -11,6 +11,15 @@ "CefSharp.Common.NETCore": "[119.4.30]" } }, + "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, )", @@ -158,6 +167,11 @@ "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", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 32aead9ff..0aa5dce3f 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -146,6 +155,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index 6e9fc2699..154d7bf1d 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -146,6 +155,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index ef91a4f67..0e0a784a1 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -8,6 +8,15 @@ "resolved": "3.2.0.49743", "contentHash": "fmnYm+mD14Cz0Uqh1ij37SfLJerkyFHK5581y5tXT/l3H2ZvUmVuuxjYquXzyzj9p7IexQzMW4xCpxe+mD922g==" }, + "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, )", @@ -136,6 +145,11 @@ "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", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 531ee5443..f0da031bb 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index b5b30b80b..61185ccb8 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index dfa956e50..7551ae30f 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 617e871d4..032902c15 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -2,6 +2,15 @@ "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, )", @@ -136,6 +145,11 @@ "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", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 8ed7fd3c7..27df5631f 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -146,6 +155,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index e01e0de9a..e615f60a7 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -27,6 +27,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -204,6 +213,11 @@ "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", diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 873d2ee02..8621de5d0 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index a300ea11f..8294affc0 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -27,6 +27,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -204,6 +213,11 @@ "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", diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index d1cff2fb0..aed352417 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index 834e77a9f..168888aac 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -27,6 +27,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -204,6 +213,11 @@ "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", diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 04cec0ad1..b73d957c1 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index ff3bf1fc7..dcc6ffaed 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -2,6 +2,15 @@ "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, )", @@ -136,6 +145,11 @@ "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", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 47d13c952..ffb03eef3 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -27,6 +27,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -204,6 +213,11 @@ "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", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index e62307d35..9d2bebd56 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index fa1df780e..d5f635733 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index a3b7186f9..ec3589f44 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -27,6 +27,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -195,6 +204,11 @@ "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", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index fda27580e..eb0dc1c73 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { ".NETFramework,Version=v4.8": { + "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.SourceLink.GitHub": { "type": "Direct", "requested": "[8.0.0, )", @@ -137,6 +146,11 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.1" } }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", @@ -338,6 +352,15 @@ } }, "net6.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, )", @@ -472,6 +495,11 @@ "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", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 0968d3cbc..b3675ffa3 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -8,6 +8,15 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "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, )", @@ -179,6 +188,11 @@ "resolved": "1.1.0", "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Directory.Build.props b/Directory.Build.props index 858d82c2e..858928479 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -10,7 +10,6 @@ true true false - false diff --git a/Directory.Packages.props b/Directory.Packages.props index 26ed65972..61b6f781d 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -38,5 +38,6 @@ + diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index e4728ea1f..239107225 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -11,6 +11,15 @@ "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.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, )", @@ -185,6 +194,11 @@ "resolved": "1.1.0", "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Sdk/Speckle.Connectors.Logging/packages.lock.json b/Sdk/Speckle.Connectors.Logging/packages.lock.json index d0fa75701..3d58a2917 100644 --- a/Sdk/Speckle.Connectors.Logging/packages.lock.json +++ b/Sdk/Speckle.Connectors.Logging/packages.lock.json @@ -11,6 +11,15 @@ "ILRepack": "2.0.33" } }, + "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, )", @@ -292,6 +301,11 @@ "resolved": "1.1.0", "contentHash": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==" }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index 82150c4b7..a6443a804 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -27,6 +27,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -195,6 +204,11 @@ "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", diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index f4d9ba24b..97d9e2773 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -36,6 +36,15 @@ "Microsoft.TestPlatform.TestHost": "17.10.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, )", @@ -204,6 +213,11 @@ "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", diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 2d8d14568..3b2ce2128 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -8,6 +8,15 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "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, )", @@ -164,6 +173,11 @@ "resolved": "1.1.0", "contentHash": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==" }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", diff --git a/Sdk/Speckle.Testing/packages.lock.json b/Sdk/Speckle.Testing/packages.lock.json index 3c8bf9004..f26206fc4 100644 --- a/Sdk/Speckle.Testing/packages.lock.json +++ b/Sdk/Speckle.Testing/packages.lock.json @@ -2,6 +2,15 @@ "version": 2, "dependencies": { "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, )", @@ -52,6 +61,11 @@ "resolved": "8.0.0", "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" }, + "Microsoft.NETFramework.ReferenceAssemblies.net461": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "AmOJZwCqnOCNp6PPcf9joyogScWLtwy0M1WkqfEQ0M9nYwyDD7EX9ZjscKS5iYnyvteX7kzSKFCKt9I9dXA6mA==" + }, "Microsoft.SourceLink.Common": { "type": "Transitive", "resolved": "8.0.0", From b086d16faf93dd1080e700a2171c2d08a588669a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuzhan=20Koral?= <45078678+oguzhankoral@users.noreply.github.com> Date: Thu, 26 Sep 2024 13:10:06 +0300 Subject: [PATCH 08/62] Feat(tekla): plugin structure and bind UI (#282) * Fun 101 * Update package.lock for tekla project * Align tekla with new DI * More alignment * Add launch setting * Message for init * Move project to connectors folder * Show, activate, focus * Post build action * NOT_DEPENDENT for inputs on slides said that it useful on imports and exports and faster around 20x * Add doc for InputObjectDependency.NOT_DEPENDENT * Disable conditions on post build action * Make it work! * Move packages to Directory.Packages.props * Bump tekla package.json to sdk 3.1.0-dev.146 * Add tekla project to Local.sln too * Update packages.lock --- .../Bindings/TeklaBasicConnectorBinding.cs | 48 ++ .../Bindings/TeklaSendBinding.cs | 27 + .../InputObjectDependency.NOT_DEPENDENT.png | Bin 0 -> 152113 bytes .../HostApp/TeklaDocumentModelStore.cs | 17 + .../Plugin/TeklaPlugin.cs | 18 + .../Properties/launchSettings.json | 8 + .../ServiceRegistration.cs | 33 ++ .../Speckle.Connector.Tekla2024.csproj | 32 ++ .../SpeckleTeklaPanelHost.cs | 62 +++ .../Speckle.Connector.Tekla2024/app.config | 15 + .../packages.lock.json | 493 ++++++++++++++++++ Directory.Packages.props | 3 + Local.sln | 8 + Speckle.Connectors.sln | 10 + 14 files changed, 774 insertions(+) create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaSendBinding.cs create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/DevDocs/InputObjectDependency.NOT_DEPENDENT.png create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/HostApp/TeklaDocumentModelStore.cs create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/Plugin/TeklaPlugin.cs create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/Properties/launchSettings.json create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/ServiceRegistration.cs create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/SpeckleTeklaPanelHost.cs create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/app.config create mode 100644 Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs new file mode 100644 index 000000000..38d1a7bf1 --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs @@ -0,0 +1,48 @@ +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.DUI.Models.Card; +using Speckle.Sdk; + +namespace Speckle.Connector.Tekla2024.Bindings; + +public class TeklaBasicConnectorBinding : IBasicConnectorBinding +{ + private readonly ISpeckleApplication _speckleApplication; + private readonly DocumentModelStore _store; + public string Name => "baseBinding"; + public IBrowserBridge Parent { get; } + + public TeklaBasicConnectorBinding( + IBrowserBridge parent, + ISpeckleApplication speckleApplication, + DocumentModelStore store + ) + { + _speckleApplication = speckleApplication; + _store = store; + Parent = parent; + } + + public string GetSourceApplicationName() => _speckleApplication.Slug; + + public string GetSourceApplicationVersion() => _speckleApplication.HostApplicationVersion; + + public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; + + public DocumentInfo? GetDocumentInfo() => new DocumentInfo("Test", "Test", "Test"); + + public DocumentModelStore GetDocumentState() => _store; + + public void AddModel(ModelCard model) => throw new NotImplementedException(); + + public void UpdateModel(ModelCard model) => throw new NotImplementedException(); + + public void RemoveModel(ModelCard model) => throw new NotImplementedException(); + + public void HighlightModel(string modelCardId) => throw new NotImplementedException(); + + public void HighlightObjects(List objectIds) => throw new NotImplementedException(); + + public BasicConnectorBindingCommands Commands { get; } +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaSendBinding.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaSendBinding.cs new file mode 100644 index 000000000..77c1f9977 --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaSendBinding.cs @@ -0,0 +1,27 @@ +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Models.Card.SendFilter; +using Speckle.Connectors.DUI.Settings; + +namespace Speckle.Connector.Tekla2024.Bindings; + +public class TeklaSendBinding : ISendBinding +{ + public string Name => "sendBinding"; + public IBrowserBridge Parent { get; } + + public TeklaSendBinding(IBrowserBridge parent) + { + Parent = parent; + } + + public List GetSendFilters() => []; + + public List GetSendSettings() => []; + + public Task Send(string modelCardId) => throw new NotImplementedException(); + + public void CancelSend(string modelCardId) => throw new NotImplementedException(); + + public SendBindingUICommands Commands { get; } +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/DevDocs/InputObjectDependency.NOT_DEPENDENT.png b/Connectors/Tekla/Speckle.Connector.Tekla2024/DevDocs/InputObjectDependency.NOT_DEPENDENT.png new file mode 100644 index 0000000000000000000000000000000000000000..a95b73cb53314109ad961bd261b8ab7cb10180f7 GIT binary patch literal 152113 zcmZ6ydmz)_{|8=D-l)8DExA-`a*1S$xvY!GWm|0SOu2*=a#<}pYYY*_w%5Tt7;K$A&YtxH6io4~efnNl@F2FAA*in)w%D=uF_+9w+ z6^Ec5JC0BN`L{F5eYf0>9ozY4#urc_=$Sg9Oeq_}7Bn3cvrqe7*}H~;?cXzP=?OH zWI^^#>qN4KjJs?@c;DBAFbK|Th>J5H4NQ$6_sUuhU!*%y!W=bWxK++Z5<+$(hLB(a zQ)#GiUTItm9cLi$VSEciIgaA*NQjuGlo~RYv^k7IxK9Zi)t_t-TbyO5^+l!Q({jz(hO+vBxms`rLK7yNh=jsq zmuM8vp#e(ucMH1&qz!^K9%dNNjIl%Wh}ibU4Q}Ki1a^s$XGWxjr6twPe-O?7*?Ov~ z|KsYl5_@&&xMuN~($X`6(H8^-c1lW1KQ1aLIO)N6zIye3nOD!_EjDK@%?DecQp2vq zd<&ZF9{KP{^gu^*Ivgy>gR7~i#D1->uGUR%sI4`~ghmbpMXHn1$TNlI<=|uSdF~1h zI8E4ZI~HRE;+ISDM6(tPIdALih$2i6UcOkBBG26Pj;!l=g`nnhGo_mIoaimvPEqV=Eq{8zaE009up4#xzZ|dt5{7#bFNK$Mo973=H-@rFt zf%=2=+2*o1+g2pOo8gv1>UcY(Cclw{rnnV3RX(z7IOg0kyIjuiUc5&{RKpi(H`{Uc zlrTjv$TS7LvBW`^D$+-ju@?**f+QIs2N2pr0jkrQmk&z1&5x3u{Hhwo;+oxnh`4k)GO7An3u*>F0XK#yW2v zmaRfAd^6GU>%qzX$=1(R`3c_;T&`P6yq!Wiv|$0o{wPMDZPv|5g>VaZ0e?bb^q~Qo z_>}tTZp2|iX72HjUlsdctv3&AO(c$@YlD&#`p?p+Sat>4^3R(J7IGWESkw7W1fhOK z_X_vn{z+LkGew=X>mm@`A}38{>U(d=*zr$!xvd6g=pgXrOJcYu`67%`IF$-lWn2Jz zSZ5TI^C;8!c9a$4Mh?l^m9!&YRL7puhk*H%{un?Eh*_S8Rf=(vH(7$rWOouz=K(X@ zk-}a?U3aX2U)Gd|F|Od!p({vVDS=10&G34Gc=g5s1jJDhw9o0HqJ!#w7fi4RwrXPcv%owNwWUVV>zbo@3iUS zd^0JXQx!~z&d!dG%E^b97qc{&&msBsDlqu{5X*dqi7KWR?22;)7uYG|3+?^CE zT^9_7eJqXBA{i84f$);cnW$DI4zXKDlV3Qz;wFGu_)4i%fl-n8MzIN4lp^&DWxtN^ zpArA58Ez#9&u7{|9+2fMFrNfJq2{9#j>k7JW6OX$ztT!nZxDt(z?&iQ<`Wj}bYK;_ z=*g}ib}0$q&Rkn(r^nFowd=H* z&NOG(NB3btrpMOTl`~cd86O#8TzV8iod5g?(cb2Pr;K}K5+ns;CWN^{Bz%@&{*0m4 zt3E&|>>@9=ozW(dyR9A)hQ0DQ?(%w(e!4Rtjv3rEmk=9Lh=$*(|5pK41Lj?dW$x8ajXym7CR z;8(>=YVxokhDe|xFjmMY6zDllwY6Tj;Nxgk4H@i!PIY202mZgIzAWd1grCTkCPEoC zOz<@7X-44I<><(K{-UA0F@kvYwgasOQ=bQC@yXG&wjQ_X98AV%2}=%vX`P)#Ju7Z` z^J#()j9oJKGLvtW25POJp{O3^CDl@gk(c|Pl4&;ude7vW7TCxyniY7l!!I6BwBGvP zPz4k%_e>viB!jVrc*5cUn0BXTJtv!;ms?1Yc#Yx)qYRNXpb9~o9_H9Zu#JU`P3uDi zt(0?8y96p|NGsNuqJ4XwX4vt}Jn$_h!lP{t9sup(2r+$yZH>R@_SAg`)or+QDD;ME$$P;W>Zy<1R}W zxcF=w-+g>3WM#&|odAY21A~G(I4E_gbW^e?F9U(06t)HDbeKJ2`alTAeHO$sJ=0Uv zHyREU&@QPy#ECV}i+I^SM1BI}5hU}f8If?G=jLL~K)s40bPn^DCNJ@HcIxyp3_l0n=T8qBL4CQw$0rHG6o zx6)agN<5)J2|LX5aWVhT`lTknlDHgWDW|Rl^>V4SOA9?Z zNE=+ZS1N&xcw2KSo)G*+&!K-+Sy~M1)cf2lzc}MB_6i1~^D2)m&MlKEMeBU1d@lUl zTRcKv6F@Ho7w|u0(6|!&g27K-?9+*vsCL2gUt&*0Wj)?R)-7IgRTT46@=OJHDh`^F zP)~)|?|zv3j)s!gGB%Sz9ZYP}<6*4FVFx;4J+7uEb8vl{THw=^2R~GVd=Vb_(tauo zJaIWn5zX-_ng5p6f@9lI-2S`*VcQKjT=Tfy{rB=;ETH!FQGxO5^Ex+y+{6;?)tSC| zzCLImh~gIzA0eLTI`(5}F*^86R=cle4RyNqYL%4x*73Cw0Io?<_35+TnDb^X3Uj*g z`5o@Dt<-)!!W|U=E&N{!UBsr=T4rK@l!zmB{(Lp}(u55EGvhDz8BGBBVd+0(vWCR4 zhyMihb3-Ap_=CL;lpCNZMGSF$+`;q*y6=-$2CDt8gQm17_Asw=`Bza~8U3XqI}Ce| zV9CT2QDMGnEw!|UEt+TAoN=mXX?$A1UP78m06{{TT=q&iDq0ae__QsAEye%5nwz81A3x2H3Z{Xezzjk&T<0&Hlj0ToU&>98 z+rUkFmslM5Phn1y{B^K5AjiEuRzcoK7RuN;aiW4>NFQ~@3aEX$8_-$X7a(vx2A0b3 zP^3vvjuC?Iu!7x~xy3cmUX*fkRJaVX!Z} zk<-1~10mnkp@S({wvf(SS3foG<=p+s4d4j9_!`_*{P^?Qg2(|l09?j9P_Pvls4;%< z3huZ()IxuH(;jp==O{@STDXaVnYtSdP=a9uqk+H2-Yp|_Hd+6sWXPpN3D?Gr>s-yteLcjX6^{XXOa<{^QOju;SG|4}B}7OY1oQuo{W4 z7GeI30M=XKV)-4ArFP1zo923<>Lq;Z8@*$9D-fXHRi!G8 zzo@;T!a471>Mjc{pjJvSo|-{D>kA5Rt^=$kAI=Rf65@Wf>!)s-^-II(wO5w_8lT~)nOe!*~WBOBU85v@?NaRdCZx?jbffRxvzB#Qu&dL&^ zHuz6xAXtpi@l(oDU^+Hf01M;6M~%4P#nt6$Ms`oqU5D=Vr{ng4Z!MQkxF(@by(4(- zaVnS=(s7`a)*ZwSz;oKnM4^mojUmA&Sk*xqp%2au#4Ksb-+}_rDEx{ZFAZxB!%esj zJoa3QCa4Q>lBcWd#$rkNMCLfyPZMvB`7Frm-ZWQWmaD%Tb8=}lDB~xgS;qkuSI7mK z$g|tMu=0bA7RY)F9t-Rirr%r8WA?(xOev?Q=EV^bhM7aoGR37qY?e;mKD64pNtLITm$5`8kIfoRr$Ft$ZRUw|J>f(vWbALeA|y>WQ8X39Q37)7jGn zHAz|Aqjgtb8-Qf#23R zm6%%+9aa>DRqBLQC!N%Xa%oF@HGv;oq#tYu5>UgR`LVo}_hH;wbKH9AqG3kzr$C3+ z1~j4c838kB0r^5*Mq-KKUhDRutfh$JiX-S-}xnd5!JBc zqVN!#v{=y62*u1eEi_kaUxNkICat5!82t7W!wlzLgyib7PGx~sIVlO7s1_v7ZmFp1 zg@_IdXP&!n!*!|oLgBv2Q?oWHvoz$*A|%ZKC`%;ly?r zK+>-^6mpuUntDs}%GecIExv1ZpZhs2vxnARnK}Lu3Z`2OO8GV9y#6I>j=vhoAuZUp zjtx%D`dMKp?=^v}lfB^5+5q4M3t65nkPa%?~1&p|juCxxZJK0^yzf{T#w`301%H|<3JT0V zHW-%Q+fU_;zq3@W`w~07c1p%0r`RtyG9d+hxe_n@JgrQ1@OTvAF;F$I)>MB90GVjP z@8`jr#V^Bh2}~;Fg~e_id5$%RhA!CXx9X>YHc@QUBF(Y%bUc%azGH*j%={}8b%xGd z{$PP{nW%t+?$6Lwli-$*hFM|OFR-1;k@>d0RWQkc#BYFX7qzZ;pxSVd7@D#psyJhB zlI=Rx$O<8ey~pc>j6ZaY3ND3jwR-{D&6sw4qa+nMZC47vysaQwK?=*4h=9WA*f1jP zc+PkQnw<;;o=#qHRF33gjbAg2ttys-`5JchZ%DK^dok}^p8f}wN#}kpSr)30`4Y+PL=dc0;Wn`8ZIRl3s@LhR0;X=9O%Y8=gWoiZM2m*E4sR z%`36OX;(j@h%^AczWkuM_Ci&?P;TSTb$R<8C}1kWAxqV=!+<8i4F;b8vK{O4sNE#W`sjg~nGloH$r$OnB6`ADDklDs|fp_t37&j994qvXQxAD^4PxR1&RZZE#Lj{$)DQVoDkjD0m~~ff0@H^KkP0vhqC@rhN890a&mESAs2>V4i!U*qj}NlP%wh zP#t3PEwFuHs&e`l7S<9YVbhabO!F+I+nT}vWo*&wSfcTwojlk^`vJ)ovhkTg&K-aB zO=zuOFv*lbsAXT+BAlN^k{2CZz=ab3LuFCaR1HuC3gsg4E$6y5{zBj#vdla@Ji8MGXHCL0*ED$@!J zJK{)QerV}^=4b9ItK%krhyZAbI>G%P zF({@ethRK-qrR%pQDR7`-VhDkAa> zQWze$!xd40A=5OcrwU5pHj@x}m@F|8L!-a*Fr-8gvbb%Pzq}l>M3Pcl>W#aCmDMp2 zj1^<-;Umu*M03)aY_okU%6NKDmt>Je{cn6E?0qT0XeEC?m7+i?HLyvyO^B!l1(aY>@MM``s@n5fPEiwMqCTLCRRNI&yfBfIw zE+XF!SQ3X`?l=H>Fxf*A(|bUECGkmkhx|=s!inn&8Fn_>HW6l~UN-FHj;4PL8A_Qw zjp?%|1s5@T|LCX0EW>-1;no?dm~WQLNOsVoKV+>Dl7hor)J6iTB4I~qQQ%CFo38-% zQU#nfPW@2cskGE?5QnA_l2Wnl^*s=s{5F0GiEt3XG6*n8aVKqD+1;De1BiPU*~vRk z57^bD7a^s9($)ykFn9%ySH>cuQ;);mi05Hm`b*@s#-X+VwF+A5X2siZ~=|r?9a+qz_I+r0-Rmdfl(Yk zAwnl!k-b8j#?qYBtI_^W1i6j2govh_PO=03L!{XS5)6&E@j;?--ggs8OtLhJ9C) zIU8*6mrCNkQkv!m7wZ3~#+*2TQa00JIjlM&7$awXyhX+*=*VBA3qQ}pH$)XFJ5x9u z03*RG)5cX7T`KY5MPlfm0BL|aYCl({%>mE~#Ae_5<9%3Juu)&y!ZK=kN5hIP+2Bcf z*>1!@qPpEFX=lwaz8Wx)2@6*`n?{Nar%(s`@cGwmGbxJKO z84YDddL@1Ru?HN|%#2Bqb&DzysTZlOKvD71g#5k+p(~e*bdwp6u!+V2}2Pu~4;N3PD)f zoZWVDj>c*`J#0Lt9$q;){692ZJa}bls#gmiD+pzjmX&ot3pv$>jL-`)aU9(TpBcS? z=6DHjd0%vi9y{D!mgD0M2fB}3cmSZc?l{V1S!j#pyPK4JP)&M)BO9xxz& zSPK#l0 zHs63mu4KzDy@KCI!PsU{7Q-5#O9WG`hQ$t}>LE2!5i(=P)8bnc_q#ifN@`(8$e7WhflhGNwkAtb2LD_6tfCNb!bO!RYS6C zuy@X31ae)aic*=E3+ST#$q?=(HflC8N2%3Fhq<}nU+eC=PW3B7RPZtK&7!zBa%Wbk zEe7USFSxdrTH&XCRQcU^k^*3`*15n;T8Gc~p*gwcx$laD*8cZWZP=)G%@%Btwi*2x zZ!*kBh*hABrD;sw)my>BG;&Meo=#f0{z0>6o^AujH}kJ}%qvZ0>NZ?b3wjoB=WH@c zKiJ(kBX`f!v-$R8o&PKB`63^JsxZOTQ^pJQdJU`P;9wJKn=s{{mte?CFuSm$nHM)H zNb~VFjuKFZVlV3-s0IvfxQRUu@(F{MxS%P@Fsm8yITqs6SDO&w_wp|^!MVjuV}rIFafmMdV7l%Z-U=wW*VySf(#nO*R0A@tjeo@< zAMQzUEUL2kkF< z#fbgCLpK%kKsS|tQv`A&SpAUw=|{S$VAk}g*N>zNQHpKkrHkOHJbH&XFBU6%jcGxil`s>Of?kQFO{?yGk6U1p<*D6*&yU^@zTS-uZ1A(_vA1Po+= zt91!7^8n}ej|!{=5ODr@ZS*s2>UNBnY@fp#BLXS zMC>d8D0WxaQ^fhF0XG*iZtrQ1FTi31*jMI1dJt`8jzuXpA0{>4#T@?j%GALqLKD<0E~*m-@DG^deucw-kc@g&ja>OYxsWU{!t@U)0uK03|vF*Itu< z1M&ofwFc~of@uJH%;^1Lk`BP29t=Pm@A~AIMLzwY*I?Y6xgEm@+TMM6BP^%rc)w5H zJg4v9f`f|i5NK)uy(+u$tt2nYn-Hjeg4C%505-xyEEU0I^m;i$>N8QF52UVNu|Y0g z+6Uoe+Ao#~7ZmP+_VuQO_jw2;Q-7L5xYUdLz5uo3Pw3Z^V{6)e3Uye*0QLryEJxKV zj(RKkByz4iaLqhxu0~^NaAx7LP8kjgltR8n1R4bZ(5bKr(7`LNcF~HZiht&{f~fmv zUQpq_eA}l=B42k0s5?SISnt#ZoeyW1)Aa- z33%i&SO5_s3AdEKP}>$?KISFiFsf@8V5u3tJ)`Y{)-i!IFVBNBOe-70Wq{1=s7b~V zipkeX;Vc8Q`AhBo0(vU|`~Hd;fLl{QfMb^o!j83zv0q;7wn~eb&%L#R$aef(@?K6c zsGsBW%i+;PPfn3XcaN3sY7eoY;r+ndh6^JPvf#OrIbVI&uDxRKUtzsC-)$9ch!M{E zy>#l^e)OXU@8nurUAzG1o{IYG+FVV1NYLkF<T@oEx#R|PTK8rsDJ97co{|(e^lW?B^G`nD|5kOFT!J#Y*?6JklG;CM4 zQ)5``S!1W{vhO!HjEk;qN+eY59jsB7JJtWC!gzr#ee&D<$(8%3WVYw!}5(QtovxgtQyyx5WopEQT%AR)YKx5*y1ruZYUXxd!OQO8hf>MJb zPy}6D6Igw>?M%*+OND45F#^Y#(%fkd*OfMQP*I8iEcFBGABty%PWufgJaecQ(_S4@ z$`_py*!{J#i{%jdcL!WDKjegoO2TjbXR#gfL@A;9Su0KA8M&8-P#m|svSsQD^JmLHM_B@~@r&CatHt43w&^eoyuRc<>i%OBo3f{&0@6=fZh5MZx6qe|0j`26nGN@m@;`&{0 z)h%h)4PXZGwsLQ>swcX*PZFBH{xoHg4_YYqw7}>Ijgj@4k2vp&TZ)2g-po0vr(U@= zuOv8k^h=i{h|A>XQx41X*IuH9F0F=BiVwwS*-5M>a|mr5+f4e_{NmRqODV-KRjm_g z8MP#Ik=(9EvEH~o_yL>NWby%X#H&$J$7`<^j)$lC7SADLW>0Ot7tCpE2+-L@nO~0^ z*}9tBc7%VoKYyxn`DEo7B#7{NkLO7PQru;WFTWQ0g+^2>G}0%i83$AGVf7~x(W$C6 z@EWX|?4pB?goh(T5<^N_zanG9@Ib>jHp<8R@2Ldsk?Cr;pAP?85EJT4dUDx&&n~GJ zp+mc$er&mBnh{j0qK18(BHkLJbY1G!@yX)@OLg@JR<}3jiCww`W0F|bkH_mUB_WG% zBMkDpz$$`|$+owZ{MGfx}5V{L`qDnW(*37NdA zk!3srKj|v5Us`8MaPfNJ;?IWQ?5smD`p?##?mWqKJMPia#dGrMSv-^?=*o|W3%afq zgW|ZK*@S-7k_vCcmAf;-Y+P#(^F??n{>FSX&z+Y)$LPBZhC!FF`cjhrLN`4x-VC@L z>cVYG>CtGZjp{U*PX=1;yh~@wze>7)nQyDkZ-rRuNxxG}PMNqKPO@6dwpLtj-ga*? zGd-b`ZnttGl@vO0wl#@eLd%SaqN`Z zsT*$g;%WSGdU{-gcftPT>+f>70+z5}`%rsxzH`%adcBXMhsLp22Y;HTw5Y9>Gy^VK zs%qjs+{3@UX1~7;YRNp00mL+p0_ayMp zQdUB}_q^28#Tp9@3v(pYRY&geotGAu=I+ikka6$l- z4XDGP)N~4fqm(&T(&Vm6JS&oEnDD@%<8!J%M7CbRePuj`4aQwPs+EqY6kBS;c?zVa zwe%`i| zj=-|*4kODWqg3i2I02l)DMUySg1z|l+|DJHRwK?z;H7u7&C^#eP~2QbSqFDc=Ao}k zZAW>2e>@mxlNaZ#@K&S9f$hU5`OA%{q{Bw!&USC-OooFQiO-N>-ut$y0-BGk);*4% zUn3anBX@}I*}GKl`lk1`K|_~HWYpN}bcqATZ%b#7b*^>-Y9Gqy4}Pa+0efFBSl!dw zM+9=~?c294p!311%_VvHzl%(Sptw!0U#8)`FHd%<%LZEq1qL3&*}zOmJ}d~#tVemR z(M+n#SfN=r`x+Vs+Y;WG{6ohF1^?WU%nylNxdYasrkRfuEdWU-X!d-j|;-2Tk;qsQ9{_36m5( zu#hie9VSjUG1yC$+4A{Z(xed}n%U?i&%zgB>K0miDKG4+_FnTF&OUG<*)=j~$Izvk z|6hy>&K%&M*4ue(*>fzdok_HrQ-cET!2UPhw*~UhFr`$$k%8ocn%^o#PYv!Ihlt@`@<~w?k;zN&)});fFib z60dvJzm+)cs#qH^dnY`rLY$u982x)`)xCMT3DMFV`gZM3^POPD1`+x`m&XZ8wjM+)bM#<~ucuIt{(|K20;$tbLo+8Q4cxhzs^;Gu_BER%Na9FDo%Dk8BL zb>s1Q-2MsmZx2^ZAfED-;&bpH3Bvk4NbDGJ&ku z`j;MOfbzzZ;pgsNXL-L?t^>8vpvyT!eMXjS6_fk$CPQlUlaThE>q7^)A?GCd^Lpo2 zTm!%;SCeSPZmmk}C_K2w@xjWb^yBrQhLqNlIk%))>+vYX6JHzLHN*5;r*HlaSa1HY z%bqwI@tgj;G4Vs$K>9lm(V7JJP-017W)QzvKUzZgMwR&JRYM5 zl!L!z`cJ(dE}+-?o;mPCyt?Vs-Cj$+^PX1I^_;BH`{+W!OBgUQ3N37K0&@G7A^W7& zglw1Bwa=ks(v|h*Sx`>AWx!Io{cn$4jk0MoZYIjAw3al zqS=o29xdRGJ6amP_`3h8*saFVIfOCsT+8SL!tUCyjN3#R()YMYwBo@{=IjKccl%b+ zy86d~OYeHAPSUtdZx2Tn?(+>fLIU)D-D6M$Z}7{{E%@lwCG0nEe!~s+*80zW`O@!L zDO=8L=v0I*Tv4sL$lVAuM$D<>>h^-ZUnpa=#Xs%W%AE)$g;#d#J~TMyAsnHRUW07aqymiy?&6w@7wDzBD{M6j};v7vk_WCTz~&_ zdM#18wgZdp(DF7|IK7|pQzoED(Z~(7#Zkcu9P(+4=ZEw|E9Z{hs99XF3P>yo znJjF;9TnZ)XitB>+2*6^cyUrqj2ResF(7bM)nMhfAQR^<;5S{lCur&WqJDh`n`aTw z6F1~;6W_9H!SzS~b$F=ZLoIRs?G?jFzT9^OS(5Uv%HKD&#_gN)=Z?Y@7w`HRYgZAA zBfZWJIZg)E73W$V;Qw{(?l!!3x%UeH;)1@-#uid(p@GnI1YEb{V$xP;`fBJ zB+C!j?$GtecfCeZJl}qbJ;1+$+b$x=h~UE z-`}1Hk+^qfg5Tvd+Z)u)gl7sn9ZD!1_trg#C|0}tb6Ei#**%!OjUFwT3j9QI%fyd8 zrD`uYC7zpG8_*Zn<)xw5SXV&nL#)k zE5`+KE!0XtS0B&Fa{_v_jodvRa$A6$6XqE5bpvkk(z+#19o&25-sB#GpU=2MVZFAw z&FN1{vchuYzwA9`Pl(Zchf2;hDb!1M9MjDZs{GZv5}~wg&^5h%7Y2>5T?~J$NKodH z%gkF#-6DDEMz;*MzK>oQt6|;lw((7!xVD*Ia=`ujaCHy=m3vogT>8vQX+jey)UT*F zT+;DWx5)#%9h*9Sz3y$rLF}^%XU@#VFQ4TtH)Da(T>Q4!Ikz8|>1yiMP}d(|Zg{AC z)5UM3mPIo?Q4tNd*0lwx#`u=ph4o_b7r*Av-YT?Vy1VPU-EmF}@HCc; zMrP|5UeNr;@s_72gTlMS60Z=YAFfk}&NZjo0WDZ(9FJUmn#)kWESQPg;%Q_Cvy&y> zdw1bt9^3fCk={lTFVN8>YIaBYETKrrLD) zJ?OekcC7sli#?_g=}0bjOBWw|?AccMeQ}k!c#bkD$XODa6Rim4l$m3Nm*yQ$$NPqxiz;|@?)zDIkyb@u(Ez3KBsX-dITN9Gh>cUi2$H^hKRdh z1?KKP4WD&m~lY@-;YgGdw^U<+umpD_d$LqKGRq1j| zn4}QFk{e^*J+6grPKwNzqlUz~H<3zyk)?LxvkupFGKB~0%7U!lS-+QPb@&1lR3iz> z^6jyY58Z{J=5K;y`vD{5WCKLdv5D(4=!_guC^^(2qtv47+CMNS9MI(#S>X`;ON`P&Jgd;Q!@v}?ojM}yGxryImT zChqzXoTPh^3=DFQnHO|NV^!B^I!_Rql^L7OvHc0?%wE3DT9oao;lFXBkNgG(2C`$O zA2oQnZ_SsiIS4#R47_vRf!3BnOEU?qtjU&!fbRIJ zNZnH?S1kIVq>bzF%`&iG)leC3UZ}{*dXO#j z(f5KrmW|>WU7T31Lg?RYO!OS_%K3}md3Nt^vF@3cvL0IN=GAhC09EFe!P$1K{OH}( z#OY0d2|WuKd}5&2vN(qZA8tSv?o6~kJ&!>oR;mLVY@_9 zNXrsOLoPsv1$q5S&_XWq$f9`{dd-YuRXtLtQa$&vtzhHZZ9XekYPLl!Iwq4^AS67r z*0>n7{XI3(0Zo1PgQ09{Fkjw+FFVa%M$hn+rq}ZuOvKcM;u(;6}HsayD zXol}$Cij$T^15+TLOLgIpB(IPT~R)?vCJ=pD-BWwdOhx$8v&13v{Gp&$a`dieQ}8p zQgzFmHI6=t639W{)&rV65i7g4@~H&y7nP+k8zE=F>&4`p+O%+09$$^>r~^9~vCZ_S zIip+#J7FL0;KzWoHxRK;99?;xRq2OE?bx53Y{EwT?`=liL5y}@X(WWCn5 z{@Q`Fr_fQ5Q>@r*#vRw+u$wtfVYf7g6y{HTTh8t>Ipy_BC6tH$xV7fq|LAv($i1+6 zlg`zGm)C|al>5-PX@fEi8@E;J9kBxXJ<_>Ply`aEcdEFfhUNu(BLPL*NY@H1amsvaS;x$XGL~F|eK25MKUiT6SP9?W~kbe>z0cg7eBojrHG@|^ z-9qI=ve<+k`7n%2xss(<{C;uye7=PK=UQKn)4wJ)yDs*04SWj9)P{JMi^?np+?tdw zk95CgeA=`n3~-6eemr;iWKva?3{2$uS_J25gv$?%fg@t*kq$)zGU(d$TmGHl#&#lv z{*f%Y`>2rfv-M!X=^cwp1Ft*gO=l~W(7p>-zWAv_9iGI&Nd|YOPOrzOKN#k4QGRvv z90mPL-6uNK$Dc!f;w*wzd0B@oh>)LWM|?#ua#_DCJ{_5ndhO-*bwPA|&}taE)+@F> zCg(oxetYynb$!3Ahc7gKG$Fd)tKV<0+*zF(16b=Q<72N6TePIqISg>Sbp z>3+Kit$F?76^wGJb*i~`$-e&9J_Xzbv4rIh{`Et^eL+hfg?A{M@;f&r(VdNx=8;RH zxX-#J)gfCuvLfNsU6Uc9H?Z&mSF<73R?Ffe#y#LMuoqnOyT6%!v0 z5nGq=M26{nV~mu$>a4OnIk)*-P;cp^LHXe-p?gao*E4m?NQ>I5DlO~R1_~&MsJt2H z?ya}}?M+W2Hu+_*b=k{m7^I!LGdWJT2(9ufVOuI9=r6yiI)%|YnT^z-$$+W%7xv2Q z{V4Ot)ixY!u%-xXJ{V+zVUI^gd}0EadRwg0iA;kiABIeJqs6YcN&LeWc+aa#R5CvH zbOXbK#Lt`xVCT2RHh5E|<@0Fg!6!5^5EZD7PoVRY5@;(5JGDjOq4K&x)*%kh4WcIrev zAW-FYW`uF}m`oWKJ)0b17fR!`fwq!9Op%8S?&e1+H&m{BqHvvW^02gUITrhv^}yja9#}O z%o{Tf9-7g)uJ&=kMs(h(+01Ks6EPa(=6u~cYWFTv<4noO^>tPCIPC0Z^JvJZ4fo8} z(Awz9hI2z}X`@f2CFXzsZo-Y5j98T?rq6IMz1C8`-R&~l{8nCVp&`*`hHf&dHC5iz z5TA7HwNRExzn*_+$hC=#gAGY(*E(tk)?%JiVnJbZw;pF4voV?fI4xR6K8a_c*EWn| zenujnUwR|>R)){ven>sBRtHh>J-gq3_8FFb`9SKk&ZpJBqwF-h>%KWK8Bt$xr|Wg| z9aXm1v+VAFHq*8e9b$TCK3Yv|!Z6#XpeZ^)%{lF*|C@z-vCTVN_(pe_qmGJ#1$q5H zRK0avQ}6%BZJ>y#GzbDyQbLi22~4G9qa_4}gtSPEW>Y|EknYY=6HsZ8PU#R37~M5$ zz<~SU=li?w$Ndiv{DaMN&UMapuIv4JKcDjzMt!RRbcBxmKl79J$%jB7T@JLzpm!XS zYL2(xEIR?Yj#H1M&KbnS08L~cJ9ubOxQW|6VA}dk-$^vBlGE&cBb02)L%;TuNJnVv zYRJIF1+F+IKIzSDc1+&h$_3#qwyv4x-jmSNNRk`&t}7P~3pB~XiQ&yjlZ<&WiMLha zP{usWhqbNk3DL-M&V_FU=IC!LCxd;Ve_@DvJvhet;2@1v^~+k}D;?bZ`M-Z0S-^JH zA2meb&OZ}WVM^h}$sme=d8u=IgP+^{ZTpRpLvB24pYqr<0&hUOFc+aW#tJ#C#0I8I zrVlf9LzhhZ-&vI`@5NqQ4#&2JO>C-%Lz|Y{n=9^pBT$?PeGSL#Pa1tE?ufHj<`Lg= zpCsjkP)y1uxb8H2P6{w4LYPn)MEfPH->8HCUh5WFq-JjC;nR-JkaNnbm1jw#k&X(C zafRGn?}Wz$ZTgB8Ot;P5xAzp^8b#l(ShnLkIW*ZwV!Svo4LubrGpTn8BRPWJyggF; zh2-@54ByO8I^@u)u^)uISNWOq-=VH+tsR}=MQJjp)-qEusqK~ZS*-RmwgNZpx57}} z!Rc$ef}sd59o7yoB1!kd1H@o)?);y2621mfgQt_Hj{t_oq(JEXQ*TQNgp`vc^h{;% zl_6$rAYMKeVxlsva+tv~Q#b0cF~5*@mCHNDb~^_4d0lJ%kWyv$)z7_GgX`I29AG7FT}9!q9VCqaekH?3_0 z@uEx(YK%dk`kyx+m>617WfJY3l7+|jbDl5;S7rm-CaL2=&sm>7-wuV`k&OMdd6ivP z#4BWuS8Q`c44C)nxmocU4Gw5N2HwEQfO9eLx*2(E__i;^JSEV{K%AQSWlcbLnmqRN z=FPQ!C)^k*>TLF%Ee>~R_$mq?aNbYs+ItW#^%{18PTu82`1}!ef7PN55>AB5jK#mq zdUy|`AAlOU{*d1n6!YxR?eKv`=GmG+k0jl?pMDSxD~r7yP}7x=!c`5n*%YB{RPh>b z!0|{niBXGh7eiH47Iph89tLy+U(P!2Rcv~L$ocDx%*zxVHUX$or*6Isg z7C{DIsMc}sSF!7A&5eWwGMV;}rI=K$eU3Uu>hExF@zVl>by$@cXno?tt7qxa8ckE5 za@RB&^6U`X;SAb$`-1*rRb?QdYxWMzZu%bA_#hy9f@RHUv8L$uv<&2NoX!X2icUvbCWOi^OXIP%Zp*aZsP#-6LhGYmOg3KAtM&0=zFhe1wjBp1)X2=jh zZquF9v22Eio#mOJ)GkMIRE5tC6mLav*w$y+i;$+Oi!Xb7>*cy$uLh-?<`NCElucFYWuQ%p^m8-RiynPC;64z#-|%rcpGz-0D3}xNNIc4jKNut zLCD~=+pO%4^8)`b)3rlABc@)@BFO6ve)O=Sb5Wo1MIP1td&mXThM|j*E7LJ{OQvN< zWNsAHpmCoX*3{hl_B4`{aywG?&y{F$kekGEhwXW*WfZzJ6S}f2*G&jn0{4vuOlalY#4K}&b>>lBs!9V5e{Y19$Ua%jZq*sPw~MRi z+h}X<;#1K1o*eApkn&?Cs*kU_22&j>z4}QTpB0JWNsSLCNiEl%THOdfrR4zMk2ZD| zJs8VF_GbTDZ@F)H@BG!N9;5$5pIW9$copAwxpMmZ)O$uGpPMAzWX=vs##QbpXH(8c zSnsg9QFu$KrPLVVQQr61cfW)K4{C0l6u|~;-*Wz)tfuQ0kgTyW$<`!f>AW^}_}dvF znrv1G8&#DW|HSBODDjjxskpYjniDyJ(CL}HPubK=Z(l26^fij8^zD9pfX8t#=CEpA zh`abgs|_D@^G1XzH>l&NB~fN=;?dflP>Ra|!&xx1-+XG@dFc*dx78mgGrn1*|Fv~M9>9$Wx@oO~ADa{+~}gwuCks23CL zi&*(*bfDUjLy8fP*}P4T%;u&cvGq0f?A7Z-|8E@$NL}ddNXtx+0j=hDhALG1uI-^d z{xVqJ`^(UAaY*+VJbaz~6N|xPo|o!+5rSrk>-+RsD-Tn(KvEL{nB76uE9Ss*V0_>M zx&BHo0!wX#Qb#<#IajJZz!}+eK+3`#cCuFzD0YpRGmVcj$&1KIB&!5x5XAtsF!9qd zcvVyOx$lX)seR@q-7lZ>=IDIy?S4DRfK1%HMcSqkmTuzqzVXNiA5Q!0R+pQYxow^l zHe6Nh2-WamE}Mby*x@7~>hJdG@0@Wl6a;LGoA9}g=k0So zBf|isI@wsLKeE%-p3vUW(f!#}eL>7}EoW7yq5j_U!A;su@cg1!dw}3*zTHVyNzGpb zL(C|O`z=B7`ni4q_>VAiO3*Zk;lVt4M`I01{n}5Bw$$j;y8|f6%|M&!>6H@A9s2cE zwL!gQIEs>SJ;iaQ&-mHE#p;#I9=rt9*28JFzN&D)ncSE^84n}_7YpCJLw>9keUZv@ zc+bnl)e@a59eu^rewc9^(H4#hQ5?4dM*i1264Aml$TUAKD^R;QqTr%1AAIieGyE(7k^Z|J-`KuIIO|v;I%0Hb(YHx~C z?dTf=xwCcD@XWB~u~2zpeZmR%`$DIIe%Z zdIMIpSVIC8-bpA)^@;YdE`yD~&b>x6Y*wX*9Bp3w zLQBa1v^~5u_G0`m!>^+447c92N8f6mciko>Utl-=4C53S3Kvk}FRNEWoo#%cA(JYB z?gu@qwQ1#3$$%3w-)$s+M8n?l5puUFHWRL&WS3#)iwqTh=_z~TK9Np3#Cg2361Xm1 z2b1b`aVDTRYS`XgoQ9l`I@=RYZ(*K4AA0QHJ$^jI!nbG7e{IZTp?$J! z=fOeQPFt3VRJ_PrjXOwS7|W{Mao4kri?=@u%(awWNcvJgW_H_y9lX1j;|QF61>AyB zGYg}seyH5pE+6Qr+|dtlu_QGF_1j!o zX{86(#SvtDwInbbccPlxp7!vkO4^s1pA3F*De-4vciS5F1Mb|UDM<{5=%h9~m`}>a zr+uh>xQms~36ZqA0rB~hb>`s#ln15|x1~(ap!TXQp(*YD=N@s7Y)OEuGcm;E2nEgq zlC1=~=M7e7A%+}CJyJ5c#`<;jDSqz6 zwwFI>vR96%^^B6)$tt?vJi-&jaPJo@?yHxoPlita>;0?k{u^|w(gN_-8=O01kFE#1$X8}G#?0lDX>?~o@nY{em(nO1Z0l+da~HYVsNhK(cZuWdxh z>3d>1Qb15WBNsqX0W2J)V<0^>%7p-;K0tfP@aiJ4wwRx5LN&F1ZW!4Bncg203{8c_ zvR6Ds%|ftE6%8+U|DxKf#K$r%x32(iWU|k&&MMPgZ*xKB$s6_-G6sjpgTjfkKdr>O z(T<1?VSD!({SOYmy$JdaO{;DtYS*3h7pml<0`U?V{?^(2$CZ`WkJvuoNEqMvPZUH& z#2z#?+T41V}vUjlCEG{)^%ll-EuP^HpR{r#f?BXW8Uw%mU~pU52jNOPU>m8dw& zQbZEsz<0#lp#}DByTr&*0?;ewJ^dKrLMkA4`zvDl7UOD; zUf=z;1C^}2DD%!@9!cEYpz!C_{$Db7upg)w?PMPHW_=5Z;Nq+p$@caUf8*efD>Mk@ zi0VIcmR$;V#r$fBxd1cFYnM#yNxZ_WYNlE=D*v+AK6E;;u_=9$!7nltMb=Ii;FhbH zI0^)Wbys3)gt{nRHK;z9teM-TzrS(NHDIR5k5{kt=0ei#7M|X@qlhC8{WXA~=u3Q? z=E>O!zsN$jV2Ob|f?`(gEC}QjR)_PJn;=U~2#JgHY@p>YI3M~BIdvw6Wxx3xLr%!A zJ&#)5%_GvAVx757)m`H8J}@avW*OR`D#f8l1mQN{P!z;FICSz7WX8$DAt_4qz(glg z=P?XiT^PKI%IzK1n%w@>E?#W*`q*>)qZ96T>xC%&WjU^z#P;t%jOI9~k*u+W?S)XS zQDNe+c!Q-V!{fg3+1=w|k8qu@47ZRH4Nr=As9xJg0{f#3vhBN$#KQ2p-3#xsdwaby zVf@GPhndYu*IC+L7=6lzaBymEHAz}#pCs@<@!ASwtH$u-8%1`Xy5iBa#6=K{`SYGoQ>J1`ijAeor2$}}MSDN%JO(S(Ei zcXvzxR$h;uZ-7uze9OFX?pusFC)x4>R;XeR!$2Vs-p9gBJw|r)Bs%Zw%~FdI4L{8%4H?lQYpA&V{!qe11cr+#$8JYk|Nc9ps|0-y81{rB|V$AgXf@$@q z8f7;JLH~YCEi8*z7yoj3lUL8rs`yPn+Y9IG_9(lh5^HZzk~&V5*|RKGtQD~ilan6?f2T^lYzb` zvq_bd^{0;l|C?8CLU6Rb0hPkbKmm`1Bh7fx~piLarrDDdV%|FWNp`ooQSuj1m9 zFn7!?JSeeDxADt+?TI|nU6`DputBpNc$D<)rEQv+R3>BySPgxgsTZKAs23#}tCJvt zXtz6*pqzz_{w$0I1$}IzQSE8eovA1%$}*}u8Vavq z_1fZU{GRH|!*Uub$L3bXo&Y%}>a%V7&GkGoFfx~QAsZqjiF@m&2z3^a4eDi^@!Or5 zXxYnRv)ALA{z-I^Ed~=#gtezr&%|pqx>6Ay=j|{q^%{L4hBJ^Oj%`BQSa<%?KH+SX z@X9diJyEbH*vEbv8_AVsS2^d#TzHB0+Gnm%ofoFQ32F@#K{hppD=~Nu-bO~xesnqy z>@aQD25L#%=0zC4bC4uI%=wx!Wm?PYW2bp`VEvpr5%7R@4S8o8=fPM13ERFmNs0Dd z@B!uci(qs8FoU-yX`ZyDAC&FUOQ6^%Ic9e8X+;pMGR4h;3LTLIKR&0YGw{JDv1@*` z1nj3%!^xbNyQwsIS940W^Zwc*)RXPj z)R>j{&0(iDRVi7|elkFr*t(5prFY3T`)mo?SnRj9cdsFUA9`j+ZV3AGJwQQ z(=vvM-BfHO_-1orsc%=Z}yeNodo0tN%l z&(8N-8C1aUJk$mhe?kj7@M+&5Sa}jT=VJV$C~q`sE-n=4q1h&Xf`7{|x61z=^;(?1 zYyINqlScb))%rShPm_{)leULzbT`05IqFeO@PiK+Uc~? z6>L3p?&hYBJZ>hEPE1|tJKrTk62S^|iuc0776W9yv{Xnir z@>3n%9OzRIUH23F9L3O;`Zf!s*>mrpi2-0oPnn5!@jYzIU5Njd&CPF4he8DITnJY6 zJi>QH(4A>I?b}uFvBkOCQ^p%Vp92kZ7Qz8H*CX36bG%;(YDvcnrK)CdAlWR$e6$Ai zrNt(>3!@d84uCv3Lf2&|aYHk8If^WL~%R<($o^ zOKXyTv+kx^yP+S;eWy9bM%5} zswr4)3*>#h&oY0djTuM@f}d5Zq=OFY=!+!y*njtzr7d|wzS}j*@H;Q7A<%z3SLwgW z;NKRAy3Un-xndFrpW#P9gVXO<1f$>Zkbl#F`dKa=@@)6Dt*WscNUZegn0##{;$xq* z9M9XLKD7%v;%5-ZOsP{uMI_ke_xk!b$xn_%eOv9Cn%U6F^nCi^X=1(Ft2R zBLO&ZLDqpH!8Bx5Y&-)1!2CiJL0Ecq?h?;;B62du1j>xeUoHL{DqbT`;4=j`pOx4O zGu4H&eL&txl^*Mjz&yLy+wzQ9A6^_Ux8U)C^jMUgJ+VHW#$#rQBeqpun?fI7&vU^( zvbdvm8VcXZ`mlM8fH-EWBiqvZx-gV4X*?}<{PuKDOaT}vhkJdlv+QoGFA!k_iZaYc5R^Ni3nQ1oFw(^4_N;c5x!`O8Tps0OyABbVD=lK?IOGKXbK< zBX{Rnn&XQJz=co0@vW%QO7_ComR}j7s?=sjEgBFs2CAy(HJnefO(He2#)bBkt-qBd zcgjx}xOa6}_*vU<-(dJI={7{=<=tFW;>>*_!S+Qi}Yp|mC*U?hJSuiUlbV)EbeCz zH$1sDV*dX9`(vVjST7V$>vtm$tnCevrM*Yz({|K7kRTl+ZIGqv9vPClCwy|_fVaQK2QbE~5G#;$x@Qtr0x-b&rK z8IWG=tp0J++N)`pM7l~@iJR@ia}9UlO}^@_S0y!8DmYezwa}V>8W+aq^kp1WEPi-b zO))Bb&eScV?xavom4J^ik56hLd9G{V6I^euoW*$ibC@ReZfvmp$sFnnqXURH=@z4m zQe>s%L*~}|C4ZF}9J3q7$uMuCvN~KjHYpl7j#{+s-eqn_==#2)huP`|U4&I0{h&KX zUqrCI&k2I=Y>50tuU_P~OKroS`_l2FhKUGOb1Q+zHz7V%_oZz4rHnkEzCT?q(Ia=5 zInw6iZSTro<3eztSXr0@UeA}7x>;$me7X{6%=MI-9btT;$<;{aue1t@5jxL)c^ElP z@yRBPM7TY9=Sd&BxKRD5v!nE>+5d`AHz7@@$I@waf3_38-KlyLH`@^HL^HWJ*1PL5 zI>i#C5`JKHi28wXH#~mX9{Jh@NyluZSNdeL9aG$dyEX=K;5vf$GRek0^<^oUyY)s4 zKP!5bn+F`U9An`!U@{Vyof8Fvo}1|D>-v#?TJfq%%jC?SI>P!CO2_l@TMts)+vFVA znW|nc#BGl2)KB}*1F){_^(`G>KdR`c%*Q7)#!xQRMp)z{lzpz?S5IJd^^ZS zm~4Kp8Q`y%5Y+ZsPo%_M8IVOQd$;4|>C9Qx>Y+D2mCNtQaY`D?Ih{Z;zFV&&qL;)r zGgStybbj3ba^YzKW+r&uV?KR%RsZNs$USMD^u2gtyk*zBeZ%i`<%h}g@6oQ_<#xmH z;kx|Crfg-&7*N=n%~lL(IE>@3=!l4lC|*5+PBe`Ke|_*MoHxO@L9^|IhY4jYtEkKQ zN-*f*J^S&HIM3gWtZ99+g%p$D9&>tW`!EpF(cn^H*0F92hEuLdMF0v6U>N1pC?5dMeHVbrq4tnZJijy*1~Z_mhhbl$h| zOmSjG!w=d}C-qHZDm%Uh&o|0D;Kt(O_~rLD{0F+Fst;lwUF<7{q?Iy;KEK-0%u(lrVo~$|(-1};d6CnezGZ*R?9pLw3S1!ivIYpvfiSl6Ko9#7eclc12 z?=Ck4mzA)6Kq+%Kv8x{6engwqeqxXuY#sJ-zNn}*#csHJ$a5anK(I;{}Qr)x!e zmA6nD_M}clZKm_PZ+k=|&D@Gq%P$JOp=8MZ1YR;^bd2$8e+Q3|*rT(N$!`8Fh1PYy z?qrXNZ_eynwmJ?*C9~f>Wy$@nu1lUblC{r>ms!4RDfhQT9g*aGl7qQ50M#5MPuK0LJ5iKiD^ zBzV4Iy2+{@!nUVAz! z|3mSaZpfnE{H}$5nqo_dhZoWN)gM=#V6x1H!*Pl^QfQ66^d;$h-DM`iPBl*YCj@M& z0kjDP;;);V=ZJlGzx&=k=jJ2e8h&Axk0{KtUL$h)nORR8acwJSpw_qu{T9%S4e3v{2YNS(<^Q%a*87V@Z8 z{@gKXMTvtyGtN^R!w z0a41I!}R~E&LD8u^xKe; zhxpkAe$S~2e2UAR!4fZ9a^wY0m$2;QyX$0ERDF_=fOqT}4mt^=BYfys`9n2g?=f$m zM$bsEi-tNg|$JXC{oCzGz)qwHKk0yz2ay;5jwfJtVrOTLq{)GRk|?N`@%l% z!~+vqlJ#RiBz}S(b+Md7fk!ymdCzCKS)OnY^KB>1@<8@UzOE_6-oWv1CAF*-I*g$! z8_^iJB~X&^*l3oOPdg=d8j%d=ufnlv!9?K#SJPP;_33B`@yvqwmnm~o-MiZ-rE|#` z(QXGUMt`zcWtpiwwb(apY@TqtziMw=;8sE|yf_AjRcj4PXzdq1TLU*>i7|woR4sR62-`Ex z+@|ePA5d9nwsH%oa$uKu|7UgP0q>ped&|D&vB(wKfhAeI=O)4RfTysuG<#0(wl##d zPB+mfTRjw^2xZ0?RTDP+t3$1eG!dC4m;AM{n7-uvZZ{?6OYSHy03sfj`+DY)VZAb` zkkSU+?^1<8#_7Q)_qQ*AHhLD}yA_)1V*^_Fscn&0!qBqBK!E*Ot$brM0Tgy!o1`tE zFzyBuk8G(ad)STStBEw*Y;UJ@hEB*BjeIZmKBQwjM5=TGVz=O*As(yW;a|)ZSNzZm zo${;VAsfOB5am_B-|*|Io)--9FmZ{;Ql$@6>xTR0HHPu8vvw_=C+Ng?vOmvzg>En( ztJPYrhd#(V`RfOFV}QFd8SSe5CE8pQ(cI~cRgv8JLB!JrRal8DWC-=g_I7f95OHHp zV<#uPSXHb&j+_}$pLUTAc5w41y&i8E$;POyNxP)6QDq$4933{ zm_QXs@AyU=Zw_7_iZttiH zlFi%Vv3I!pt6oDH@nwL}cgtsjY)MCdu9D9bd1UZmtEpEP6(7^<`FA-SIJSbjq z!&R2iv=pFyDLcG<`UOdQ+!G9(lyy#Xe_SVt0dGE+d$h>xGJ#N=k8SU(+59yDH0C_t zToZ(xb}EzdAG*DDA0I!zgWSRJ@^FEJ`KH5WX1cohR&imO-AO0f9Mdk^Noc&8MTXPb z#K#BUvBc|~*~_tpT`0#%>%SRB=zgI0YO%Pp@?evs@;sE6pxQowuQ+VpCF{G>h|%9a z+y_}p@Y6_!(|#7xYqxb>%{w{A$C>XZX*sy7t3SF23--EBHtE+$1}i}P9vq}(Okidr z7#qXB*LC$0QY3%ENRcYdziM}W_K*&JQD_9^53rD8iXh>yEZ}93pVC#iH{nTyi|_M? z1#xkv2d$ZERqW~cvFxcFv*7X9gE+p>%@$Zvw6cI}6x zXNa(fbWc?t%x!cmQQuo#3@>46SE_P?{xL9Jgr-ReQyxJjQ~ownF{Nb8n9XkM?>B0P z_0oi%VCn4I=1Pw{r*V`Vs51?Mg|d7%{Wr{e5h77lu|@Y)6g7MM&eFQ?4y(nhUvQ3# zlLKwtNVT0DqUW!Rntb{028gX51N|_1r;3&lKjeBtVbM>UQ>)E#}Uk$GrjM(@2xF2>j>y9fN^NzVj{L&>hcp z`-ex5tGxx8Q4iWlN(R2hH9c+aXbyy?c6`qA9H?5iBz%^?GT2>$^deeA*4>;BW2+DU z6K&jB^tKtD>49@|J?^zzMJxzC>bjC=$d4X-Ios{(#SgF#sg6 zvW%xk9ZcMwF%3D6!@lf|FkHcHkzbrxOHdc*ig%(FmiK*4J$LmgBF?WCe>vMZRef!8XeD|jwt~zqbvxW9d2<|gkozuf z%&IEablm@Ey8D|&-KCg_tfRSaHK_mrD&~WfZ-=A{k@rpLa7oDOXVl6MQqB~ivhbli zRr!tJwr$=A-T7It0(|g(MC;z}w(35~$eDKd-6jOd?MDL4TN8_Ji7iPOhi1W65@cN*Yi$%qQ<9wd+CrRV+=xSTwYf zYpzNG1}A)wJgh!bz-S_u97p2-3!OnbP9aU>lvWtPN}>~!i%uF3=i-~~Moy@q$0ZNe zhsj2R0Wh~j=~T|Qfs%3<#fl|%5*dou4Ix9nl#pXmK>Yi_-v>q~C&6So;C?K6u*petzd2J6DW;{>-Xfe8EU*IfVNUiaRA!g4gIfGn41C}+t zkfiW9j;)qV&D?7SPdVCC#dK7NaOM2wCyo-+2lF>ip2a^y1M-08rmavGFaAUGOK z^%&5U4Nxq?!EFHJ^R;e#xc3`Z?0g34PKSJyG{U)?xO@ly6>-1pfDtDt)G9Wf-i)@v zJ@=)q-YXo{;mNCCYY?OuYY=A^6`${(GF--Xe(K)cEnK5Sqk23rD^k`AAT#q7i4!J2KLJgSzJHZhU+&-Hzcp-9qI%X1pR| z5jpps&L&e1x~2IfZDARRJE@aNENb7Z%B1IQi4{)j-%U!`ayP%dwOLP&QJMZM%h_xm zm?tVEX&h4q$>nC$3> z{B^%4D@7$dPJBc^4!fayfA`9k5q?wD^F!@7mb4!KY@Hv+j7i#A?Q#Y;T6m~Osr`mZ z3AQM-Dex+N&?>Oz{Q_X3?mGiCq!aLf)}8{}j7FX{cqz0^k^dBMJE-)rW-y<9N+2DZ zACYoulG4f}sXU%SyJ3TGxY^CohRj5SGP-8+a2)iy^zZ4tB>Bl}6ehR*yd5oAGIciM z7$Qks@AJw>R0BCM5A?o3bnm_A5OijQ*%_`Sa;lTw%9) z%J-N!jyR_}ox0MQ(-hTgf>ELn25epfwD!7XV&c4v3S@3x?)w&5hQBl5h+P3A-1n=E zORYVrCs+S?w2w_M5DCnF9m{fUf?AsZq;86abwO{5_1`#9nUSh=yKYI_*8_mf8xWQncA)5Q7`r-o z{Aj&y&`okr8WkK$7ily?Woqbnt)=thm`5U=!B$@9A|U#)%bWiJ?NADvtFnlhG-OWk z+v3a;*1r2GE%>OY1r%KfDRFy8u|(rvVG1!nK0Aqyr!$%y&_HWq?6gdoaAJ#QLpGA3 zlWqX!@;>MJM&6o0T^&KKLOs+y1d%*Qz=Fpi7hM+OhkAKy*#^RZd_W5d=u67d3MTVu z$;M&MR;6LyiI+m3(lkdL2(z(fF&9V7upS9OZ`J{aqdagF1Ca{SC zF*3E29s;b90D2ee4~Nu62i`&^&)_Jzn|tjL=hba}Cd(D|0Zx<8A5I>7TA$Wbx>-w+ ze_(k2kRo5XhW{T&k{`eV$%rKZBG7G0g4)<_d3@?q=D)8wURYPl2v?@qb~pTmWRyRp zdN?j8`cFIL>?Mxw=Zs++a8za(Peq9zt8>06h$S5OthelMdyUv}H_j3);pO~CcKYJbU~%XKOq{mb|mNO?k)o(TW>lli-}fs z$+(S<$@kCDADFuN5CwC2@@z9klWM9$32+)=LxB&TxiNv&*{ZV2U%yMl0$=ktZ9$aT z!@EN!1*OSVUcfHLw4|AqPrA13rl1cvBKc;_nVzV}!(@FRMF3ru*X#nPBa6|DaXSW7 zTTH2{`$#3WyA=aR%Q28o>i~f?$nrRcy$nv1`xXe)1H5s}CZ8}s<-Db`kv#t-g9DWC%_45DrBnTOG?`2Z0`7wcz%8fc%*a8z)xD97O}( zL2k-*8p}@O$u?>tM-0hHM?BFRr(kLVcJIYC zFOGmDtN*x{4uC_VGNAnZKYse{wWK@9^aXPLAFpSmhKVmmJ^Ajn{dS}f=}ifpDX>?t z61t;me>?nYPuxEi&E=2w%dFgWAavgKt;`+iBK+*gGi>C=G@(Ie^_)-bb#nN}AqDo{ zUDMpoCzo*6syqMx?|X0;nNCD{Go*joY={(M54oWlHXcH;9`<%~w)~GPn2Z>v;;}BN!e{iLLd@C-D6*_6~evcPNnDnXLt7eV7gxninXQ8AEsfKscd7 z=ENa#fqSB6PRQ&(WGM$>zfVb%lTXPW|GA*)QYu&1cH`vStIEpC-&}D-S&d||Nt7Irup-(}ufYxYIA!nj`;dqKsW$cPOww`PBC6Q`^yy z?iNbJyr)OHahSyNo*!kT56F3S7j4UF&FSJ;be)^*;;%i#3iU3IN&RE|W-IV>95H_Z ziQG~3DY1_DT;U2wHsJ6t^HdS}P_a)5{XIlTcYu_*nhhngPJ`Exqb~BFm)Z}5Pz+9k ztBYt>_uPc!TLFMcvy=77b_>Owgl|OQ-p`mX&U;=EvK>^1)qI$ABqunaX2Pe0m zzOCngaK;mN?F)b%EfAxs>CTpEp`qDjgS$@y?JVTdf@&fjCg$#`gsOyiMna;hBXy#x ztqliN9v)}AaNw+zH1}1kUvvJCXieK~?vJPU3jTQhj#hcZ$BxzBE4}&sZI~ARwxYE% zN`Y=E-2S=xOfTTPOy`*CHP(o7Unn%vBjW)6mDvbhgah}Y`8%oOFSn@_r1a8+G}YqV zqbsI%YIOgxhA)YWN6ukaI{{y^%i-1W@FHd6Shx_h5m$J5-3kv{(~hDA#9?oLYgsUkITi z;^OGKFuck-QEf;*M3;B`M=AuM+V}-tbTa{~JvzH&2CE!uzG7NZZyV|k<)-;R{V$q# zg=kQ(0&oYBOvl$LYkD^=Ep zdGNDwPicp<(2ZnMl#M(oL=cV5ytPA|-icK~BbjjM{k>(^$zTGMTCp1pyrB%2233+k;V3p5`>h6rPcD}M&)YTF+V?|IQ9<|Z1 z?PM&n0MBb&2*GmAUUl-^9!8iD4n$~&7e!PG8Ge+PmrF;HuC1(_52mYv@hNgpjB~Qq z2b0eFY>dTm?MXDRY1+`x&T~#{0l)>a8fEe*m81I!q5xw$ec(tnumF~13I*(B=Ob}L z*#z!P#XTEN>n?|aq`2H)i@Xihb;CCfbTN*93)}0*vUO#<`s`ZcQ=_zg0@{Pa)&}0B z%N-E;y91_Rh9CKgb^~();~cTM@RY$}WY=~XJdwFpBLb{lkyi>)1jKfLoFc`s%40*B z*{a7BaCOKew8p!}rmZ6E^f(qZp=(+bia%t8>cYH{dAVZ_N~S69R+LZoz%VPoKyZNQ zsqxq-+ z-TO||q2S>d-1_>kDf~0A<#bcN(q1@a|Bdw;K%{DTR$Sta{yzn=7QdTG?)A1S9l6k? zzd5m5srFAn#e>U$-4+(<@zUYOI3(Z`+sw0 zEcZ>-9>06xcR$8UBW|^>VVpXjN?Y?J*jIQ6`eS8%m{^ptZUV*dC-!&&6m98XSWG5wTpz zL1$o2y#&R+kV&$NAjTtw!>78=dLvCEFEc4f>MfWdoOKB>B*vlv6Z4>0s#40O4y%>0 zro{{ViQ`6jLvEDnNPe^FOkvvK<)d3aubSOQ2TXGA7U~@b{-3-^nMT?N)N=EM05Ov! z31H2G!4cAk4)F{%Ul2Oe+T#Xf@bjg$&oCcgYpJB)ga9mHU@Ev2%*~5+kR*|0-#Y-) zDAVKu>fQ`iD|UQiwQ$a=u(~RZqUsRv5$S6Kf8vG#AUy-&Sq^#>tqA;n6~TsY-2MLq z^=K2oe#~<9>+dAd8fD(qSHxd?xj7*mOv=ITe?)S9K-|NZ)8nvND8ok9Mj?l=AO#`) z(o)=G0sJs($j|f1j=>V2#&SU=72@sMSjeT9X21LqXch5L`F zewl@4#9)adu5^qRznNl>bxs#lY>&KGqi8W@a`Pt{G#LTAqH=!H-AT=<4WM>2l!4{{ zNi+%6I=|sOaqu!rrvf(AOs7{TZ(72*R zZTzIx*U6a449YGt0rcnFyH7Q>p5M#8vqWZoRuR(T*VO#>1wL#85tO*Wq|+Mfn_ zz9ycoz4_1izrA{LgZbPI#|ORUV>DZTxyNA_Tlw zPzW_hEeI>;Hr|mkh5r~@@)+g$)L$z6Z^Wq|=hq6bqPX#Q8x+Clf7@y6iIEB7E_0mw zE7gItdO}YQz5blz1u;qX_;As49=-R+#?QU|yVtxr{eQkf_1<5`4V3e#Q~$e#iJ{=# z|27}@1eSWP~yOe4u9msRI4{~b-Hi2nD3?d16N z@j08mEQKxRfBxD1C-D4x^_KSzmB@SNuiHxZ5}C&A@8AY03Ou<%A98|^0+WyAel>TA z7)eJ@@6E|cAkpMv)!@G?-TH5(^vw@C=h~wP>9Z$P;G>_~&tAUV5N6PA^l=t6M_^8E z|52n))qg{hYwu_RH)fkbeTpPOMbd`2uV&g!<;WbJeAO+fzn5?=Hs-$-_J@OBW5e%U5D{ikPgu@$*jj|g7L??T0kiY$^)&+1Siq1*h7`QpWk|7zeG-T$U7FNUHGygakK zqy2kNd;HH9;L#{CDC;lO1`*T$w#V3r|A{3l&HAF^8!m-_9MeXhEtn{Wq*F`t=~Q$5 z?7!yO@!v$`53%97CWiCwTbTNON7vom-DzG+KRJ4B{6CZapPAf`tZ3StX=)_Tx50be zZ8nJbzX8c=ukYY*Ia5g%wZZboWx-hem3*rT25HC)EvwvWmUz68Venn7aE(nyn6jaS zj|3It=a8dD;X1k!k&C2M>kVuYoBV4gp9zY|BGI$!!i{nKvXQ(L;Pz^AfsNTT=^3$BZJ=mBimmGA&acniu{Y38pJS84RV_O{ zXm)kDnYm|(be7*W9YIQe_v4vyBua4AEu6;$dQxDf@G4&Hh>QMP*RFLh#qFO8>XW-E z*Ja%4MJ4r?i2ANc*u-Z>I(QmbY@&7R3^Q@8yi@q4_WftO+OYglplMZIm#GW6tLE+I z==BVrqNBoNzt<~bz7AnmvfCmjbj5Bv3LAiGUCSOvzSj)GKXx7^0gH%e4_^oG0?PDe z`)Jt>wfmq}x!Bn0rE5UMfzR4-vEM?x)I(S+{`EWMD8_onQ{EvSc1Wr8QBx+Z6 zQGpTSJGYyX=4nJjtnRFn&$F4ig(t&ccFz( z(j=YP&rbS&b8f?T89h8aFa>vV;&W43Sg-jaO=~djxboBi?-dD+talMyuFauZ`2g$= zFmgw1^{9sm{2YuHAOyNw%FHy02RaRxPP6rS0mEsM3$6VUwef+4(c^Y~x{;NN54>-C z&-PgrbCR2pe82T}H@y>!gfxY54ft#-n2OFlxZh~gO9lQ$ze)-AIe4vmw(gio4Y3M} zZv1wSh7-96o6NNgPqClzr(!fnRwnO9VeP}osjv$a&F>7J?RzbIE zY;a55#6xIlrouJTDR5{*E=ypL#Cmm~rl}@bX?K-n`C8_uhX`gRo-Z*$D=hF4Z`6r`k0h__Xj?Q}0Q*JG@7m$viO z6s}wE*+(*8kvHPf{9;k6yU^}oq1=G5z?hNMlNcU!v3?tM<(EfG)Zmz^TE}WPY{O{& zq2I@S7QrgAH{yQzXacEuY1uW-`C_5Y^4B7-jFX^&$K{806fm&Dg>>{$W`nw$$H*nP z-){X47AdS$$$!+ z3Ln)n=B>P}+c1HFTB`KAxda~^ger_9aMEaGgP>ggf*Q?EAE$3;-{$!DAaKI+wL)U7 z7cIGA*l_?k`*a5gDS-5obfga5cOhwxUM?JuEYUiJr$j9F(}mv$cYe0JAFNKJGIom_ z1!*+mWRSQ7Ymq)~>T37g6Zuc%MlTZ!>vFVE9>??LtvVb+F<4XkFtYwj4RGg3(6W@GJn_L|@9EU+x%D8SbG$ul@RqZEprEE6{5UK~4>rHI2u?f!Z zeGD$Mmy8rJUfK|^t!7TOdFk2K3?a7NR&_tDE$^v!eE&&rk|DHBrmFA{v6)c>B6Id( z6f5{aVm<0U-|e?UvDEp=y1_tjTEcX0g4gA0h?nYu$@I@y>zZ=cxRh;;mQEhI=dFAmeuyB5yj!?Q`8r6s`{3oZTE+^7_Pc!?2oa0EjaI+vCF`P+Jt^bN2BH4rO{T*G zi@-ve;Jyoc(0qlh=K4JOn;d1Fd zs>JK0q^@M{u=1a~F6*=M zCUy4Ho6RLe(B2n*KOgGO;1gQ*;j$H98kjd;uvTL&KA|@q+u7eSRbxz?pGg5(w#-}O zw+;q^w%QKvtPJku?ktp}H%&z~zigQ^}&A0|CD7io#S3Cd~TblOGE@e}DoCllPX=qEp5jz@$WMe;op9;>BLa&KI-GOb7iE z7+63iaa=jdvtd=KIwNCw^2^GG)Mp0QzpgBQ!6Rd=8sa(cb}ZXpW>h7 zPYzzEAogxWrLya1$hBENd=WR}Cz&?`fBZY+`PD$MxZ)++T8pl9*T{t46yogq8YY~S z?bif1Z^E}hR$#wKN1Cgg`6+Ah4A8Wk7&860DJm^>O>R%59K{;{Due(t zma0+dV_=oiy)Tv(WZZjZdZ}vjYKV_=P{$QkYaW=g|b_*69qQe62Y#)QH4z1-v z8{Nm3#QRydKF1{xf0jM8EYTOg*IeVe9)eg;F6*}vgyNDaS@cQnUb8Di0j&)4sSAao zxXo)@Pi{NaydH^7yEMJCd@HfF@p9w$2JD%mK4>ZJ^}~zHV8+J3G9*S z(Jx4g;aKFq)CTni6qVHmO#?(llElv@WLEqd`KpX`&hG#%6{6n z8db+Kf&03Z6~nl%j~b|&+!S>)R|&UqIpJ?v6EU8`oX~3W=HwZbnV5IJ zRp2GZ2dH;AxLJjINmQfxr}+Gt@Q7S7z7XqbuuAwkd?*r~>`aYK9^Kk~M$YknO{lm+ z?w%lTPT8mNa7uP&D#av|RV)u4p2pd}-PWypU>O({$;4usrE5Yj&2OTXvW${`hN)*S1QywHfpvzW#X}M3Z z?=y9wy?IJLpPK%JA$qH1EPWIeOax58j9Xqq*E_!Fb#vn}_Q z-dU=kps?$JSD^cjBWjub723WFGlk79?;O;toK|neZJyoT67sd(Qr(?t%!7{5Etj`Y z0~)ks%^iqHCnxy;rUI>?WzclYs=2qIFXtL&j3G8TK&bK)78QYg4r4NwhE1I9q-dH`lVcjUh;(;j_v&Qr zK@IYz4U-fk?q+*oqQ7c!?7ql+#6Kx{H5+j%HnVmT5YZVgM0m+3OlOjsc-tbGeU>f@ z^*s?(k@jf1|H3917=LH?h1Jr|Qku*+5n0J^Mb*aM=56?*k{e;tunlzy{_S*Po)U?R z?cOV~l+u^sD&n`XB?;R4WFiVs%TRlsd2{iYDJ81`_Ox+2ded11+bsim2V9fTnsPOZ zW6DNEQZXo^1|KbRwK~PQZp*gSu+N?Ha?SjTQ1KgLc->EK(8_uC>UqAskrYvgcHga! zy5!@5!Q|u}?M>t1r@3X}c2$ev*UGhmFsEK1jVV8QFC%bbs^$UL5XeS7cRWlB1Vw*w{AEd$*RdEN}DT(`13McHc^{7!3 z*PyUORcCLQc8Ek`(_m9|e;FNd`nu*)D7Gej&Ov5o_V`M+=H&Wb2<2N@l#Fo=*P|gR zYU{zUkA@Q7(lbsxEJJc`>WzvkM^1iLkW&TVfHx&d2gkYZuZH1X2=R3CHd+z;BzA8Z z4_9Q`{KXgOJBO%M5c?$q5-}2`3!m8zY2?2BG{OHOScA*_6Fu~c2ZDb(u{b*@1|}E$ zhBaMranvqIzJIwrX1CQ&yi#CTNh5J?e_$oLHh1BR)+sAtB2C2*?shE_IzYia`jdvg zA&^teHE54w?^7M6`nBH95Gmu2Ajg_DM2rXo5qZq%S^>G@3?fcv_N<-3J5N@|oo1h{;mzcCoRC#V2UF%2d$;#xnZ;2>1p(y5;_afr)sES8Xy!RkiMmDwRxM0irgdPhJgv zde$3QlSC3wQ;<0EXl%Ttv==lSz~&rKp{Di7;Hew`Is--+-2w#N+9``fj-QO^&LxL< z-f~i~PsEL|m_T6O!S0Q8+Ke)b8DY#wGQSv`060+MrFP9!Ui0=QB|CDeKVRpN(s+HD zkqthSFGS~?<6GU>PHNinrynr$4RoKt)r~cMsXxdx71bw2@cY>U0~GIQ-4Y6K1-$r; zNaeG%vr%hXy}muKC6(>XwHn*|)91t{OQV_0xLdEKQf6Y-5z@=m3}f9uzO@7StS>QQ z2x})@P$T$N^ZQ7N04-oH1s0R4Ab%9$$W7*`u%&9O#FnR4H@^kQB>=cszt^8K4B zp6nTkgh`7v%dz0(V2OfyDbWbfKeHu&j+ zVL=&Bv`cixmqs>WjH;f*)SPvb1XUZ@*zTP4P?@S#Bd(_Y6BoHRiL2SQ&It6j@1u10vROFHG!QRFj!WAtV^>mdR6h!&?AMK_FL+k6Z=izH3 zt&Z_$b>26)Ji|@lpIs5q^R5kw7R-Na+&E6tTyZt!h!HaxAT0^$pr-SQZ})^X2Emrw z{hYrZL}rnLy8YTx&+RF;YVq$@;f1)l`}OZDebfW5jvUcv=ze>LeyKt(~mbQU9TAbDoBxPihlC6(e&g%7qgn>1)j0c;SmKPOn&X&AL5zoSi6Fuq zW6afk<)C6Nu4AX+geh2Ly*A zxfXn}U2O78TA%%pdOVT8Oe;CJhkf~?q~LFuj;{i5l26F*d|X!<5VdgW}d#L!9Y z{64e|b%C^EPB9jRe6@1x^xzmL+D}AfpF3c9Z4NaV?-l8J(7{p4oiNsO_~o_9XhRvd zs-G_+=4Yd4f)n`WnCX@kHsiT|Ab3deaasqtq$NQ|eZQ0Z%J?S@)tbz9lei`uzP8Jv zkUeOB$?p4Zf!sv##HDSa0je9l#RowQn@68kurt9g3n!lWT80&o>NdFr@iI@|>>Nj= zzpx8&nS>-ZVvMR0g`~I-0d?z5`dsJ|^;PJew|TtbdTnA=zppZo{1Q=6p6TPfr*n(Q zn_>|pMI5x5`FeSwp>0q>c>v=r?-J}-+&G+TBNre)FH1Luc%y?l)izy~$4gk+Nq)`G zi25n=__Ri4R>56>|NSFi&HVo1q8Uu9eEV$`pLGVB0+qQi(3>nS^Q{XaW)O@S_J(fx zWP}+i{W_Px7+iJoVovVIxhON=yS(Y7d8RR@M#KQ?3{id|BBA70y)I|!dCN4m>053k#=zwbRfxd{VqZ$uU#P!8uH#|;(V zy*TG!tlvn_`Ph8(94a!kV*Qhk2;7QSHv_4+0(}dDx#0bstC!;T_C;00KvcWdvWIiQ z33Oxta|~qOgi&!#Ci=m^Q~0(P{`KtiwCRdf5r)^~I5$_0>*bj3g_EdVHh}#7puku6 z4wFWYZkge^S*)d9!`a?AiFhla0 zOu^bAv@_`4s)e<;u20(0~&3PQw9%hQ^`gUE8c9odyVx@vr2e%w&zGWsr4ChH2Nq z=_e`Hg{8YW#_@y=JF{1`Ce0#pbLWYa-ln8gmw+fb&w+tyzTi+pmUjOqIDMFH#)MVR z_Fj%jpLQN<^b7R2&wIY*qKn!ZEkpBqlI$VQXW#)DX}(qMCDyECd*0?!ytFen;EGd( zYc0~}Qq0%^|8L%JXkF{+0?WOI*c>kqm7)%zr9syBNBh(%t5sugVKfDwL|+|C*s-6L z1+t*FRX4d`a?gUO zi=ck;ZS*ZmzS&&>m*iQ1U0jJ3=ZB#0+l;y*QAL#55(Bk@pMT$U@vazM*j&B4nyvfo z-L@Tu`X&t(n4arD3z|LfIIk<$Rba9|0ROGzswSWlW>@9kHs)8}8eYzVwKn5JywR3W zC)7d`-80qhv7Yc7?-(5|xsLg!Z3;73n1hL9#Wp=M0~+5Ju~E8)oEZmVT*82m{;d`U z-{ufvq##P^6goXfv9f)3_g$Rn7&KAN#!{%NYX2qj3BUtc=8jC-z|4+ui=`L^MHF%s@mC8eHnPAMc zU1n#JYiIwuR^cL+6FzcdC;F6}{0lSKPUxHuhY~-MbQ_#+e6I7aN9@<_s5|%dtuQ0t zA6*~1UCTlT+~;&EJrb1_ag(#d(|@0ANbQNAz<3y-oo0 zqpf9!m17J`-F@2$^4knK4*EyGWHRrw4_Y*oV9ABu9jw~z$(uX0AC^x~Tr;D+g}-4I zy3>EjnEzqVaHCHQI=O9#I5CR82wtQ;4=(cxe8AnB$n11F8FYrs-s%v~U%<%fKriN1 zH;K>1`>C7o9)5|geKpXQ=$_7TVt@GY_$3ns?!(<>(x(F@zm3~hPDK6UjKBSPB@g>v z#y?>Mh)8#db%vnwHst)U4#-z#(HW1eFH46`m~#1w^yZJW$L|~Gtg-;{dqW}%*HOk8 zU)OPeyevV#3adug+1gTghrTgunbP=y5k0gOz08Q&c}99xZ)G%PXVzX~F4F!)+pdj{ z%wZ&Y1YynH=5W^OQxJ=u#`iq=+|59|~%8TSt#2k}^{V}I8%-uU39GU(w;l~^{DjKn6#dByW3Ld$8X!!+m zp7Z+g!=s&Xa9qbFsNNc3NpmSfWd0)fo>U}C5y~Q%P3FODP|V52qB^${8#mqfvVg3( z*UK$T^bTb1qRp%OAF;`|CsW8g1PNbR05-4O;_{wEp`_7CgI!Ur5tWJ|m8 z$x+j@bbN9!{WbgUIc`fz)M8cVWgMH_(@GUCw-xXCk~b`xWCGl<9cq#3P?PTLuiMgZ zl(T%bCFblxJK$gL@eW6YDI{!h4AMa_MWCcCcciv+SDm-8TZWlbvleA9&ofJZl|ElA z-_x^taYDCWEAO`spe}CFg9iFxtJLjmU0(4yBsMg`Gj8u);qYwqXuI|sRymdm58Rgn zPc}9a9xpQAgGh5(HRdme{ABJ)X}0{i3aOy3UKZkS%7!w{LZ3!m z>c&|6X?7ip3G#f&Zi^JQ8oz^sZ_ARe(5p#&@)_fMQ?hP05?LP(9Aw!VpUdX3^s13v zFZPqn%1T1weMfK%>v2WfTvw=}e@ZyHxHO5Zn_GvL_rN1}4lTc85?tTy$3T|U6y#5k zl6LCglRlM?kU)Q38CDm|O92SSuj>pUZ3N`8YGhrL4WS8Dvo>C@D(; zfoZPDCju=SFQyAO<+^7FrudjX)E4{i%B3w40%YdMI>2tw!?6gO+)-e*g=LTDfxkx3 zfI`A+Nsk0>CWY-EH4q4U_Z1UL+*hwoP0VO7z5}W;=(o~=HM76&6iwFzOpzVKByca6NtmEKh=&*MAoEFr-nGB`bSw=vG<8< z%!+cB?oX+`=98;65<&IJGlIcd?M+%!5MbCRT4>tpx@DX^e%J!~O_yB7T`x2D{-@LQ zi)F|`fv6Z-#Zs`7$#uM?2=P0(nh^-3cwwRgixGr-al^ci z?M__`^Jw*B$s5k|>3#g^(;Tqab@ZnDD z=#KgP7Gu+Bk3b?4!iP1IncyM6G5yXXeuM1HDOA~Eme!W~_WN^4*ZBCJF#kzO)t$D; z{0ywa;P&(aD3i@nd>38}VWaLHVNK{$jy6>@C1kvJTJQa4c`a%uEIYGS>p+e$prfWt zbB1!stpEe%U>kLr)|VRFD=F*RfSd)d{h6bc2K6gv-*-#bId^3)48U?aa@@$dk0FKH z_2975^T4*#Z7RFcXTn0S-aVQj%$DM80v8cgZNKjsQ#b?NCp=51daRNT7X_;q)XvF4 zYJ5mPP5mt2!>B)3{n-*+k*=bC{2x$w4*C;E2`Z{x-Lf!H`9PQSiW||a{X>8OGZjgAMMZQqB;~T~Pufj=UV8YVb z)%c86Q%p|VW?jL;%SZCY#h)p`gWy6vz^sTj=+P=HFg@NCbV&T^W~R)~@4AHHLY&@$CP^(c~&RZ7^a+EvXV# znL~9A_uSWaOv=7FKrzeJM$WS~?O;&d-rK(s%-lifTT=HJ*^n`*5#Bvh@ld9)En znTraC1~(}PMV$Fk%^|Ig@LyLSZS7S2GQawQgifq_Ajh}vUHCk3Sz7C;CwUkW;2P+_ zC?8~EPMgu-1Uvvv0j`6Js^3br!*`H^IFClhn(VK}_AF0bbhTBbwsXL$T*U1;l zKy;?lOz2dmV!9VhTbj%p1SG$bh*r+eeH5YwCX6y>bY#Gc>tN#K1~hDI>yI*9Ue5a5 z3j|c8rFCo9kT>dG*zq~?$t)AJ|47g50$=Jv^6f3 zviRQOXpsC+g+I@tSlC${K4`jfCzP#F$e3Yr-AJt!bN_JB(pQe$(B$C4W~qT@80a?o zjy{su9S3N$)^&+!pxgX@0t$0nW2@0~B^RW4-1OrT07IVoKO32@`#oXSWejJXP}ve? z5^VYD+%5WbD&6nUmT_<2jYwV6zRroV*heMS4`2fPa&|9p3K1DDbWKQ{uTbD|{pjAa z-a!OXf*+C^YJ_I`Cf~3`Xvu`Lx?8lKlh@U*t!GJuHcj8je0q7p6D%0a_PUqDcs}0J z(Or+DGS-vPV&sFRU-N1AN-clq{SYq7MD2$r#OE5anPm_`WGkK4*#*|h;JM3iH;}g1 zzT1%IR(rcwRJFxz~QqxVe&H z!371izu+1R<41N)G&1Uvyp>6X&8@dK>90tqMMy6BH-mb?S+S`dGYD7>K#9a17v`WXQY`Il}U$JXZCzRog~&XVosgDu85=#kEte;sRI+|!x*Ujo6{+SI1q++&;4Dq4S)(w>vuT;)m;(XFrb>+Ra5Hu2@U){gmG)CyL>%NZ?`1I4r z7L_=!Z$1Zo(TF|;S^FR##0_SYvF*R6Lmo+x9slsylQVhv{EV>9?y(&n`3>{T{Elo5 zP<@n(#x?m|=guDo_4OC9rFBlEA=O823WK?p-7_BB?`HNnN@15ezx{OX$qQ#YdBA4( z!rhKv3W&U7vf-X!)xLJ($5F0fOX{RrR*JuqfZmroiXBX!nWLp@IPy2g=qj7wdAsfw z6VhJ(d*@+7TPYbJ}bne%kYl{u$9UA(wghck)yR?EDBh+G{JRPv>LP&{<3$Hh+SSExi=Hq&`WI@ zK2}zOj<)()SoW&|oil!KO{2VWmcm`LYafoz%~WvW4-lVM^O?qatO{<6$m-9ZdkRlP`9X1JqF_ zHElFN?I0x|0btE=fBuL?zJ_ueTq^x8VdR^qh)dIw;!6&9%uK8*NRR**)T?Nur4{?# zOWnQ8yw(>#nd6XeTX!nEs-B=b`~x%!0kROJ;GY`vMJp2*0t(FzBXc^$ zK4ibXb|Px9)n>|e_(g-c-GDSna;u&Pyqv{y$DJK7;YS{EwE~t4o+paLlka{!m&v?s z9c)~rL(R%S2Wl|=VTcy^$zBFKj4|WMMi|jVHADR&VnYZpzbtzdCq5Y;-(a0d)ggcI3juog|79Vj%dL=2FMPv*Tv)-XVfc{%0}i0K;-`OtkP1W zG7c_evTJ2yF*kg~vDznw$@wdjw1 ziXz==E*GfRImshUKhDAmwS0(9qiqmo(g)rss`Qj-{kVjrgK~#+odr_Fpk3OF#!Lbz z1IaEDsAe5h`oi>LpY?89U;lRmq&_!w#QzdQ_IiZB4%*_v6;NjnU~;~8hb6_a2GqF# z>O~^L&S_}}(80zK6y7e|VZ}_TZ?9Pp7hUXEXUuX;Hq%Y=7DD!=H^Zr1yH%g@>BWqubgH7PI}V?sV%*UnLJao4GAdUnEpN>z>$3NnpE<`#F>0t=!BeD-^i$Hg?Onk^JJP|c#oyf9h~FSy)1cELN-CwE8}rlVcDSC=d4 z7kJIAnP_ImnbS_VoV5W{b~L}5>jwUptq zBRFPf+)K$i{fHE)$j*!mO}6n|Bd=hO&Nr$R@yO$ib34n>IJxy<<;ID9pJ>WKlTzU(Gt)fviGH+!W#9bMrf0g*IS7^a z+uV;|0gsvG3vcUDCxE^~$JP8cB(2K;Y4ntcl}<*yGo77$OYE&X=hYKF5wk)i_?a)@g(HqUtQU`%!mHDxlV4P_!!NFLkF5Vf0Mm$Lg;Z z_OqcY1buL!f|^Cgn~R3EOVT^cMLBu8a+Pjv_Iut3({}xo8Ya+7G+PbqI&ljetX3O2 zt%u9&p(|jkYbl%L`(FkqLb~2r=4(9r>W}Cla|BmhtM#(gL^-G09d}yot&aI(7ST%L zIozSmsa9LuD@eCUpGGFL&9>1xC&^lQa(0hB(sH30IT?N=#z%${AzhA8Ij-7;L547j z@1mBYcb#NDXP-DyE+kbE+ON06gpfQ5jtR>-Vsw>=L24_Cpr#cbN%W^TN@S|22ApVI z+IL#g!_?=6VV|rkjxF;r4@x%7R7k-i8#T zZYuE7Y$vXr7ZPV|Wfczk7f|pQWI@>BA6Uh|f9>Wa7hnAYm-q)(@#SAI!M_NAREd9( z8vmjmmfn+JW&Zu|Un9L7{1;O2FBCwX{U5NyKbQlg$CH1-GyneF|L@7T8$Am-jlFHz z)uO|u;3~2cwl#lOV<71&+u>G;eZX(-x}~oqcanm3o_C?3QiT&n=jsC3I!*OgV1C z1X%u*zxAs~7C!*$Wu(Ut21=g!7w+;$@*Y3Qs!gRJ=XG@8>>$k2a?MOsn(vIM%ZGD} z+GlJ+T>hL4>A`QFP-{}_kr%YXGj#gvzeRo_!&Y80>g8kA@Qal4x>3paDR<|oJ6-6m zg?oP$bK^&NYq)w_%E*d$_kX_%ef1AKrpoX+^3N*1>EQFdwnZf>fQ(Sg-r9vL4c)!u z`TT(qUig2h{TmtD^8_MP7?@Jl5I7*K)RM7kx#7t62NF`VN}R*K9hDAYIa0`dFv# zO@2?vfOAbZ(oOkrsro4Gq}K458^q7YoMw}&y-gy?1z4*QPMnw;igc;%j;(f?y0kUm zjn)e`pz-icNWwyfxi@Ozx83&itkv<^@88)oWBW%SL@=uQ)AP4pT1*dVZ$9FG__piQ z+s9ux-}5lP&vkZ?*GY}vbWOKi6 zyN0U-#saF7g^a#UEvp^=RCb^_Ppx#B^3R9f;PJ^JhbS|6_;AMUVk4_ci}Drrx<&Z_ z$&@XT_I1P+>V4MXt6#Z=18F0>y>N0rFI>J{b@9`yZHuWzX5KYV*iBo)UBQ@)^S*py zV1&+FvmdmvM#jw5SNXD^WkG5y%10Yb;~^CRvXNDX zxo0~fXcyB23tv;SSLMk}Rfuzma>vX{8~i2b*ZRD>rhZ&e;^xHx=#&oEl8XW>TBM@h zf=un<9#=}ZzqXnhYYWOWYO5_aaAICd+P!=oC@2?mzl!GVlo!qK{qH3s<`1k^{BpVK z9pj!n8sJ;M$URbMyy)^WlCU+H87@D!tN^HLtjMi0Imx|QI|-ZiQTbbrmpdxLIue`D z7axk*vUrg3=#(#_bqiDB*d{DJdymYJf@W7@`fb@?RvtTVG>(IfL~j8ULPyH88i0lQ zfnK7=H>F8qu|S_3o9`~t!WJLmRUKe&DthDPIRa~0m^p~_a)mJF`_ z$UAsWl^2Mt*w}FxH$2e1B5?dL;wv2~sm@1$*=o5}S$vnv%bvOzn%CB8QKXk@5jIMT?(H2`t!Apk1aSy=hD;?VsnY z^ix^PxAmSV9Fj`aTZ@f*Kb*U2mT8qoHxWhJXqq&}{>ODIb3>+IT znU~>YRx?}og0v|}pTARIz~88w(6-0(CT>`ILGjY7eP{Su5$M%OPCzWY=tkMDqM(J0 zkGns=2r7d6=i9yeS5!7GgNJ9IRe4A9XH_mr0%L2l+afrKZWZ5|Q#}DUg&(C-eVoZmwD<`8x~QiCaUax&R4uXB#k|(xsNF&}CSmkl_ju`u7o$N%V}o`*0HpYr$V-exPB!!j zic%k=gOj+HQNKGK#;rKTf4%uwbsh21y3F<eYs!mk`xS3;=rqX_JHb(IWKnv1s7prihQ^Re znRu96q`)(Iu^U%pXrm~W`^-z~rrjJRK`{&e(!IUwY;V1XC4V{NQIkSI==}NGLz>NH z&MXE2zF6rN#GU2;uY2of0bjU`s2JUQ|6zveizZXElbmMDu7Y~;eNQxQk0U!&TC=tpU( zyXX!N7M}TTP~OGRdjw;onwUU$5{vWDF5X9e4E zr{2UBIM?PE;BL>W(T=%C-+kk4`H<6cmIwN;_pylh<9!@@0Et5U_ZP<88CQ}&T-yBc zyMIrWAgz2v+1N=pMi%ly!o<1syX3yr%;j@e;=HAtJ_jG?&JWy8hlcgK1STgdaTHX9rISM=1dE~-1~8T;Ft3vXyJM1JYN2k0o|B=D0X0>)No!o;aeCZ-?P@G* zzePmyuinpTJZLUAv(W0}^LLM10tgGs#$q#(@)wG|na42aU+KfLl)k8@UFud%zG&HI zMo>Q5tCXCH>V|tB+E;zn^ZQi)>MtQhxe>}KE6COh4*pVo^G1~FO-6-N=x&)`%ThOUU$(l2l zZLIeyC$!B9tKEo9M6F&LeG8%!W~UUp|0rTijnx4OI4v^=3PSN-bI5&bL!hJ%jD;cl zgbBWrXU2IAH7*qm`YU?5Oetn~ld$00LPf|Yy?!s*gn_I+NqQHW@1q?R1Z)3`@=`0Qj=;uxa2$F9!nXOyH!3^ zZ>=}dI{;xfF8%qimA*S9NLkbz-lSQ!uM?b8yJHX|XWu37o6{2(G6)hxovd_zygIMN z(W7K$Zd>8$5Rv?Ct7YQi=QIx8s--L;qDRQ#+}rPG@NjRgthW2Am1x2Ctd5OkM~e~s|nTacEp zXJyG6hX&gESBlLwTSMAl!emvTh)cZ6WKex_Ji}e?m(L&)sUd9$&Nsr}uZBPsUy*)pnNuB|5V7 z4uOB9cjGG9@I9ogBifFPgbH=NdWTJf7I3exx2_!4SVAlEJr6l?K8uY-H|`qbMW$iP z_rq2X!aR>{OruAa{Af;pxkgd{J4Nj)*8;0p?0kHjZA%3Gj}lh*gXm)Ji!mGY$(-^y|Udp>Et8K zuF?DXS#axg*=OeuP1wd-&SOhGPJSr=KmP=c7jn}*Iey26=M$HH$f(LFa9xA zrIUcaV(rV|Ivx&SMEp^W-)uWZd>;V6+uIQ+((4*1>TRyz*}Ja;o9$#b?{&Q(Dy9e` z8q;TJs8E~feZ0Yahili@;Gs6SDh$y9*y=vrzn_dWqO}$cY*Wps8>2ma$&asJy(w(V zV?6*rt#iJ`l8KDAa!M9+OHWBy^Fa^k=ag-6aY@ATzGzbQ`BJA5F4Muy=c+t&N?ci1 znB;<2+)>@Z{0tP;O!dEba_2$<6PQ!SK;KhwnUNLk>p}bIaMaQM@YhHE2-o;m(seu< zZilbT4th^4il)k~>Qklj!!x&8z1d!@$vqaE z%%6lcI`ZfFm_52*tzC95_c*MuejO_^Ip#KM`#iLr>A?A;Dbqg^BXs}S+z$kxepbV6 zdQLPz0cp(3_ay5tC3Ap_3GH?@xIOyPIB<@)|T*w1A&A z8Mwu%lYO{0+16Z|qkzfx^C-z7x#Vs7o4LD8vi?*TDQ0Nw4HJ2(B z^}Woy%5})Ii|k^0X@vX@NDqC3(dhYqxI4>+Hn(PBmr|s-yHlja-3czm3&q_jUffG@ zhvIH6?(Q@YthjrC;7)Moq zYOfxPTmEQ@4cbzMlod-emwg6YE*jXPT&^qxPiCC|c}(*gld;~jd*gL`a1PWFm?q5u`MS+l&U{qanUi83AP`%q==;T0KR)pMHA1 z%g6e?nrJ}-P|K+zC#Cthop|}E+E35%zxpKz(=S`K{K9;k-MadOCN^ARhL29W-E1}f zVJZl)I!E3+0A|<}XM9FRL{R!2BV(zAfkH9*{61ymb!v;&SGWO83u-q<#HlHlcy-mt z$Tm&iW*S_8-l5agr99b+2ayf2l~XMQ|MoMr%;ox1;#WLN%H6}miCPJ~WS;fSSI6FF zk^ZTT$3`p6{2`LeFGz8Cc_rsOU3yckM+HcfIiCv{Q_IyY2_Ir1)?gmk6&k!u=ID4I ztGZZ?#N2n(j@CTh5HAus9|QH6hF1U&P2m3?hxqZg{}*Y&bORJ0`X4*<*V=?~|Hl#h zt2rD$si8stTA{zM;ne8=F_-^@{5Eor|9uzPR8I0g*?_;^q$Dh4_`hQq_G?5_|4)B3 z8is$Dq}QA>Ga7nO>VtNRkD|2PmgSc40bamab76n+k}bd2J3;}%FOx+$n7AP0Uk^ME zxuPKzv<0m^n`@0f_YdN^Ir#E_lPkO+;fC48nw*%1nmJYO&I=y^xfx zxke#H7{!+16GG^F?{YburW6c`+8Ys3pjH8V+5FugtrEgJ9I^o0WmF?*7lzgt0c7MC zNqi}8_iKw|am6H;@mhwCIW0)BXVxBRnULv(Os6BCA%ze z#82YW2f*%5s;VPDOO7~RZ$}e~CEV~87yUF}*^{AOEjHRS8PU_{9!XhtGnl>0kTr~m zx)EmhDH{hKWB0ep1pisY*6-yW$MSY?>Y$z|p}2qI#x8(-S~EvB@pEDu6H!_x@7yanBwUSPF)4orFM#RJ5zbu&#~$C}kjF zPmfh?>cT5=&_}<%cbEgQNOL2dW}DIGhyBE3q6!J#4?*&9nnNc5<&Kw{zP`L>Ae+qW z_X}G><4;a+dT=96o}tg=o5lGt2cs4hsBvOvAjWrDKD}Sk*pVVAr2?p+o7LZN0X==G zNrc}Cj{2|dOMRD`=!g%sD*GO7)Hhhk&uTFG*zWOi&=v+I1CfM!-h^rK;_H?BkM|(< z1*FE~;m4fq567p?f1`lj{^sESBT}N;yfGt82|US4-Bc8+bl_70fG{mRUht2kW}+EK z(wfn|#u33&5&4lMXk9?Z>r*HFj`iXsNY@RGZ(xYLy z<;4>L&NkX_+% z2sTH*4UPwtBg6g$z~cmCR#|1Ntk zb_r8n%gf7I;n53o@xYMk3&B;dAXHK;Fg1jfU6ah0Um!+yq!rUoCPT{|7DJc9xw)ZR zf4Tdf>*wFmto}yTeM5biX=Z-5u&WfG+;45r)&$^ZJoTw|nV9_n`YW|KvGZ zYn*gq;XJ0X!p6=K(}nTuSfu>aD#rSG#(p{$UUOc{k#>qlfm4QlBZCJLrW;s&YE-zf z*gb*)?gj7E6tTLMOg`=NuQf{RaP3Fg7P!t|S1$`zj=OZ*X@{Irwz%lDcRU(zw_azNp}@khiX#@b z;{&Y*?Zq(+8#AQ5ll|YB{fNSTbJ3UvepaSphhu0))$f445w`O~avvW0`_Uns1iTp9 zUU!+dOfK4dW2()D5+jVxh{*N1EQm1C1H~E5H`}fs=jX$Xvs{;d^tIiFbqJm{^fgGB23!Dsj5TXUGp&D7`q!D4dc2~-PtKN;g#pq{u z`2FrVhqA$Qq`!bX_3W}7Xj|BhF`!x9|3exYj*NyCa2oeJ9je`7jh~ysEH5FGY(6;s zgppi~LFIpq7VVs%n7RE!fn9>&xVN>qf7+^2{HYWr3}=pp-W~T-bz_F7cS9MK! zTIvR9Jbx}!oev?$5geF7Aw1eX=SH1y-`WZ(Lf%Ip-=Jb;v2hHAsYpxpyiMxlxv*@k zWsNx~EQhn28x0C8QapdFZFs5k*cg6~dVn&GO(=@c+gM+${R4rD$`qAz7<>i2(u^68 zL#?%ONCV?=Yn?Jy43+i!@ESK5J*sX_XPe1sw;?KMS*&|U0b6CRdYRXy-+waO-TO0= z#m=`Ty%4V#hT%iO`}QC%S1r|UR|5r7DI8Js2)jzQ4xu9*!To;N*gnnPu z#_m0Dd}jXA4(dg873~fc;Yc_mDf01vx&c(Q9DP^&>}1?4Syf_7g-BIB)+Ow)0t{N$ zST*V@oV>8yvtXkq(uQj~XeO7O`#todXBXlyX;eB0<51BWZlSgh?q<)q`n10MEIWoP*`NaaOJGmVYRSet}Jn}3G8?&%-wx*sOrSLpOCLTKK!M(nmI zO9q2v%rq?vKNbY)Pyo^yeLT3Te$pGCTN~uQcgc7c7gD( zDPo97ON4S&jtqEN2_n+*J?)bk9fSp&-f~1~nW#w-g+}eR#KiQ|D76w)%lP(7LT~&E zz4aoKJTfyPjubnjLAJ=?okH46TYrAfL-{g0So$j)1KZ%Q zp6?Iz`ppm#TbEXWB$ZkQ?Y-MD78YQD)%zIQHDguPo79Q+z) zG>*J8bYX^m`ksOH9Eq2P>-u_1<8}lAqkA?I{wv&23ugKhzR^nu(V_3yUV9Pgzz&qt zDm&RT_My|OAA}u+oV6^UqGL?!Z}X+>|0w2TI%R}|mJ#7GJMUY+H#gtVt{8MXxV?X6 z;zM~e{C;w-diu>fLwhNc9>wFlaYmT2GN0?Fmy(fB*Pnwx0tm4;S%?{(|0%`1ySl6= z-kl$rI8ilb9g-Ovh+WP_L%bm2r+!b)H8K|$ztR&6A?908onRx?Y}`0#+xOR?K%zQgB zugJ{PrAaQ)BD1iaC>~If+QGqf*yveRcrfNYL&-{&5fJ7{?PMEs#(HEgrW?Lj(pD+< z?4xj!+qj8_aPlrBoY#6HjuTP$@wU;gz3Z5uvo***Kk$C{3(n#0POj(MUu~!=v6aEO z=~knQ9wL!weYWWC%UvjJT!i8FR@6hZ37XYH3SSEQHyMKJx+_6rHB{3URyLppG-39| zg(sg_=6owu_c)(7{#`B6JizCo@mYG67M10&W&0o3>YXy0EgE8c*;&Qr5e%23<1n{( zXLuuIebudkPSMQyTI#QX@gC>UIQ^JFR1wg{E#NaiZEst_@Ba=OR6~vfAOm9I0lu-d zU~y?4*>!M8o>~-0TqIaOd-wVh7;m5W>Q_|^MDbO6PG6!ms}!5Yrdm23gbmus&m82U z^S9fR&e7Qc3*aZ)iWmLePnzPl0xvQi7#I!J16(fBB=g34^SLh}P%-SIQUUKX@85si{ zB9ww)2S++QO6x3_%^;1+7T|@vbHWU|suODQe57*EDzN|@$@+xv9RN``i^hO**N~)` ztiXk&*GWmAH+EVJ!!ak(m-Hp#3c$Z>>l?egGe5>>4JM1gGlvU>vn^Tn=rAp`iF8La;*Ho z`;<7LUw!;7UwMr%AD^;!H}cG}?3kv+i*vhg(J(W=5B?;}Vyl$si;0pmAVbtT;ZN1y zp{X1@6HiQ%7e&S1$nx_BGJFM`SAB-;ga{uk=ERZ2EEGS7MpkmUe$QNXWnS_}A#_;j z?fmmme@rB}1#5L(f2RwNAtQQt;UTgy*>XvAIAHy|-(ago#GgOyE#5o)yfPtXZ?sf; zaa7+;nmyR|8dwaS?IH-Nc#epMmyZK3p75>AR2;H^u_0Vo9i<-~i;_fk)B0jX73aq) zMEe5kN1q~Dj*sGb-Q#a3uU_eaw&9g~EvcT((REvFmj5_;#3f6^y%v z4;%PunMd8?QDiz3!=>ADoI0@D&@4f6>L#y=_^1awcz=x z)limJmA%mmC&`}L~KTX9gi5nxVTU-#UW>h{}nEw z^Y~HBiOHt+Xq27WSSJuh#(jjEnTeOl#> zWW${{wfsesK+=W&jUtdy<#RZ-~DtL*v6+`@>O0^ zXL|;^qaCI`pt$B8)OT%8EJybID!~17C0_2p(JUYNQxW1QGb-?wYZSD!AHSenAtKvH za}g2oUUgMzP={aKV;rCFOovT{t73OzMeTl?N!2{l`ICO$zH95{3>!ZqvQ%s*6OOp)7@592po1tCr`3J9w zc|ni=2rE)<2Zy^3be`4>y16I6Smup1E5*Pik$TWqZ&TN;x56AI_p9hu zSRyhFKE-dfy;^(47|pc4s*c1xM^RpP3EcxUAJl45;R-|s{cxNojZ+furzL-mP9Z4q zjtPlh!V+?^#&VIA@fD?JLGg5{eTACm7p%OVZ^=6^TAt{y15N|hRp1c*G{VpB%lTVZ zW%9-RO7$3@eb;iaeIq_&b8$#--)jgBLhsti1}f-*k3QX7WA0Ol?O=zIsTT^{fYZrY zK1{rrT6y?g!HU=#CWY1fM5v0=jinVFGr0;iu0K@~Qw8oOe5{tVQ@w*|u5og6FP28~ z%8)#M&_^8;haOvU4OA9m;#KX!YT;8OZd#@y-Mz0LGM7JXrQz|++LhXyCHno;2+TU_c)Y2y`V+j zKHUzH_c_!#p(_DHw1bPX?uRKZYfZBzpKz>Fl;@hZYtHPb34()-KKP@#u2osJ=bS|g zM!j6(zs_;kskjd}dTeF+)|^C)3?wV_;1^Z6kj`G5aoP7Hvv`Px!v+X*(0^F_>G`fR zce=(CZ!bh||HZ}pZJ4kb-~)*K$HJOHVS@O;fOjNrBl%U0H7Pl{g~+usmY{h0jdBuc z=UFACn4U}ogAZuELYZ3bL-VmKDu?TXKGmRI2I(%5N1pZnA_P%vKDp*A9GL?6B$(0>?j$gPz>QF2&cgVIXSIn7>ckiKtjXMO z#dA@Voa4tW_H(aTX=S1nAY|_P!q!5cd@ke|tt2V9*xQw|8JjYFS*NZLAE$tgm=c&o z0r)coB|u*1Wn~5}-n0i}6ZYaS(#k)z$MqF)5@-Iq0H#-w<+~4uHF~}~SqxSrO2r;9nF#vn zzwHul$&MRz*sl8(M8`4W&+t>&!YWNdaO_M*>I+?28O3>N-4Ovw+)q>a8i%)miHBrI zU5>&+8(NW+@T<*-vz4X(T2iath%VV7!UD2cJ*0`_rLVV1GJhxmcRmg^l36}P2Vw!3 zld^rPvyBS8Vhfx~VAp^q(2+r--V{IQiT3@Gy^YzycXO`WXF zU60;IRJKK|3uX1YuPcOnaj%Yd4C&^Kb8k&1sd+%L*EQ}~XBYjJ(F8_i)TJ+xveHMD z)uN!daVxDz_dSGegolI#7AM*&c)V~oAh?RWJ?8G5+b?>RG(E2b}YS8h)WgOy^PuH z!;E^0Og=tJlYysDtn~1xx0ZKR3~a<#$9e^{SdOeEnfQ6~~!hdt+17X(~1?c(~&h zI9qLbxDlbv)|#?umkS;4!$feXAZ8GC{EM61S6sdb)JeVMa`1q6S!WT!SskaX+aBLt zQ&11N>d=cy(I}w3U9hNo&Bb6IivgUNDe!eo0zvx^%!DBPH6h{sj}!i*#^mWQMGp{X z@)b=@1R+h+9>z&$p2T|=|B~)?d7!8iQXKAu8GS8bg=8OQXx-h1ImE+LURsyz?*gRC z`4x*tH(yW}R2@jkub&&jW`n+E>TOVWX|(Q7hAwEHJFwl)LT>dA z4^w>%8;pc>I{OUct9)t=A5}#~Dhx1Bdk_axB;lQfD4FqwAu;clRuz&;6lN=quYo;W z{kBa?n^dHhH;$}Jk#Cpa-lxL&%jP%o10N>su;9gh=eXRPz5@N-Nwb#r$&~`D!jyJl%)iGYm)-IOTJp=BH2GU9LcF+r zVD7!Fh3kn*>@+54fsr&_Jy$`QSSO`XJEIKq`{4jHLEi6Ph%%3Rjz0XZdG@w`SJeJ{ z?xbg+5@;0YJWWLnHpH;63&l4+mI?9Wqc#7Bs${Eqx7=7{+`CDIi%qOfVch11boGs6 z=OMfAy`x9r0*J7Ths;AI8mQ(x{ey?bj38M@@u5dWrO}C3>B_sRb}K)v5rlniFH#T; z`GL6V?~pOKSd(q3z$A>);HN$A>Rjcgz%ZAu6>h_1=Djr8O3lvJpYb|C;sx}rF)BSe ziMDgcLIc7<8jntLq%Qn2kLxLfTch*HK+&_9g~%CNgh8Q%81mXS1M;k=ruDW6o-2&w z#L=k`(zm8MmCDQjTZc?6I+()l#FKe`lZ`t#yM?L?dtKu=F1NE>+6yAa+)kc$!7dPq zpv0*6>!-p6{NJ`-W*di4jSY-XhEw)KT@X`msg0lh*~r;t;Sqx4g+)^*i@!w@amavC zAUR~j=;kVgi#>i{+++|-rcv1i}Y|za<(}-h4XYdf8$}acsMKo*#reV=R{Le*F6>hOrgh| za~cDK`!c(Ztcj_hl2_MwmNtfSmPOHeGBMYW+mI1V2azYPdiZ3~Y?dfk7Se=t4&brM zs6!oDqr915yjzzF-W8PX_v)7qA}2T7hwLKJT*d0~&A7*-lTJ+QMqNB4 zVjWO7kQz0uKY1FP@P>)(5^?eOVGcBKgmH&A?U!D^PRSj}9gj6>18b>oZt=2W7w4oe zBnNR&`PESyRhflY?&6dFu+yN46hf<9%ZX#|Mp z)xMts|JFtIkmx>ijKl(wpKmH~GrXk$;Tp2Avph9n1wg!A#JY>@0cXF66hLVR|3F%5 z)sLZ3wWi&hcs=*zqi(a-fO-isCof>Y1$;SDF-ENk*JW3CkW!*l`})C#=2~Zh$nG9d z79`AUDNQo4J+sJqxOqFL^<2l3VwRjymjEQ>I;PI0dbdZy+2qh)SJIazYW9|(pN{r; z1iqs&egN(`(QD?`)uGWk^=RdaP)%1iHq%o5{k3!~{+|aGsuVmTWhkXCB#idnz1+Sz z7ZL_DOdM$-OeA616ekeZ_0`G;=SB4P{x+eVAP*N`7T_li(TI`Em{~N3Jw~XcS}W-@ z#ErSL_y`+|xl`!=DJLQRMN{p3LnNMSL(M zsxNbCe*LEkRPvlAwU*E+B;q7pKoqGcJQlN=b>cF{zw;Kjj&~3OF%Ho)v-OK-Vfs@E z{1`TaeatZdZy$9v8+M!jMKlDt)^`lJ&n|?ziUUvQzo%r@$Sn;PF55|5Iv;xS*sLN3 zG&HvoIg3gVhsNFlk4&aSR~}67;XZW=N2EhisT@=T6dcWMf^MlBId&!-%Gd!?pJ8ws z|LDBajgg`E{r zBZo(K@ejo`On`v?o8QD3bT_G z^Zz2m1uk5O4j1F%FTIWSn`ka*Bru`#6VhVnmU?tbJLYOJaOi(~`r09tG)fW=MoRvb z$$wo)*ey$gPagSGN6doPkNO|+s(X(K+|j+Mvx!z5-e=s>!(Iu>z%+k~iI<4j9ik!? z*@8ZGNS(Z1jW#(%cysYj*rDO*WL`8D%cqq=iqD1m61eiUT?MX32!&1e%ma9L`axxTOJ$1RwgpuFG8{p zB(l+tZ$2L?Rgg0Drx>$o!+6t3l}c+auF&`@C9+JAdm%?0##3IG&CUK`NiT=N|o$%;A)q9fhcFq45v0 z$MU@J%GJL0*}W-J_XusOVO9!caBJK{@cC9dJ>(9TZ?mjO@u|rKLA24A^Ww7_2_OBd z;Ye=2#$7Vonl4Niscut0A)%5OVx#m#wxi#mDqKIH^}{|mMNck+s)->LEmwA%YjqAn zyKA~yOWJaghv9a`c2>}ee+uxE+*KJSSWj!?iYrUM8X^hvDN7y}6inN!Af{|#?&s)C z9j(RzXjrp?<625Av}?HWQw^7{-#txrt?DixSKn@kE$@N{kRxZBm-xzoypK`eL{EiMo&HK-dn=q+rwbttpQ} zh)flTxDcZPf1X!L&UBv`1=$^zvw&$bV*FJwlFts9*idXXbXkwKZ;`j?Tp7y`R(LlG zbXA4K$U_I5wg%;?Ei5;U4@BSfvGkg=4H?I}o#!MBs9nrToem$r2WYy!+A`7h`IWpX z{<9gru@!dPuQG7!hYd8S^E3+A%_yPhS7BTB;WnOid3zYr=t|V5z=KMX-2qhbx4*0> z!EzzvjR@KTU=<(A6NE#4Xd$VVCSnf@6^79GOrA83wbU$>O_?RL?D%nacWDlIW8i>o zOa2L|LG}d+?y02uFB_@Q+c*k|eZ$-;ZT$HfzJaJC9Y5D7|3HG5msK}(3s#Idg~J7C zpDa0=#Z+s*RQTdKWOv~WRDg(V9JusR1x<&jxV&#XJyk1ON5U4}ebDm|v zXZ(SIaitZ{KWk#I1FcxpIw#0~$;snAME2gyZpJ^W(jgfn@+p7Q1`hHl)$U|=GvjFu zEAG?HU7KJyv)Wl(!7OyUvMqH1Xn#M8ia6aHY1E+N^=AW5uM47-=SyC8s~i`+UQUBWt`l z@SE`s%t15b`3tXpc>s$AJ9dU5`m_J+Y3}DF)5oDl{$a-~#RWk2fdQt~-$;|f*_4=m z*lnRPD|H7oTgoDg=m<6H`x4h|aTA#JrqYJGnQuIs-C@X!(j(fM1^Z;+0%mfn&3;)f zv8Qgq5%El=X0xI7^Z!%0AdMfzrG+o3F&_Fbf|(happV3q`E4+mr$g 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 literal 0 HcmV?d00001 diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/HostApp/TeklaDocumentModelStore.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/HostApp/TeklaDocumentModelStore.cs new file mode 100644 index 000000000..891d0972b --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/HostApp/TeklaDocumentModelStore.cs @@ -0,0 +1,17 @@ +using Speckle.Connectors.DUI.Models; +using Speckle.Newtonsoft.Json; + +namespace Speckle.Connector.Tekla2024.HostApp; + +public class TeklaDocumentModelStore : DocumentModelStore +{ + public TeklaDocumentModelStore( + JsonSerializerSettings jsonSerializerSettings + // ITopLevelExceptionHandler topLevelExceptionHandler + ) + : base(jsonSerializerSettings, true) { } + + public override void WriteToFile() { } + + public override void ReadFromFile() { } +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/Plugin/TeklaPlugin.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/Plugin/TeklaPlugin.cs new file mode 100644 index 000000000..493f407d5 --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/Plugin/TeklaPlugin.cs @@ -0,0 +1,18 @@ +using Tekla.Structures.Plugins; + +namespace Speckle.Connector.Tekla2024.Plugin; + +[Plugin("Speckle.Connectors.Tekla")] +[PluginUserInterface("Speckle.Connector.Tekla2024.SpeckleTeklaPanelHost")] +[InputObjectDependency(InputObjectDependency.NOT_DEPENDENT)] // See DevDocs/InputObjectDependency.NOT_DEPENDENT.png +public class TeklaPlugin : PluginBase +{ +#pragma warning disable IDE1006 + public override bool Run(List Input) + { + return true; + } +#pragma warning restore IDE1006 + + public override List DefineInput() => new(); +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/Properties/launchSettings.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/Properties/launchSettings.json new file mode 100644 index 000000000..cfcd63e10 --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Tekla2024": { + "commandName": "Executable", + "executablePath": "C:\\Program Files\\Tekla Structures\\2024.0\\bin\\TeklaStructures.exe" + } + } +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/ServiceRegistration.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/ServiceRegistration.cs new file mode 100644 index 000000000..ebbe88e7e --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/ServiceRegistration.cs @@ -0,0 +1,33 @@ +using Microsoft.Extensions.DependencyInjection; +using Speckle.Connector.Tekla2024.Bindings; +using Speckle.Connector.Tekla2024.HostApp; +using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.DUI.WebView; + +namespace Speckle.Connector.Tekla2024; + +public static class ServiceRegistration +{ + public static void AddTekla(this IServiceCollection serviceCollection) + { + serviceCollection.AddConnectorUtils(); + serviceCollection.AddDUI(); + serviceCollection.AddDUIView(); + + serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); + + serviceCollection.AddSingleton(); + + serviceCollection.RegisterTopLevelExceptionHandler(); + + serviceCollection.AddSingleton(sp => sp.GetRequiredService()); + serviceCollection.AddSingleton(); + + serviceCollection.AddSingleton(); + } +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj b/Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj new file mode 100644 index 000000000..4dde51c83 --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/Speckle.Connector.Tekla2024.csproj @@ -0,0 +1,32 @@ + + + + net48 + true + $(DefineConstants);TEKLA2024 + RD /S /Q "$(TargetDir)arm64\" + if EXIST "C:\Program Files\Tekla Structures\2024.0\" ( + xcopy "$(TargetDir)*.*" "C:\ProgramData\Trimble\Tekla Structures\2024.0\Environments\common\extensions\Speckle3TeklaStructures" /Y /I /E + ) + if EXIST "C:\TeklaStructures\2024.0\" ( + xcopy "$(TargetDir)*.*" "C:\TeklaStructures\2024.0\Environments\common\extensions\Speckle3TeklaStructures" /Y /I /E + ) + + + + + + + + + + + + + + + + + + + diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/SpeckleTeklaPanelHost.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/SpeckleTeklaPanelHost.cs new file mode 100644 index 000000000..220cc8927 --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/SpeckleTeklaPanelHost.cs @@ -0,0 +1,62 @@ +using System.Windows.Forms; +using System.Windows.Forms.Integration; +using Microsoft.Extensions.DependencyInjection; +using Speckle.Connectors.Common; +using Speckle.Connectors.DUI; +using Speckle.Connectors.DUI.WebView; +using Speckle.Sdk.Host; +using Tekla.Structures.Dialog; +using Tekla.Structures.Model; +using Tekla.Structures.Model.Operations; + +namespace Speckle.Connector.Tekla2024; + +public class SpeckleTeklaPanelHost : PluginFormBase +{ + private ElementHost Host { get; } + public Model Model { get; private set; } + + public static new ServiceProvider? Container { get; private set; } + + // TODO: private IDisposable? _disposableLogger; + + public SpeckleTeklaPanelHost() + { + var services = new ServiceCollection(); + services.Initialize(HostApplications.TeklaStructures, GetVersion()); + services.AddTekla(); + + // TODO: Add Tekla converters + + Container = services.BuildServiceProvider(); + Container.UseDUI(); // TODO: this might not needed? ISyncToThread? + + Model = new Model(); // don't know what is this.. + if (!Model.GetConnectionStatus()) + { + MessageBox.Show( + "Speckle connector connection failed. Please try again.", + "Error", + MessageBoxButtons.OK, + MessageBoxIcon.Error + ); + } + var webview = Container.GetRequiredService(); + Host = new() { Child = webview, Dock = DockStyle.Fill }; + Controls.Add(Host); + Operation.DisplayPrompt("Speckle connector initialized."); + + Show(); + Activate(); + Focus(); + } + + private HostAppVersion GetVersion() + { +#if TEKLA2024 + return HostAppVersion.v2024; +#else + throw new NotImplementedException(); +#endif + } +} diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/app.config b/Connectors/Tekla/Speckle.Connector.Tekla2024/app.config new file mode 100644 index 000000000..1f0cab02a --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/app.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json new file mode 100644 index 000000000..efeb30d5b --- /dev/null +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -0,0 +1,493 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "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.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==" + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.6, )", + "resolved": "0.9.6", + "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" + }, + "Tekla.Structures.Dialog": { + "type": "Direct", + "requested": "[2024.0.2, )", + "resolved": "2024.0.2", + "contentHash": "VY1n7ROsUMHomHwJBYbmTt58M9qSuGqkcdWS8GTJUU5NOZsIsoS746fT7E+YBpUyP+9tyzibv4OW9vQj1sDEAA==", + "dependencies": { + "Tekla.Common.Geometry": "4.6.2", + "Tekla.Structures": "2024.0.2", + "Tekla.Structures.Catalogs": "2024.0.2", + "Tekla.Structures.Datatype": "2024.0.2", + "Tekla.Structures.Model": "2024.0.2", + "Tekla.Structures.Plugins": "2024.0.2", + "Tekla.Technology.Akit5": "5.15.0", + "Tekla.Technology.Scripting.Plugins": "5.5.0", + "Tekla.Technology.Serialization": "4.1.1", + "Trimble.Remoting": "1.0.2", + "Trimble.Technology.MsgLib": "2.2.22326" + } + }, + "Tekla.Structures.Model": { + "type": "Direct", + "requested": "[2024.0.2, )", + "resolved": "2024.0.2", + "contentHash": "GV7mqc3TX7h3QeCLmjCI8GlnbhAMYOvLMEED1TY+hpdeWtMuHxGS7GwfLgG10iUdjumqy5Qmn2VE3PIRhw5hWg==", + "dependencies": { + "Tekla.Common.Geometry": "4.6.2", + "Tekla.Structures": "2024.0.2", + "Tekla.Structures.Datatype": "2024.0.2", + "Tekla.Technology.Serialization": "4.1.1", + "Trimble.Remoting": "1.0.2" + } + }, + "Tekla.Structures.Plugins": { + "type": "Direct", + "requested": "[2024.0.2, )", + "resolved": "2024.0.2", + "contentHash": "40Dn4sAcfLJc1Gi6sK95tVz8BwmB4vvRjcZcFJ55F3HMr2mwtcJhvDQED0exlZuU3pbibjhUZaNz0/I16Mms/w==", + "dependencies": { + "Tekla.Structures": "2024.0.2", + "Tekla.Technology.Scripting.Plugins": "5.5.0", + "Tekla.Technology.Serialization": "4.1.1", + "Trimble.Remoting": "1.0.2" + } + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "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.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Mono.Cecil": { + "type": "Transitive", + "resolved": "0.11.4", + "contentHash": "IC1h5g0NeJGHIUgzM1P82ld57knhP0IcQfrYITDPXlNpMYGUrsG5TxuaWTjaeqDNQMBDNZkB8L0rBnwsY6JHuQ==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.5.0", + "contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg==" + }, + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Reflection.Emit.Lightweight": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "a4OLB4IITxAXJeV74MDx49Oq2+PsF6Sml54XAFv+2RyWwtDBcabzoxiiJRhdhx+gaohLh4hEGCLQyBozXoQPqA==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "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" + } + }, + "Tekla.Common.Geometry": { + "type": "Transitive", + "resolved": "4.6.2", + "contentHash": "5+jJDmzC363ys51JbrQap0LdtflTpSJVpW9oUQbtlem+SBcwrFQkA16xg3ddKv6tQ0iMXwPe7DP0PbV+Qj9GMw==" + }, + "Tekla.Structures": { + "type": "Transitive", + "resolved": "2024.0.2", + "contentHash": "m7URRYK7sEzumr/+TJRNd4q2nutF9qMUbIIPmbr36cbaKiBGW0xxAgveTL8+7kkDqodhAGyUTVai5gOtvYi2SQ==", + "dependencies": { + "Tekla.Common.Geometry": "4.6.2", + "Tekla.Technology.Serialization": "4.1.1", + "Trimble.Remoting": "1.0.2" + } + }, + "Tekla.Structures.Catalogs": { + "type": "Transitive", + "resolved": "2024.0.2", + "contentHash": "1VUbPKtzTUMwUP21jqN+c1gLEtxi31+KYPis/n2Plty2k5Zj4gM3Q428KhjMgyHOoc7bWJX/kjfUQBCYuhqAsQ==", + "dependencies": { + "Tekla.Common.Geometry": "4.6.2", + "Tekla.Structures": "2024.0.2", + "Tekla.Structures.Datatype": "2024.0.2", + "Tekla.Structures.Model": "2024.0.2", + "Tekla.Technology.Serialization": "4.1.1", + "Trimble.Remoting": "1.0.2" + } + }, + "Tekla.Structures.Datatype": { + "type": "Transitive", + "resolved": "2024.0.2", + "contentHash": "LtLUtkYuni+R1F0UAPXWmgjAPBZORabG+/2YVOhJBj6+0x6Fg0PxgDtABNMNniN7A7BFXaYQRI/fuP35VL8BFQ==" + }, + "Tekla.Technology.Akit5": { + "type": "Transitive", + "resolved": "5.15.0", + "contentHash": "Rzw7m2aZE1AzzN4/wYqUU3UcEcGL4pUi4T6KUVjP3dfsckkeYu5nw8ZGB2L2yATZRPTjTItKQrG/jcsApT2TNw==" + }, + "Tekla.Technology.Scripting.Plugins": { + "type": "Transitive", + "resolved": "5.5.0", + "contentHash": "tuPQlV/hJHHRrY6LH0FMxVtmjs6TUw0u4WaXbd4GVbj9YAyJyiZCA2Q1YeOmy6rs2IoCyGivURaZsSkdg/5JPA==", + "dependencies": { + "Mono.Cecil": "0.11.4" + } + }, + "Tekla.Technology.Serialization": { + "type": "Transitive", + "resolved": "4.1.1", + "contentHash": "C++1hdVfSmoB+0M5cFvXxmLzVl3azi0CiI3owLZt4vHWI+EgYWEGMAlCk6ED4zfhR2FzT9VLu4RCFDHvopTERw==", + "dependencies": { + "System.Reflection.Emit.Lightweight": "4.7.0" + } + }, + "Trimble.Remoting": { + "type": "Transitive", + "resolved": "1.0.2", + "contentHash": "vwaLu07qxgUaSt5FRaR0xrH+6OuVTibfrOYoCVta/NmdA2XZlAqAF8/pIkBITRTqpY8Z8uBhV+mYfVfr+oevcg==", + "dependencies": { + "System.Memory": "4.5.5", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "Tekla.Technology.Serialization": "4.1.1" + } + }, + "Trimble.Technology.Msglib": { + "type": "Transitive", + "resolved": "2.2.22326", + "contentHash": "I5sYxv7i4J5ZpK/1ELvJMGn3DzVEBq1S0dTyE0JQjo/bIHBmuuy3HSY2YrYCWcRPC2WsNv8t+TiAGzWCGrPs3Q==", + "dependencies": { + "Trimble.Technology.Rkit": "2.2.22312" + } + }, + "Trimble.Technology.Rkit": { + "type": "Transitive", + "resolved": "2.2.22312", + "contentHash": "OMwJAhps/tnmV99suab65b7Ex+H9mebbdNRaHwogPEwCRefWUr7/WaA4p43nfb+FxmBFO5FtudN3EEarggTSow==" + }, + "speckle.connectors.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", + "Speckle.Connectors.Logging": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.146, )" + } + }, + "speckle.connectors.dui": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", + "Speckle.Connectors.Common": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.146, )", + "System.Threading.Tasks.Dataflow": "[6.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" + }, + "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.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.146" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.146, )", + "resolved": "3.1.0-dev.146", + "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, + "System.Threading.Tasks.Dataflow": { + "type": "CentralTransitive", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "+tyDCU3/B1lDdOOAJywHQoFwyXIUghIaP2BxG79uvhfTnO+D9qIgjVlL/JV2NTliYbMHpd6eKDmHp2VHpij7MA==" + } + } + } +} \ No newline at end of file diff --git a/Directory.Packages.props b/Directory.Packages.props index 61b6f781d..c05959b34 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -20,6 +20,9 @@ + + + diff --git a/Local.sln b/Local.sln index 7becde7cc..3e877e6fc 100644 --- a/Local.sln +++ b/Local.sln @@ -160,6 +160,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connectors.Common", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converters.Common.Tests", "Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj", "{13225611-10EE-41BB-9198-C88D6E978DA6}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tekla", "Tekla", "{AB1AD13B-163E-45F8-8F96-52A921501FA0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connector.Tekla2024", "Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj", "{8077B6A7-86BD-4E87-8B23-6D168D0E14D9}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Local|Any CPU = Local|Any CPU @@ -245,6 +249,8 @@ Global {3747C01B-343E-4425-A973-4D9D181BE468}.Local|Any CPU.Build.0 = Local|Any CPU {13225611-10EE-41BB-9198-C88D6E978DA6}.Local|Any CPU.ActiveCfg = Local|Any CPU {13225611-10EE-41BB-9198-C88D6E978DA6}.Local|Any CPU.Build.0 = Local|Any CPU + {8077B6A7-86BD-4E87-8B23-6D168D0E14D9}.Local|Any CPU.ActiveCfg = Debug|Any CPU + {8077B6A7-86BD-4E87-8B23-6D168D0E14D9}.Local|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -315,6 +321,8 @@ Global {38497468-6B28-4F8F-A9E0-3167E90DDD89} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} {3747C01B-343E-4425-A973-4D9D181BE468} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} {13225611-10EE-41BB-9198-C88D6E978DA6} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} + {AB1AD13B-163E-45F8-8F96-52A921501FA0} = {42826721-9A18-4762-8BA9-F1429DD5C5B1} + {8077B6A7-86BD-4E87-8B23-6D168D0E14D9} = {AB1AD13B-163E-45F8-8F96-52A921501FA0} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8} diff --git a/Speckle.Connectors.sln b/Speckle.Connectors.sln index b08e0767a..7e77609da 100644 --- a/Speckle.Connectors.sln +++ b/Speckle.Connectors.sln @@ -155,6 +155,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Tests", EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Logging", "Sdk\Speckle.Connectors.Logging\Speckle.Connectors.Logging.csproj", "{8098BAFC-DF1C-4AFA-A93E-08121E6D09D4}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tekla", "Tekla", "{696086E4-D8CC-4FE0-A9B3-5F10B9089B55}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connector.Tekla2024", "Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj", "{2319C00F-B268-4E4C-9F88-6B379E2BBD22}" +EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Common.Tests", "Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj", "{9EF292C6-1333-4502-AD9C-224D99847185}" EndProject Global @@ -311,6 +315,10 @@ Global {8098BAFC-DF1C-4AFA-A93E-08121E6D09D4}.Debug|Any CPU.Build.0 = Debug|Any CPU {8098BAFC-DF1C-4AFA-A93E-08121E6D09D4}.Release|Any CPU.ActiveCfg = Release|Any CPU {8098BAFC-DF1C-4AFA-A93E-08121E6D09D4}.Release|Any CPU.Build.0 = Release|Any CPU + {2319C00F-B268-4E4C-9F88-6B379E2BBD22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {2319C00F-B268-4E4C-9F88-6B379E2BBD22}.Debug|Any CPU.Build.0 = Debug|Any CPU + {2319C00F-B268-4E4C-9F88-6B379E2BBD22}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2319C00F-B268-4E4C-9F88-6B379E2BBD22}.Release|Any CPU.Build.0 = Release|Any CPU {9EF292C6-1333-4502-AD9C-224D99847185}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9EF292C6-1333-4502-AD9C-224D99847185}.Debug|Any CPU.Build.0 = Debug|Any CPU {9EF292C6-1333-4502-AD9C-224D99847185}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -384,6 +392,8 @@ Global {9D66EDE4-AFC2-4F00-B40C-A7E878A2972F} = {B2BF1FAE-D0F4-4961-84CB-A00D3CABD236} {5B9A550A-9314-4E91-884E-E54960F589FB} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} {8098BAFC-DF1C-4AFA-A93E-08121E6D09D4} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} + {696086E4-D8CC-4FE0-A9B3-5F10B9089B55} = {42826721-9A18-4762-8BA9-F1429DD5C5B1} + {2319C00F-B268-4E4C-9F88-6B379E2BBD22} = {696086E4-D8CC-4FE0-A9B3-5F10B9089B55} {9EF292C6-1333-4502-AD9C-224D99847185} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution From 6115620d7dcf7e0dee346fdbf1b8fef33ae7b021 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 26 Sep 2024 11:37:22 +0100 Subject: [PATCH 09/62] Try to pass log info to serilog without rendering the log statement (#266) * Try to pass log info to serilog without rendering the log statement * formatting * remove redundant from new --- Directory.Packages.props | 3 +- .../SpeckleLogProvider.cs | 4 +- .../SpeckleLogger.cs | 12 ++-- .../Internal/LogBuilder.cs | 7 ++- .../LoggerProvider.cs | 10 ++++ .../Observability.cs | 2 +- .../Speckle.Connectors.Logging.csproj | 1 + .../SpeckleLogger.cs | 60 +++++-------------- .../packages.lock.json | 10 ++++ 9 files changed, 51 insertions(+), 58 deletions(-) create mode 100644 Sdk/Speckle.Connectors.Logging/LoggerProvider.cs diff --git a/Directory.Packages.props b/Directory.Packages.props index c05959b34..59f21f62a 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -28,6 +28,7 @@ + @@ -43,4 +44,4 @@ - + \ No newline at end of file diff --git a/Sdk/Speckle.Connectors.Common/SpeckleLogProvider.cs b/Sdk/Speckle.Connectors.Common/SpeckleLogProvider.cs index 1c0848b62..c78a1290a 100644 --- a/Sdk/Speckle.Connectors.Common/SpeckleLogProvider.cs +++ b/Sdk/Speckle.Connectors.Common/SpeckleLogProvider.cs @@ -3,9 +3,9 @@ namespace Speckle.Connectors.Common; -public sealed class SpeckleLogProvider(Logger speckleLogger) : ILoggerProvider +public sealed class SpeckleLogProvider(LoggerProvider speckleLogger) : ILoggerProvider { public void Dispose() { } - public ILogger CreateLogger(string categoryName) => new SpeckleLogger(speckleLogger); + public ILogger CreateLogger(string categoryName) => new SpeckleLogger(speckleLogger.CreateLogger(categoryName)); } diff --git a/Sdk/Speckle.Connectors.Common/SpeckleLogger.cs b/Sdk/Speckle.Connectors.Common/SpeckleLogger.cs index 13c714c3c..140cf4b27 100644 --- a/Sdk/Speckle.Connectors.Common/SpeckleLogger.cs +++ b/Sdk/Speckle.Connectors.Common/SpeckleLogger.cs @@ -16,22 +16,22 @@ public void Log( switch (logLevel) { case LogLevel.Critical: - logger.Write(SpeckleLogLevel.Fatal, exception, formatter(state, exception)); + logger.Write(SpeckleLogLevel.Fatal, eventId.Id, state, exception, formatter); break; case LogLevel.Trace: - logger.Write(SpeckleLogLevel.Verbose, exception, formatter(state, exception)); + logger.Write(SpeckleLogLevel.Verbose, eventId.Id, state, exception, formatter); break; case LogLevel.Debug: - logger.Write(SpeckleLogLevel.Debug, exception, formatter(state, exception)); + logger.Write(SpeckleLogLevel.Debug, eventId.Id, state, exception, formatter); break; case LogLevel.Information: - logger.Write(SpeckleLogLevel.Information, exception, formatter(state, exception)); + logger.Write(SpeckleLogLevel.Information, eventId.Id, state, exception, formatter); break; case LogLevel.Warning: - logger.Write(SpeckleLogLevel.Warning, exception, formatter(state, exception)); + logger.Write(SpeckleLogLevel.Warning, eventId.Id, state, exception, formatter); break; case LogLevel.Error: - logger.Write(SpeckleLogLevel.Error, exception, formatter(state, exception)); + logger.Write(SpeckleLogLevel.Error, eventId.Id, state, exception, formatter); break; case LogLevel.None: default: diff --git a/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs b/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs index b53ab41b5..6c310289d 100644 --- a/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs +++ b/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs @@ -4,13 +4,14 @@ using OpenTelemetry.Resources; using Serilog; using Serilog.Exceptions; +using Serilog.Extensions.Logging; using Serilog.Sinks.OpenTelemetry; namespace Speckle.Connectors.Logging.Internal; internal static class LogBuilder { - public static Logger Initialize( + public static LoggerProvider Initialize( string applicationAndVersion, string connectorVersion, SpeckleLogging? speckleLogging, @@ -60,7 +61,9 @@ ResourceBuilder resourceBuilder "Initialized logger inside {hostApplication}/{productVersion}/{version} for user {id}. Path info {userApplicationDataPath} {installApplicationDataPath}." ); - return new Logger(logger); +#pragma warning disable CA2000 + return new LoggerProvider(new SerilogLoggerProvider(logger)); +#pragma warning restore CA2000 } private static FileVersionInfo GetFileVersionInfo() diff --git a/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs b/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs new file mode 100644 index 000000000..5f16f8821 --- /dev/null +++ b/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs @@ -0,0 +1,10 @@ +using Serilog.Extensions.Logging; + +namespace Speckle.Connectors.Logging; + +public sealed class LoggerProvider(SerilogLoggerProvider provider) : IDisposable +{ + public Logger CreateLogger(string categoryName) => new(provider.CreateLogger(categoryName)); + + public void Dispose() => provider.Dispose(); +} diff --git a/Sdk/Speckle.Connectors.Logging/Observability.cs b/Sdk/Speckle.Connectors.Logging/Observability.cs index 2a1db2c92..420e6798c 100644 --- a/Sdk/Speckle.Connectors.Logging/Observability.cs +++ b/Sdk/Speckle.Connectors.Logging/Observability.cs @@ -4,7 +4,7 @@ namespace Speckle.Connectors.Logging; public static class Observability { - public static (Logger, IDisposable?) Initialize( + public static (LoggerProvider, IDisposable?) Initialize( string applicationAndVersion, string slug, string connectorVersion, diff --git a/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj b/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj index 379d32e88..2b5a3b2bb 100644 --- a/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj +++ b/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj @@ -18,6 +18,7 @@ + diff --git a/Sdk/Speckle.Connectors.Logging/SpeckleLogger.cs b/Sdk/Speckle.Connectors.Logging/SpeckleLogger.cs index 5360221e8..6015138a0 100644 --- a/Sdk/Speckle.Connectors.Logging/SpeckleLogger.cs +++ b/Sdk/Speckle.Connectors.Logging/SpeckleLogger.cs @@ -1,58 +1,26 @@ -using Serilog.Events; +using Microsoft.Extensions.Logging; namespace Speckle.Connectors.Logging; -public sealed class Logger +public sealed class Logger(ILogger logger) { - private readonly Serilog.ILogger _logger; - - public Logger(Serilog.ILogger logger) - { - _logger = logger; - } - - private static LogEventLevel GetLevel(SpeckleLogLevel speckleLogLevel) => + private static LogLevel GetLevel(SpeckleLogLevel speckleLogLevel) => speckleLogLevel switch { - SpeckleLogLevel.Debug => LogEventLevel.Debug, - SpeckleLogLevel.Verbose => LogEventLevel.Verbose, - SpeckleLogLevel.Information => LogEventLevel.Information, - SpeckleLogLevel.Warning => LogEventLevel.Warning, - SpeckleLogLevel.Error => LogEventLevel.Error, - SpeckleLogLevel.Fatal => LogEventLevel.Fatal, + SpeckleLogLevel.Debug => LogLevel.Debug, + SpeckleLogLevel.Verbose => LogLevel.Trace, + SpeckleLogLevel.Information => LogLevel.Information, + SpeckleLogLevel.Warning => LogLevel.Warning, + SpeckleLogLevel.Error => LogLevel.Error, + SpeckleLogLevel.Fatal => LogLevel.Critical, _ => throw new ArgumentOutOfRangeException(nameof(speckleLogLevel), speckleLogLevel, null) }; - public void Write(SpeckleLogLevel speckleLogLevel, string message, params object?[] arguments) => - _logger.Write(GetLevel(speckleLogLevel), message, arguments); - - public void Write( + public void Write( SpeckleLogLevel speckleLogLevel, + int eventId, + TState state, Exception? exception, - string message, - params object?[] arguments - ) => _logger.Write(GetLevel(speckleLogLevel), exception, message, arguments); - - public void Debug(string message, params object?[] arguments) => _logger.Debug(message, arguments); - - public void Debug(Exception? exception, string message, params object?[] arguments) => - _logger.Debug(exception, message, arguments); - - public void Warning(string message, params object?[] arguments) => _logger.Warning(message, arguments); - - public void Warning(Exception? exception, string message, params object?[] arguments) => - _logger.Warning(exception, message, arguments); - - public void Information(string message, params object?[] arguments) => _logger.Information(message, arguments); - - public void Information(Exception? exception, string message, params object?[] arguments) => - _logger.Information(exception, message, arguments); - - public void LogError(string message, params object?[] arguments) => _logger.Error(message, arguments); - - public void LogError(Exception? exception, string message, params object?[] arguments) => - _logger.Error(exception, message, arguments); - - public void Fatal(Exception? exception, string message, params object?[] arguments) => - _logger.Fatal(exception, message, arguments); + Func formatter + ) => logger.Log(GetLevel(speckleLogLevel), new EventId(eventId), state, exception, formatter); } diff --git a/Sdk/Speckle.Connectors.Logging/packages.lock.json b/Sdk/Speckle.Connectors.Logging/packages.lock.json index 3d58a2917..e54d19b96 100644 --- a/Sdk/Speckle.Connectors.Logging/packages.lock.json +++ b/Sdk/Speckle.Connectors.Logging/packages.lock.json @@ -99,6 +99,16 @@ "System.Reflection.TypeExtensions": "4.7.0" } }, + "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.Sinks.Console": { "type": "Direct", "requested": "[6.0.0, )", From 7bf287f7061a0043a914b9f5e7cca6a92f6750f0 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 27 Sep 2024 15:32:09 +0100 Subject: [PATCH 10/62] wip --- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../Receive/RhinoHostObjectBuilder.cs | 14 ++- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../Speckle.Converters.RevitShared.projitems | 4 +- .../Raw/BaseToHostGeometryObjectConverter.cs | 26 +++-- .../Geometry/IRawEncodedObjectConverter.cs | 34 ++++++ .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../GlobalUsings.cs | 1 + ...ckleToHostGeometryBaseTopLevelConverter.cs | 42 +++++-- .../ToHost/Raw/BrepXToHostConverter.cs | 45 ++++++++ .../TopLevel/BrepXToHostTopLevelConverter.cs | 34 ++++++ .../ToSpeckle/Encoding/RawEncodingCreator.cs | 50 ++++++++ .../ToSpeckle/Meshing/DisplayMeshExtractor.cs | 38 ++++++ .../ToSpeckle/Raw/BrepToSpeckleConverter.cs | 33 +----- .../ToSpeckle/Raw/BrepXToSpeckleConverter.cs | 24 ++++ .../BrepObjectToSpeckleTopLevelConverter.cs | 29 ++++- ...trusionObjectToSpeckleTopLevelConverter.cs | 29 ++++- .../SubDObjectToSpeckleTopLevelConverter.cs | 28 ++++- .../packages.lock.json | 54 ++++----- .../packages.lock.json | 108 ++++++++---------- .../Speckle.Connectors.DUI/packages.lock.json | 52 ++++----- .../packages.lock.json | 48 ++++---- .../packages.lock.json | 52 ++++----- .../packages.lock.json | 51 ++++----- .../FileOps/TempFileProvider.cs | 24 ++++ .../packages.lock.json | 48 ++++---- 51 files changed, 1248 insertions(+), 1132 deletions(-) create mode 100644 Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs create mode 100644 Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index 53c11bdb0..f980527ee 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -230,8 +230,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -239,7 +239,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -264,7 +264,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -294,33 +316,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 5db40f1a2..c5cff192f 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -294,7 +294,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -330,33 +352,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 848ab1403..fb8402174 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -294,7 +294,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -330,33 +352,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index 487e222a2..ddfd7e723 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -295,7 +295,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -331,33 +353,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 5943d991f..23bf5bcdd 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -224,8 +224,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -233,7 +233,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -295,33 +317,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index d95249c49..b4bed77f6 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -269,8 +269,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -304,7 +304,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -340,33 +362,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 10245828f..0440d1d18 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -288,8 +288,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -297,7 +297,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2022": { @@ -318,6 +319,27 @@ "Speckle.Revit.API": "[2022.0.2.1, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -345,39 +367,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2022.0.2.1", "contentHash": "IrLN4WyI2ix+g3zCpo7sX8zNB3FrtrdQ3E2RpceGVPNG00v8OfD+Kei7o1bn1u/ML46iBYRAr/JcsLbwfUQsBw==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 12286f08c..393586a09 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -288,8 +288,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -297,7 +297,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2023": { @@ -318,6 +319,27 @@ "Speckle.Revit.API": "[2023.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -345,39 +367,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2023.0.0", "contentHash": "tq40eD7psgTbV+epNouYyqfo6+hEi7FmXZqcxEOsAV7zfYyWhL6Rt3vmojkWGNuerGbH6oRI6KIIxrnlCNb8Hw==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 36bb56210..e0fc3c87b 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -288,8 +288,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -297,7 +297,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2024": { @@ -318,6 +319,27 @@ "Speckle.Revit.API": "[2024.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -345,39 +367,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2024.0.0", "contentHash": "a4dsvZ00ocvzTgCD6dUdydf0jIZDVcDhs6dUX9cv+y3aTDbU8rmzhYXWt8sThedIG+IPSVa0vHmAH9pKiJL3SQ==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 39e6473a6..4fb365ea5 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -246,8 +246,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -255,7 +255,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -273,7 +273,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2025": { @@ -283,6 +284,27 @@ "Speckle.Revit.API": "[2025.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -316,39 +338,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2025.0.0", "contentHash": "Hwf/3Ydc7KxvjgD9pSZKLSJRsFTsxYg95YyTm6f43hcsGjmk49GsLFQt921Z9OcvUVewOggQHcmBgti+P2EPHw==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index d8bdfd8c6..a4b1127be 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -269,8 +269,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -296,7 +296,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.rhino7": { @@ -306,6 +307,27 @@ "Speckle.Converters.Common": "[1.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -339,33 +361,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index b7832193a..546e8f5fa 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -269,8 +269,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -278,7 +278,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -296,7 +296,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.rhino8": { @@ -306,6 +307,27 @@ "Speckle.Converters.Common": "[1.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -339,33 +361,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs index 90a6a5783..e1d92dd5b 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs @@ -140,8 +140,20 @@ CancellationToken cancellationToken { var guid = BakeObject(geometryBase, obj, layerIndex); conversionIds.Add(guid.ToString()); + } + else if (result is List geometryBases) // one to many raw encoding case + { + // NOTE: I'm unhappy about this case (dim). It's needed as the raw encoder approach can hypothetically return + // multiple "geometry bases" - but this is not a fallback conversion. + // EXTRA NOTE: Oguzhan says i shouldn't be unhappy about this - it's a legitimate case + // EXTRA EXTRA NOTE: TY Ogu, i am no longer than unhappy about it. It's legit "mess". + foreach (var gb in geometryBases) + { + var guid = BakeObject(gb, obj, layerIndex); + conversionIds.Add(guid.ToString()); + } } - else if (result is IEnumerable<(object, Base)> fallbackConversionResult) + else if (result is IEnumerable<(object, Base)> fallbackConversionResult) // one to many fallback conversion { var guids = BakeObjectsAsGroup(fallbackConversionResult, obj, layerIndex, baseLayerName); conversionIds.AddRange(guids.Select(id => id.ToString())); diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index 7800a6e94..3bceb17fc 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -223,7 +223,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -243,33 +265,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 1263be458..bbd8a4eb8 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 0de215d7c..3eeaff777 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 281b57525..60772a5ad 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -287,7 +287,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -323,33 +345,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 1ccdd07a0..13346d450 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -224,8 +224,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -233,7 +233,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -251,7 +251,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -287,33 +309,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index ef914dc48..5306b3dcf 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -268,7 +268,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -288,33 +310,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 3dbff6d8e..2b0656cc3 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -349,7 +349,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -376,33 +398,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 864ede376..401565a8b 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index 68a841dfb..482599128 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -349,7 +349,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -376,33 +398,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index 9d9b1da8e..b5c1a5185 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index cdf30fe53..ac236cc0c 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -349,7 +349,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -376,33 +398,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 401fd38c2..c1bd36b96 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index e72b2bd01..66c8f2234 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -223,7 +223,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -243,33 +265,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems b/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems index c33cdb8a9..4b48714aa 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems +++ b/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems @@ -38,6 +38,7 @@ + @@ -99,7 +100,4 @@ - - - \ No newline at end of file diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs index 9f3fac0d8..ea5f2ff40 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs @@ -1,5 +1,6 @@ using System.Collections; using Speckle.Converters.Common; +using Speckle.Converters.Common.FileOps; using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Settings; using Speckle.Objects; @@ -46,14 +47,16 @@ IConverterSettingsStore settings var meshes = _meshConverter.Convert(mesh).Cast(); result.AddRange(meshes); break; - case SOG.Brep burp: - // should be try caught and default back to mesh - var boss = TryImportBrepShape(burp); - if (boss != null) - { - result.AddRange(boss); - } + case SOG.IRawEncodedObject elon: break; + // case SOG.BrepX burp: + // // should be try caught and default back to mesh + // var boss = TryImportBrepShape(burp); + // if (boss != null) + // { + // result.AddRange(boss); + // } + // break; default: var displayValue = target.TryGetDisplayValue(); if ((displayValue is IList && !displayValue.Any()) || displayValue is null) @@ -65,19 +68,18 @@ IConverterSettingsStore settings { result.AddRange(Convert(display)); } - break; } return result; } - public IEnumerable TryImportBrepShape(SOG.Brep burp) + public IEnumerable TryImportBrepShape(SOG.BrepX burp) { - var burpRhinoContents = burp["fileBlob"] as string; // note: temp, this is for now 3dm specific (?) + var burpRhinoContents = burp.encodedValue.contents; var fileBytes = System.Convert.FromBase64String(burpRhinoContents!); - var filePath = Path.Combine(Path.GetTempPath(), "Speckle", "Revit Import", $"{Guid.NewGuid():N}.3dm"); - Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), "Speckle", "Revit Import")); + + var filePath = TempFileProvider.GetTempFile("RevitX", burp.encodedValue.format); File.WriteAllBytes(filePath, fileBytes); using var importer = new DB.ShapeImporter(); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs new file mode 100644 index 000000000..476cbf5d9 --- /dev/null +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -0,0 +1,34 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.FileOps; +using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared.Settings; + +namespace Speckle.Converters.Revit2023.ToHost.Raw.Geometry; + +public class IRawEncodedObjectConverter : ITypedConverter> +{ + private readonly IConverterSettingsStore _settings; + + public IRawEncodedObjectConverter(IConverterSettingsStore settings) + { + _settings = settings; + } + + public List Convert(SOG.IRawEncodedObject target) + { + var raw = target.encodedValue.contents; + var bytes = System.Convert.FromBase64String(raw!); + var filePath = TempFileProvider.GetTempFile("RevitX", target.encodedValue.format); + File.WriteAllBytes(filePath, bytes); + + using var importer = new DB.ShapeImporter(); + var shapeImportResult = importer.Convert(_settings.Current.Document, filePath).OfType(); + + // // note: scaling is a todo + // // DB.SolidUtils.CreateTransformed(shape, DB.Transform.Identity); + + // _settings.Document.Paint(); + + return shapeImportResult.ToList(); + } +} diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 146519ee8..f76c4baa4 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -349,7 +349,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -376,33 +398,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index a8ac32461..9a7a71d69 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 793da53a3..66d2257d6 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -259,7 +259,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -279,33 +301,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs index a26246d61..1cf1bacc9 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs @@ -1,3 +1,4 @@ global using RG = Rhino.Geometry; global using SOG = Speckle.Objects.Geometry; global using SOP = Speckle.Objects.Primitive; +global using SO = Speckle.Objects.Other; diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs index a7f4914e7..02c5dfdd9 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs @@ -7,9 +7,8 @@ namespace Speckle.Converters.Rhino; public abstract class SpeckleToHostGeometryBaseTopLevelConverter : IToHostTopLevelConverter where TIn : Base - where TOut : RG.GeometryBase { - protected IConverterSettingsStore SettingsStore { get; private set; } + private readonly IConverterSettingsStore _settingsStore; private readonly ITypedConverter _geometryBaseConverter; protected SpeckleToHostGeometryBaseTopLevelConverter( @@ -17,7 +16,7 @@ protected SpeckleToHostGeometryBaseTopLevelConverter( ITypedConverter geometryBaseConverter ) { - SettingsStore = settingsStore; + _settingsStore = settingsStore; _geometryBaseConverter = geometryBaseConverter; } @@ -26,18 +25,37 @@ public object Convert(Base target) var castedBase = (TIn)target; var result = _geometryBaseConverter.Convert(castedBase); - /* - * POC: CNX-9270 Looking at a simpler, more performant way of doing unit scaling on `ToNative` - * by fully relying on the transform capabilities of the HostApp, and only transforming top-level stuff. - * This may not hold when adding more complex conversions, but it works for now! - */ - if (castedBase["units"] is string units) + if (result is null) { - var scaleFactor = Units.GetConversionFactor(units, SettingsStore.Current.SpeckleUnits); - var scale = RG.Transform.Scale(RG.Point3d.Origin, scaleFactor); - result.Transform(scale); + throw new SpeckleConversionException( + $"Geometry base converter returned null for base object of type {target.speckle_type}"); + } + + var units = castedBase["units"] as string; + if (result is RG.GeometryBase geometryBase && units is not null) + { + geometryBase.Transform(GetScaleTransform(units)); + return geometryBase; + } + + if (result is List geometryBases && units is not null) + { + var t = GetScaleTransform(units); + foreach (var gb in geometryBases) + { + gb.Transform(t); + } + + return geometryBases; } return result; } + + private RG.Transform GetScaleTransform(string from) + { + var scaleFactor = Units.GetConversionFactor(from, _settingsStore.Current.SpeckleUnits); + var scale = RG.Transform.Scale(RG.Point3d.Origin, scaleFactor); + return scale; + } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs new file mode 100644 index 000000000..b5f5b4e06 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs @@ -0,0 +1,45 @@ +using Rhino.FileIO; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; + +namespace Speckle.Converters.Rhino.ToHost.Raw; + +public class BrepXToHostConverter: ITypedConverter> +{ + public List Convert(SOG.BrepX target) => RawEncodingToHost.Convert(target); +} + +public class SubDXToHostConverter: ITypedConverter> +{ + public List Convert(SOG.SubDX target) => RawEncodingToHost.Convert(target); +} + +public class ExtrusionElonMuskXToHostConverter: ITypedConverter> +{ + public List Convert(SOG.ExtrusionX target) => RawEncodingToHost.Convert(target); +} + + + +public static class RawEncodingToHost +{ + public static List Convert(SOG.IRawEncodedObject target) + { + // note: I am not sure that we're going to have other encoding formats, but who knows. + switch (target.encodedValue.format) + { + case SO.RawEncodingFormats.RHINO_3DM: + return Handle3dm(target); + default: + throw new SpeckleConversionException($"Unsupported brep encoding format: {target.encodedValue.format}"); + } + } + + private static List Handle3dm(SOG.IRawEncodedObject target) + { + var bytes = System.Convert.FromBase64String(target.encodedValue.contents); + var file = File3dm.FromByteArray(bytes); + var brepObject = file.Objects.Select(o => o.Geometry); + return brepObject.ToList(); + } +} diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs new file mode 100644 index 000000000..af264c492 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs @@ -0,0 +1,34 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +namespace Speckle.Converters.Rhino.ToHost.TopLevel; + +[NameAndRankValue(nameof(SOG.BrepX), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] +public class BrepXToHostTopLevelConverter : SpeckleToHostGeometryBaseTopLevelConverter> +{ + public BrepXToHostTopLevelConverter( + IConverterSettingsStore settingsStore, + ITypedConverter> geometryBaseConverter + ) + : base(settingsStore, geometryBaseConverter) { } +} + +[NameAndRankValue(nameof(SOG.SubDX), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] +public class SubDXToHostTopLevelConverter : SpeckleToHostGeometryBaseTopLevelConverter> +{ + public SubDXToHostTopLevelConverter( + IConverterSettingsStore settingsStore, + ITypedConverter> geometryBaseConverter + ) + : base(settingsStore, geometryBaseConverter) { } +} + +[NameAndRankValue(nameof(SOG.ExtrusionX), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] +public class ExtrusionXToHostTopLevelConverter : SpeckleToHostGeometryBaseTopLevelConverter> +{ + public ExtrusionXToHostTopLevelConverter( + IConverterSettingsStore settingsStore, + ITypedConverter> geometryBaseConverter + ) + : base(settingsStore, geometryBaseConverter) { } +} + diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs new file mode 100644 index 000000000..f398e6942 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs @@ -0,0 +1,50 @@ +using Rhino; +using Rhino.FileIO; +using Speckle.Converters.Common; + +namespace Speckle.Converters.Rhino.ToSpeckle.Encoding; + +internal static class RawEncodingCreator +{ + public static SO.RawEncoding Encode(RG.GeometryBase target, RhinoDoc doc) + { + // note: this way works too, but we need to write the file to disk before reading it back out. + // using var doc = RhinoDoc.CreateHeadless(default); + // doc.ModelUnitSystem = _settingsStore.Current.Document.ModelUnitSystem; + // doc.ModelAbsoluteTolerance = _settingsStore.Current.Document.ModelAbsoluteTolerance; + // doc.ModelAngleToleranceRadians = _settingsStore.Current.Document.ModelAngleToleranceRadians; + // doc.Objects.Add(target); + + // var tempFile = TempFileProvider.GetTempFile(_speckleApplication.Slug, "3dm"); + // doc.Write3dmFile(tempFile, new FileWriteOptions() { IncludeRenderMeshes = false, WriteGeometryOnly = true, IncludeHistory = false, WriteUserData = false}); + // var fileBytes = System.Convert.ToBase64String(File.ReadAllBytes(tempFile)); + // var brepXEncoding = new SOG.BrepXEncoding() { contents = fileBytes, format = "3dm" }; + // return brepXEncoding; + + // note: this way works probably better as we don't need to write the file to disk and read it back in. + using var file = new File3dm(); + switch (target) + { + case RG.Brep b: + file.Objects.AddBrep(b); + break; + case RG.Extrusion e: + file.Objects.AddExtrusion(e); + break; + case RG.SubD d: + file.Objects.AddSubD(d); + break; + default: + throw new SpeckleConversionException($"Unsupported type for encoding: {target.GetType().FullName}"); + } + + file.Settings.ModelUnitSystem = doc.ModelUnitSystem; + file.Settings.ModelAbsoluteTolerance = doc.ModelAbsoluteTolerance; + file.Settings.ModelAngleToleranceRadians = doc.ModelAngleToleranceRadians; + + var fb = file.ToByteArray(new File3dmWriteOptions() { SaveUserData = false, Version = 7 }); + var fbString = System.Convert.ToBase64String(fb); + var bxe = new SO.RawEncoding() { contents = fbString, format = SO.RawEncodingFormats.RHINO_3DM }; + return bxe; + } +} diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs new file mode 100644 index 000000000..b583b4258 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs @@ -0,0 +1,38 @@ +using Rhino.DocObjects; +using Speckle.Converters.Common; + +namespace Speckle.Converters.Rhino.ToSpeckle.Meshing; + +public static class DisplayMeshExtractor +{ + public static RG.Mesh GetDisplayMesh(RhinoObject obj) + { + // note: unsure this is nice, we get bigger meshes - we should to benchmark (conversion time vs size tradeoffs) + var renderMeshes = obj.GetMeshes(RG.MeshType.Render); + if (renderMeshes.Length == 0) + { + switch (obj) + { + case BrepObject brep: + renderMeshes = RG.Mesh.CreateFromBrep(brep.BrepGeometry, new(0.05, 0.05)); + break; + case ExtrusionObject extrusion: + renderMeshes = RG.Mesh.CreateFromBrep(extrusion.ExtrusionGeometry.ToBrep(), new(0.05, 0.05)); + break; + case SubDObject subDObject: +#pragma warning disable CA2000 + var mesh = RG.Mesh.CreateFromSubD(subDObject.Geometry as RG.SubD, 0); +#pragma warning restore CA2000 + renderMeshes = [ mesh ]; + break; + default: + throw new SpeckleConversionException( + $"Unsupported object for display mesh generation {obj.GetType().FullName}"); + } + } + + var joinedMesh = new RG.Mesh(); + joinedMesh.Append(renderMeshes); + return joinedMesh; + } +} diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs index 324f0d52b..dd77108e0 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs @@ -1,6 +1,4 @@ -using Rhino; -using Rhino.FileIO; -using Speckle.Converters.Common; +using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Objects; using Speckle.Sdk; @@ -45,7 +43,7 @@ IConverterSettingsStore settingsStore public SOG.Brep Convert(RG.Brep target) { var tol = _settingsStore.Current.Document.ModelAbsoluteTolerance; - target.Repair(tol); + //target.Repair(tol); // POC: CNX-9276 This should come as part of the user settings in the context object. // if (PreprocessGeometry) @@ -103,32 +101,7 @@ public SOG.Brep Convert(RG.Brep target) Trims = new(target.Trims.Count), Faces = new(target.Faces.Count) }; - - var options = new SerializationOptions() { WriteUserData = false }; - var shallowBrep = target.DuplicateShallow(); - // var openNurbs = shallowBrep.ToJSON(options); - - var filePath = Path.Combine(Path.GetTempPath(), "Speckle", $"{Guid.NewGuid():N}.3dm"); - var filePath2 = Path.Combine(Path.GetTempPath(), "Speckle", $"{Guid.NewGuid():N}-doc.3dm"); - Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), "Speckle")); - - using (var doc = RhinoDoc.CreateHeadless(default)) - { - doc.ModelUnitSystem = _settingsStore.Current.Document.ModelUnitSystem; - doc.ModelAbsoluteTolerance = _settingsStore.Current.Document.ModelAbsoluteTolerance; - doc.ModelAngleToleranceRadians = _settingsStore.Current.Document.ModelAngleToleranceRadians; - - doc.Objects.Add(target); - doc.Write3dmFile(filePath2, new FileWriteOptions() { IncludeRenderMeshes = false }); - } - - var fileBytes = System.Convert.ToBase64String(File.ReadAllBytes(filePath2)); - speckleBrep["fileBlob"] = fileBytes; - // File.Delete(filePath2); - - // var blob = new Blob() { originalPath = filePath2, applicationId = Guid.NewGuid().ToString() }; - - // speckleBrep["blob"] = blob; + // Brep non-geometry types ConvertBrepFaces(target, speckleBrep); ConvertBrepEdges(target, speckleBrep); diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs new file mode 100644 index 000000000..8cdc6ed56 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs @@ -0,0 +1,24 @@ +// using Speckle.Converters.Common; +// using Speckle.Converters.Common.Objects; +// using Speckle.Converters.Rhino.ToSpeckle.Encoding; +// +// namespace Speckle.Converters.Rhino.ToSpeckle.Raw; +// +// public class BrepXToSpeckleConverter(IConverterSettingsStore settingsStore) +// : ITypedConverter +// { +// public SO.RawEncoding Convert(RG.Brep target) => RawEncodingCreator.Encode(target, settingsStore.Current.Document); +// } +// +// public class ExtrusionXToSpeckleConverter(IConverterSettingsStore settingsStore) +// : ITypedConverter +// { +// public SO.RawEncoding Convert(RG.Extrusion target) => RawEncodingCreator.Encode(target, settingsStore.Current.Document); +// } +// +// public class SubDXToSpeckleConverter(IConverterSettingsStore settingsStore) +// : ITypedConverter +// { +// public SO.RawEncoding Convert(RG.SubD target) => RawEncodingCreator.Encode(target, settingsStore.Current.Document); +// } +// diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs index e14a019ca..0e245af63 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs @@ -1,6 +1,8 @@ using Rhino.DocObjects; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino.ToSpeckle.Encoding; +using Speckle.Converters.Rhino.ToSpeckle.Meshing; using Speckle.Sdk.Models; namespace Speckle.Converters.Rhino.ToSpeckle.TopLevel; @@ -8,17 +10,32 @@ namespace Speckle.Converters.Rhino.ToSpeckle.TopLevel; [NameAndRankValue(nameof(BrepObject), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class BrepObjectToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _curveConverter; + private readonly ITypedConverter _meshConverter; + private readonly IConverterSettingsStore _settingsStore; - public BrepObjectToSpeckleTopLevelConverter(ITypedConverter curveConverter) + public BrepObjectToSpeckleTopLevelConverter( + ITypedConverter meshConverter, + IConverterSettingsStore settingsStore) { - _curveConverter = curveConverter; + _meshConverter = meshConverter; + _settingsStore = settingsStore; } public Base Convert(object target) { - var curveObject = (BrepObject)target; - var speckleCurve = _curveConverter.Convert(curveObject.BrepGeometry); - return speckleCurve; + var brepObject = (BrepObject)target; + var brepEncoding = RawEncodingCreator.Encode(brepObject.Geometry, _settingsStore.Current.Document); + + var mesh = DisplayMeshExtractor.GetDisplayMesh(brepObject); + var displayValue = new List { _meshConverter.Convert(mesh) }; + + var bx = new SOG.BrepX() + { + displayValue = displayValue, + encodedValue = brepEncoding, + units = _settingsStore.Current.SpeckleUnits + }; + + return bx; } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs index 9ea18de4b..ad47c9991 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs @@ -1,6 +1,8 @@ using Rhino.DocObjects; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino.ToSpeckle.Encoding; +using Speckle.Converters.Rhino.ToSpeckle.Meshing; using Speckle.Sdk.Models; namespace Speckle.Converters.Rhino.ToSpeckle.TopLevel; @@ -8,17 +10,32 @@ namespace Speckle.Converters.Rhino.ToSpeckle.TopLevel; [NameAndRankValue(nameof(ExtrusionObject), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class ExtrusionObjectToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _curveConverter; + private readonly ITypedConverter _meshConverter; + private readonly IConverterSettingsStore _settingsStore; - public ExtrusionObjectToSpeckleTopLevelConverter(ITypedConverter curveConverter) + public ExtrusionObjectToSpeckleTopLevelConverter( + ITypedConverter meshConverter, + IConverterSettingsStore settingsStore) { - _curveConverter = curveConverter; + _meshConverter = meshConverter; + _settingsStore = settingsStore; } public Base Convert(object target) { - var curveObject = (ExtrusionObject)target; - var speckleCurve = _curveConverter.Convert(curveObject.ExtrusionGeometry.ToBrep()); - return speckleCurve; + var extrusionObject = (ExtrusionObject)target; + var extrusionEncoding = RawEncodingCreator.Encode(extrusionObject.Geometry, _settingsStore.Current.Document); + + var mesh = DisplayMeshExtractor.GetDisplayMesh(extrusionObject); + var displayValue = new List { _meshConverter.Convert(mesh) }; + + var bx = new SOG.ExtrusionX() + { + displayValue = displayValue, + encodedValue = extrusionEncoding, + units = _settingsStore.Current.SpeckleUnits + }; + + return bx; } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs index 479ff68b2..e2a1e2da9 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs @@ -1,6 +1,8 @@ using Rhino.DocObjects; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino.ToSpeckle.Encoding; +using Speckle.Converters.Rhino.ToSpeckle.Meshing; using Speckle.Sdk.Models; namespace Speckle.Converters.Rhino.ToSpeckle.TopLevel; @@ -8,18 +10,32 @@ namespace Speckle.Converters.Rhino.ToSpeckle.TopLevel; [NameAndRankValue(nameof(SubDObject), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class SubDObjectToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _brepConverter; + private readonly ITypedConverter _meshConverter; + private readonly IConverterSettingsStore _settingsStore; - public SubDObjectToSpeckleTopLevelConverter(ITypedConverter curveConverter) + public SubDObjectToSpeckleTopLevelConverter( + ITypedConverter meshConverter, + IConverterSettingsStore settingsStore) { - _brepConverter = curveConverter; + _meshConverter = meshConverter; + _settingsStore = settingsStore; } public Base Convert(object target) { var subDObject = (SubDObject)target; - var subD = (RG.SubD)subDObject.Geometry; - var speckleCurve = _brepConverter.Convert(subD.ToBrep()); - return speckleCurve; + var subdEncoding = RawEncodingCreator.Encode(subDObject.Geometry, _settingsStore.Current.Document); + + var mesh = DisplayMeshExtractor.GetDisplayMesh(subDObject); + var displayValue = new List { _meshConverter.Convert(mesh) }; + + var bx = new SOG.SubDX() + { + displayValue = displayValue, + encodedValue = subdEncoding, + units = _settingsStore.Current.SpeckleUnits + }; + + return bx; } } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 50599e569..f0fd3475a 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -328,8 +328,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -337,13 +337,34 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "speckle.testing": { "type": "Project", "dependencies": { @@ -378,33 +399,6 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index d9998e0f7..24bcfae25 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -269,13 +269,34 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -303,33 +324,6 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", @@ -560,8 +554,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -569,13 +563,34 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.145, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -603,33 +618,6 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 05acaaa5f..7d2c324a7 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -39,24 +39,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "Speckle.Sdk": { - "type": "Direct", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "Direct", "requested": "[6.0.0, )", @@ -311,13 +293,34 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -338,15 +341,6 @@ "Microsoft.Extensions.Logging.Abstractions": "2.2.0", "Microsoft.Extensions.Options": "2.2.0" } - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } } } } diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index f8cbfc650..01693518d 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -42,33 +42,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "Speckle.Objects": { - "type": "Direct", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "Direct", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -315,6 +288,27 @@ "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index f16451831..cb7164f27 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -328,13 +328,34 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )", - "Speckle.Sdk": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "speckle.testing": { "type": "Project", "dependencies": { @@ -368,33 +389,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index 3d9dc7029..ce17b7502 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -336,7 +336,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.145, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -363,33 +385,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs b/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs new file mode 100644 index 000000000..0d588c913 --- /dev/null +++ b/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs @@ -0,0 +1,24 @@ +namespace Speckle.Converters.Common.FileOps; + +public static class TempFileProvider // note should be in connector, and connector should nuke its folder on startup +{ + public static string GetTempFile(string appSlug, string extension) + { + var folderPath = GetTempFolderPath(appSlug); + var filePath = Path.Combine(folderPath, $"{Guid.NewGuid():N}.{extension}"); + return filePath; + } + + public static void CleanTempFolder(string appSlug) // note, not used? + { + var folderPath = GetTempFolderPath(appSlug); + Directory.Delete(folderPath, true); + } + + private static string GetTempFolderPath(string appSlug) + { + var folderPath = Path.Combine(Path.GetTempPath(), "Speckle", appSlug); + Directory.CreateDirectory(folderPath); + return folderPath; + } +} diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 2cf3d50e4..59be6bd6f 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -39,15 +39,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "Speckle.Objects": { - "type": "Direct", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "gpENXDB2i8SiXJZwrLVfB3BwKF1FHUSpPiw0BQ3Hl0V3821UWZjPYw5XK694oxJlVAeEMRvrMZMGsWOcK+3nMw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.145" - } - }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -291,6 +282,27 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.3" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -302,24 +314,6 @@ "Microsoft.Extensions.Logging.Abstractions": "2.2.0", "Microsoft.Extensions.Options": "2.2.0" } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.145, )", - "resolved": "3.1.0-dev.145", - "contentHash": "YZLtitiVIxl12pNTXaB9gU+paNwFe++WBw6oIN6Rs5hFPialUgeKbpjh16Zq6wcptjBpvg0CHq29+d456QUAJQ==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } From 4333bfbeb344504f698be50d6d6e679c15b520e4 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 27 Sep 2024 17:01:51 +0100 Subject: [PATCH 11/62] wip: revit materials hack for painting post conversion --- .../Receive/RevitHostObjectBuilder.cs | 40 ++++++++++++++-- .../RevitRootToHostConverter.cs | 47 ++++++++++--------- .../Geometry/IRawEncodedObjectConverter.cs | 10 ---- 3 files changed, 60 insertions(+), 37 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index b270b084e..a74c4b8ca 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -9,6 +9,7 @@ using Speckle.Converters.Common; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Settings; +using Speckle.Objects.Geometry; using Speckle.Sdk; using Speckle.Sdk.Logging; using Speckle.Sdk.Models; @@ -129,11 +130,34 @@ CancellationToken cancellationToken _transactionManager.CommitTransaction(); transactionGroup.Assimilate(); } - + using TransactionGroup createGroupTransaction = new(_converterSettings.Current.Document, "Creating group"); createGroupTransaction.Start(); _transactionManager.StartTransaction(true); + foreach (var (res, applicationId) in conversionResults.Item2) + { + var elGeometry = res.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); + var materialId = ElementId.InvalidElementId; + if ( + _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(applicationId, out var mappedElementId) + ) + { + materialId = mappedElementId; + } + // NOTE: some geometries fail to convert as solids, and the api defaults back to meshes (from the shape importer). These cannot be painted, so don't bother. + foreach (var geo in elGeometry) + { + if (geo is Solid s) + { + foreach (Face face in s.Faces) + { + _converterSettings.Current.Document.Paint(res.Id, face, materialId); + } + } + } + } + try { _groupBaker.BakeGroups(baseGroupName); @@ -151,10 +175,10 @@ CancellationToken cancellationToken _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); // Massive hack! - return conversionResults; + return conversionResults.Item1; } - private HostObjectBuilderResult BakeObjects( + private (HostObjectBuilderResult, List<(DirectShape res, string applicationId)>) BakeObjects( List localToGlobalMaps, Action? onOperationProgressed, CancellationToken cancellationToken @@ -164,7 +188,9 @@ CancellationToken cancellationToken var conversionResults = new List(); var bakedObjectIds = new List(); int count = 0; - + + var toPaintLater = new List<(DirectShape res, string applicationId)>(); + foreach (LocalToGlobalMap localToGlobalMap in localToGlobalMaps) { cancellationToken.ThrowIfCancellationRequested(); @@ -183,6 +209,10 @@ CancellationToken cancellationToken { bakedObjectIds.Add(ds.UniqueId.ToString()); _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, ds); + if (atomicObject is IRawEncodedObject && atomicObject is Base myBase) + { + toPaintLater.Add((ds, myBase.applicationId ?? myBase.id)); + } } else { @@ -195,7 +225,7 @@ CancellationToken cancellationToken conversionResults.Add(new(Status.ERROR, localToGlobalMap.AtomicObject, null, null, ex)); } } - return new(bakedObjectIds, conversionResults); + return (new(bakedObjectIds, conversionResults), toPaintLater); } private void PreReceiveDeepClean(string baseGroupName) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs index 207c622dc..d69bc0371 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs @@ -34,12 +34,12 @@ public object Convert(Base target) } // create direct shape from geometries - DB.DirectShape result = CreateDirectShape(geometryObjects, target, target["category"] as string); + DB.DirectShape result = CreateDirectShape(geometryObjects, target["category"] as string); return result; } - private DB.DirectShape CreateDirectShape(List geometry, Base originalObject, string? category) + private DB.DirectShape CreateDirectShape(List geometry, string? category) { // set ds category var dsCategory = BuiltInCategory.OST_GenericModel; @@ -67,26 +67,29 @@ private DB.DirectShape CreateDirectShape(List geometry, Base ori result.SetShape(geometry); - if (originalObject is SOG.IRawEncodedObject) - { - var materialId = DB.ElementId.InvalidElementId; - if ( - _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(originalObject.applicationId ?? originalObject.id, out var mappedElementId) - ) - { - materialId = mappedElementId; - } - - // if(materialId == DB.ElementId.InvalidElementId) - - foreach (var geo in geometry) - { - if (geo is Face f) - { - _converterSettings.Current.Document.Paint(result.Id, f, materialId); - } - } - } + // if (originalObject is SOG.IRawEncodedObject) + // { + // var materialId = DB.ElementId.InvalidElementId; + // if ( + // _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(originalObject.applicationId ?? originalObject.id, out var mappedElementId) + // ) + // { + // materialId = mappedElementId; + // } + // + // // if(materialId == DB.ElementId.InvalidElementId) + // var elGeometry = result.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); + // foreach (var geo in elGeometry) + // { + // if (geo is Solid s) + // { + // foreach (Face face in s.Faces) + // { + // _converterSettings.Current.Document.Paint(result.Id, face, materialId); + // } + // } + // } + // } return result; } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index ae9db3a61..72b73648b 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -3,7 +3,6 @@ using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Settings; -using Speckle.Sdk.Models; namespace Speckle.Converters.Revit2023.ToHost.Raw.Geometry; @@ -34,15 +33,6 @@ public IRawEncodedObjectConverter(IConverterSettingsStore Date: Mon, 30 Sep 2024 12:37:18 +0300 Subject: [PATCH 12/62] Dev mode active in Local env --- DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs b/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs index b8d86603a..b51c12133 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs @@ -37,7 +37,7 @@ JsonSerializerSettings serializerOptions public bool GetIsDevMode() #pragma warning restore CA1024 { -#if DEBUG +#if DEBUG || LOCAL return true; #else return false; From bce9ed7a6f4a4e5e4bd852ebc1279045ba11bc93 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Mon, 30 Sep 2024 16:53:23 +0300 Subject: [PATCH 13/62] Create direct shape definitions --- .../Receive/RevitHostObjectBuilder.cs | 120 ++++++++++++++++-- .../RevitRootToHostConverter.cs | 8 +- 2 files changed, 114 insertions(+), 14 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index a74c4b8ca..65fb634fb 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -13,6 +13,7 @@ using Speckle.Sdk; using Speckle.Sdk.Logging; using Speckle.Sdk.Models; +using Speckle.DoubleNumerics; namespace Speckle.Connectors.Revit.Operations.Receive; @@ -197,28 +198,53 @@ CancellationToken cancellationToken try { using var activity = _activityFactory.Start("BakeObject"); - var atomicObject = _localToGlobalConverterUtils.TransformObjects( - localToGlobalMap.AtomicObject, - localToGlobalMap.Matrix - ); - var result = _converter.Convert(atomicObject); + // var atomicObject = _localToGlobalConverterUtils.TransformObjects( + // localToGlobalMap.AtomicObject, + // localToGlobalMap.Matrix + // ); + var result = _converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed?.Invoke("Converting", (double)++count / localToGlobalMaps.Count); + if (result is List) + { + Transform combinedTransform = Transform.Identity; + + foreach (Matrix4x4 matrix in localToGlobalMap.Matrix) + { + Transform revitTransform = ConvertMatrixToRevitTransform(matrix); + combinedTransform = combinedTransform.Multiply(revitTransform); + } + + var transformedGeometries = DirectShape.CreateGeometryInstance(_converterSettings.Current.Document, + localToGlobalMap.AtomicObject.applicationId ?? localToGlobalMap.AtomicObject.id, combinedTransform); + DirectShape directShapes = CreateDirectShape(transformedGeometries, localToGlobalMap.AtomicObject["category"] as string); + + bakedObjectIds.Add(directShapes.UniqueId.ToString()); + _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, directShapes); + if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) + { + toPaintLater.Add((directShapes, myBase.applicationId ?? myBase.id)); + } + conversionResults.Add(new(Status.SUCCESS, localToGlobalMap.AtomicObject, directShapes.UniqueId, "Direct Shape")); + } + // Note: our current converter always returns a DS for now if (result is DirectShape ds) { + // TODO: here I want to apply transformations (List) to my direct shape, is it possible? + bakedObjectIds.Add(ds.UniqueId.ToString()); _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, ds); - if (atomicObject is IRawEncodedObject && atomicObject is Base myBase) + if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) { toPaintLater.Add((ds, myBase.applicationId ?? myBase.id)); } } - else - { - throw new SpeckleConversionException($"Failed to cast {result.GetType()} to Direct Shape."); - } - conversionResults.Add(new(Status.SUCCESS, atomicObject, ds.UniqueId, "Direct Shape")); + // else + // { + // throw new SpeckleConversionException($"Failed to cast {result.GetType()} to Direct Shape."); + // } + // conversionResults.Add(new(Status.SUCCESS, localToGlobalMap.AtomicObject, ds.UniqueId, "Direct Shape")); } catch (Exception ex) when (!ex.IsFatal()) { @@ -227,12 +253,84 @@ CancellationToken cancellationToken } return (new(bakedObjectIds, conversionResults), toPaintLater); } + + private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix) + { + // Scale??? + var translation = new XYZ(matrix.M14, matrix.M24, matrix.M34); + var basisX = new XYZ(matrix.M11, matrix.M21, matrix.M31); + var basisY = new XYZ(matrix.M12, matrix.M22, matrix.M32); + var basisZ = new XYZ(matrix.M13, matrix.M23, matrix.M33); + + var transform = Transform.Identity; + transform.BasisX = basisX; + transform.BasisY = basisY; + transform.BasisZ = basisZ; + transform.Origin = translation; + + return transform; + } private void PreReceiveDeepClean(string baseGroupName) { _groupBaker.PurgeGroups(baseGroupName); _materialBaker.PurgeMaterials(baseGroupName); } + + private DirectShape CreateDirectShape(IList geometry, string? category) + { + // set ds category + var dsCategory = BuiltInCategory.OST_GenericModel; + if (category is string categoryString) + { + var res = Enum.TryParse($"OST_{categoryString}", out BuiltInCategory cat); + if (res) + { + var c = Category.GetCategory(_converterSettings.Current.Document, cat); + if (c is not null && DirectShape.IsValidCategoryId(c.Id, _converterSettings.Current.Document)) + { + dsCategory = cat; + } + } + } + + var result = DirectShape.CreateElement(_converterSettings.Current.Document, new ElementId(dsCategory)); + + // check for valid geometry + if (!result.IsValidShape(geometry)) + { + _converterSettings.Current.Document.Delete(result.Id); + throw new SpeckleConversionException("Invalid geometry (eg unbounded curves) found for creating directshape."); + } + + result.SetShape(geometry); + + // if (originalObject is SOG.IRawEncodedObject) + // { + // var materialId = DB.ElementId.InvalidElementId; + // if ( + // _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(originalObject.applicationId ?? originalObject.id, out var mappedElementId) + // ) + // { + // materialId = mappedElementId; + // } + // + // // if(materialId == DB.ElementId.InvalidElementId) + // var elGeometry = result.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); + // foreach (var geo in elGeometry) + // { + // if (geo is Solid s) + // { + // foreach (Face face in s.Faces) + // { + // _converterSettings.Current.Document.Paint(result.Id, face, materialId); + // } + // } + // } + // } + + return result; + } public void Dispose() { diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs index d69bc0371..f2f8951eb 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs @@ -32,11 +32,13 @@ public object Convert(Base target) { throw new SpeckleConversionException($"No supported conversion for {target.speckle_type} found."); } + + DB.DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document).AddDefinition(target.applicationId ?? target.id, geometryObjects); // create direct shape from geometries - DB.DirectShape result = CreateDirectShape(geometryObjects, target["category"] as string); - - return result; + //DB.DirectShape result = CreateDirectShape(geometryObjects, target["category"] as string); + + return geometryObjects; } private DB.DirectShape CreateDirectShape(List geometry, string? category) From aaf6759075e63f0b1504fef2e51cd704ac097d07 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Tue, 1 Oct 2024 00:01:36 +0300 Subject: [PATCH 14/62] Accounts config to keep latest user selected account persistent on UI --- .../Bindings/ConfigBinding.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs b/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs index b8d86603a..8100954a3 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs @@ -80,6 +80,36 @@ public void UpdateConfig(ConnectorConfig config) var str = JsonConvert.SerializeObject(config, _serializerOptions); ConfigStorage.UpdateObject(_speckleApplication.HostApplication, str); } + + public void SetUserSelectedAccountId(string userSelectedAccountId) + { + var str = JsonConvert.SerializeObject(new AccountsConfig() {UserSelectedAccountId = userSelectedAccountId}, _serializerOptions); + ConfigStorage.UpdateObject("accounts", str); + } + + public async Task GetUserSelectedAccountId() + { + var rawConfig = await ConfigStorage.GetObject("accounts").ConfigureAwait(false); + if (rawConfig is null) + { + return null; + } + + try + { + var config = JsonConvert.DeserializeObject(rawConfig, _serializerOptions); + if (config is null) + { + throw new SerializationException("Failed to deserialize accounts config"); + } + + return config; + } + catch (SerializationException) + { + return null; + } + } } /// @@ -89,3 +119,8 @@ public class ConnectorConfig { public bool DarkTheme { get; set; } = true; } + +public class AccountsConfig +{ + public string? UserSelectedAccountId { get; set; } +} From 0eb2b867c8045155d8a3e629189ff975ce17c775 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Tue, 1 Oct 2024 12:18:03 +0300 Subject: [PATCH 15/62] Clean up on host object builder --- .../Receive/RevitHostObjectBuilder.cs | 83 +++++-------------- .../RevitRootToHostConverter.cs | 2 +- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 65fb634fb..739ad42f3 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -198,26 +198,12 @@ CancellationToken cancellationToken try { using var activity = _activityFactory.Start("BakeObject"); - // var atomicObject = _localToGlobalConverterUtils.TransformObjects( - // localToGlobalMap.AtomicObject, - // localToGlobalMap.Matrix - // ); var result = _converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed?.Invoke("Converting", (double)++count / localToGlobalMaps.Count); if (result is List) { - Transform combinedTransform = Transform.Identity; - - foreach (Matrix4x4 matrix in localToGlobalMap.Matrix) - { - Transform revitTransform = ConvertMatrixToRevitTransform(matrix); - combinedTransform = combinedTransform.Multiply(revitTransform); - } - - var transformedGeometries = DirectShape.CreateGeometryInstance(_converterSettings.Current.Document, - localToGlobalMap.AtomicObject.applicationId ?? localToGlobalMap.AtomicObject.id, combinedTransform); - DirectShape directShapes = CreateDirectShape(transformedGeometries, localToGlobalMap.AtomicObject["category"] as string); + DirectShape directShapes = CreateDirectShape(localToGlobalMap); bakedObjectIds.Add(directShapes.UniqueId.ToString()); _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, directShapes); @@ -227,24 +213,10 @@ CancellationToken cancellationToken } conversionResults.Add(new(Status.SUCCESS, localToGlobalMap.AtomicObject, directShapes.UniqueId, "Direct Shape")); } - - // Note: our current converter always returns a DS for now - if (result is DirectShape ds) + else { - // TODO: here I want to apply transformations (List) to my direct shape, is it possible? - - bakedObjectIds.Add(ds.UniqueId.ToString()); - _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, ds); - if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) - { - toPaintLater.Add((ds, myBase.applicationId ?? myBase.id)); - } + throw new SpeckleConversionException($"Failed to cast {result.GetType()} to Direct Shape."); } - // else - // { - // throw new SpeckleConversionException($"Failed to cast {result.GetType()} to Direct Shape."); - // } - // conversionResults.Add(new(Status.SUCCESS, localToGlobalMap.AtomicObject, ds.UniqueId, "Direct Shape")); } catch (Exception ex) when (!ex.IsFatal()) { @@ -277,9 +249,10 @@ private void PreReceiveDeepClean(string baseGroupName) _materialBaker.PurgeMaterials(baseGroupName); } - private DirectShape CreateDirectShape(IList geometry, string? category) + private DirectShape CreateDirectShape(LocalToGlobalMap localToGlobalMap) { - // set ds category + // 1- set ds category + var category = localToGlobalMap.AtomicObject["category"] as string; var dsCategory = BuiltInCategory.OST_GenericModel; if (category is string categoryString) { @@ -294,40 +267,30 @@ private DirectShape CreateDirectShape(IList geometry, string? ca } } + // 2 - init DirectShape var result = DirectShape.CreateElement(_converterSettings.Current.Document, new ElementId(dsCategory)); - // check for valid geometry - if (!result.IsValidShape(geometry)) + // 3 - Transform the geometries + Transform combinedTransform = Transform.Identity; + + foreach (Matrix4x4 matrix in localToGlobalMap.Matrix) + { + Transform revitTransform = ConvertMatrixToRevitTransform(matrix); + combinedTransform = combinedTransform.Multiply(revitTransform); + } + + var transformedGeometries = DirectShape.CreateGeometryInstance(_converterSettings.Current.Document, + localToGlobalMap.AtomicObject.applicationId ?? localToGlobalMap.AtomicObject.id, combinedTransform); + + // 4- check for valid geometry + if (!result.IsValidShape(transformedGeometries)) { _converterSettings.Current.Document.Delete(result.Id); throw new SpeckleConversionException("Invalid geometry (eg unbounded curves) found for creating directshape."); } - result.SetShape(geometry); - - // if (originalObject is SOG.IRawEncodedObject) - // { - // var materialId = DB.ElementId.InvalidElementId; - // if ( - // _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(originalObject.applicationId ?? originalObject.id, out var mappedElementId) - // ) - // { - // materialId = mappedElementId; - // } - // - // // if(materialId == DB.ElementId.InvalidElementId) - // var elGeometry = result.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); - // foreach (var geo in elGeometry) - // { - // if (geo is Solid s) - // { - // foreach (Face face in s.Faces) - // { - // _converterSettings.Current.Document.Paint(result.Id, face, materialId); - // } - // } - // } - // } + // 5 - This is where we apply the geometries into direct shape. + result.SetShape(transformedGeometries); return result; } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs index f2f8951eb..544b6e35b 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs @@ -36,7 +36,7 @@ public object Convert(Base target) DB.DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document).AddDefinition(target.applicationId ?? target.id, geometryObjects); // create direct shape from geometries - //DB.DirectShape result = CreateDirectShape(geometryObjects, target["category"] as string); + // DB.DirectShape result = CreateDirectShape(geometryObjects, target["category"] as string); return geometryObjects; } From 07ded4986d2335b9f15efdb2220d7f1f96e12f44 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Tue, 1 Oct 2024 18:39:26 +0300 Subject: [PATCH 16/62] Fix the transform object --- .../Receive/RevitHostObjectBuilder.cs | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 739ad42f3..91f6a693a 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -8,6 +8,7 @@ using Speckle.Connectors.Revit.HostApp; using Speckle.Converters.Common; using Speckle.Converters.RevitShared.Helpers; +using Speckle.Converters.RevitShared.Services; using Speckle.Converters.RevitShared.Settings; using Speckle.Objects.Geometry; using Speckle.Sdk; @@ -20,6 +21,7 @@ namespace Speckle.Connectors.Revit.Operations.Receive; internal sealed class RevitHostObjectBuilder : IHostObjectBuilder, IDisposable { private readonly IRootToHostConverter _converter; + private readonly ScalingServiceToHost _scalingService; private readonly IConverterSettingsStore _converterSettings; private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; private readonly ITransactionManager _transactionManager; @@ -33,6 +35,7 @@ internal sealed class RevitHostObjectBuilder : IHostObjectBuilder, IDisposable private readonly ISdkActivityFactory _activityFactory; public RevitHostObjectBuilder( + IRootToHostConverter converter, IConverterSettingsStore converterSettings, ITransactionManager transactionManager, @@ -43,8 +46,8 @@ public RevitHostObjectBuilder( RevitMaterialBaker materialBaker, RootObjectUnpacker rootObjectUnpacker, ILogger logger, - RevitToHostCacheSingleton revitToHostCacheSingleton - ) + RevitToHostCacheSingleton revitToHostCacheSingleton, + ScalingServiceToHost scalingService) { _converter = converter; _converterSettings = converterSettings; @@ -56,6 +59,7 @@ RevitToHostCacheSingleton revitToHostCacheSingleton _rootObjectUnpacker = rootObjectUnpacker; _logger = logger; _revitToHostCacheSingleton = revitToHostCacheSingleton; + _scalingService = scalingService; _activityFactory = activityFactory; } @@ -161,7 +165,7 @@ CancellationToken cancellationToken try { - _groupBaker.BakeGroups(baseGroupName); + //_groupBaker.BakeGroups(baseGroupName); } catch (Exception ex) when (!ex.IsFatal()) { @@ -226,19 +230,34 @@ CancellationToken cancellationToken return (new(bakedObjectIds, conversionResults), toPaintLater); } - private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix) + private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix, string? units) { - // Scale??? - var translation = new XYZ(matrix.M14, matrix.M24, matrix.M34); - var basisX = new XYZ(matrix.M11, matrix.M21, matrix.M31); - var basisY = new XYZ(matrix.M12, matrix.M22, matrix.M32); - var basisZ = new XYZ(matrix.M13, matrix.M23, matrix.M33); - var transform = Transform.Identity; - transform.BasisX = basisX; - transform.BasisY = basisY; - transform.BasisZ = basisZ; - transform.Origin = translation; + if (matrix.M44 == 0 || units is null) // TODO: check units nullability? + { + return transform; + } + + var tX = _scalingService.ScaleToNative(matrix.M14 / matrix.M44, units); + var tY = _scalingService.ScaleToNative(matrix.M24 / matrix.M44, units); + var tZ = _scalingService.ScaleToNative(matrix.M34 / matrix.M44, units); + var t = new XYZ(tX, tY, tZ); + + // basis vectors + XYZ vX = new(matrix.M11, matrix.M21, matrix.M31); + XYZ vY = new(matrix.M12, matrix.M22, matrix.M32); + XYZ vZ = new(matrix.M13, matrix.M23, matrix.M33); + + // apply to new transform + transform.Origin = t; + transform.BasisX = vX.Normalize(); + transform.BasisY = vY.Normalize(); + transform.BasisZ = vZ.Normalize(); + + // TODO: check below needed? + // // apply doc transform + // var docTransform = GetDocReferencePointTransform(Doc); + // var internalTransform = docTransform.Multiply(_transform); return transform; } @@ -275,7 +294,7 @@ private DirectShape CreateDirectShape(LocalToGlobalMap localToGlobalMap) foreach (Matrix4x4 matrix in localToGlobalMap.Matrix) { - Transform revitTransform = ConvertMatrixToRevitTransform(matrix); + Transform revitTransform = ConvertMatrixToRevitTransform(matrix, localToGlobalMap.AtomicObject["units"] as string); combinedTransform = combinedTransform.Multiply(revitTransform); } From e0e6f416c0231b0f1d0138c02400df6fca50077b Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Tue, 1 Oct 2024 18:41:29 +0300 Subject: [PATCH 17/62] Format --- .../Receive/RevitHostObjectBuilder.cs | 58 ++++++++++--------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 91f6a693a..662d8b16c 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -10,11 +10,11 @@ using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Services; using Speckle.Converters.RevitShared.Settings; +using Speckle.DoubleNumerics; using Speckle.Objects.Geometry; using Speckle.Sdk; using Speckle.Sdk.Logging; using Speckle.Sdk.Models; -using Speckle.DoubleNumerics; namespace Speckle.Connectors.Revit.Operations.Receive; @@ -35,7 +35,6 @@ internal sealed class RevitHostObjectBuilder : IHostObjectBuilder, IDisposable private readonly ISdkActivityFactory _activityFactory; public RevitHostObjectBuilder( - IRootToHostConverter converter, IConverterSettingsStore converterSettings, ITransactionManager transactionManager, @@ -47,7 +46,8 @@ public RevitHostObjectBuilder( RootObjectUnpacker rootObjectUnpacker, ILogger logger, RevitToHostCacheSingleton revitToHostCacheSingleton, - ScalingServiceToHost scalingService) + ScalingServiceToHost scalingService + ) { _converter = converter; _converterSettings = converterSettings; @@ -135,7 +135,7 @@ CancellationToken cancellationToken _transactionManager.CommitTransaction(); transactionGroup.Assimilate(); } - + using TransactionGroup createGroupTransaction = new(_converterSettings.Current.Document, "Creating group"); createGroupTransaction.Start(); _transactionManager.StartTransaction(true); @@ -144,9 +144,7 @@ CancellationToken cancellationToken { var elGeometry = res.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); var materialId = ElementId.InvalidElementId; - if ( - _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(applicationId, out var mappedElementId) - ) + if (_revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(applicationId, out var mappedElementId)) { materialId = mappedElementId; } @@ -162,10 +160,10 @@ CancellationToken cancellationToken } } } - + try { - //_groupBaker.BakeGroups(baseGroupName); + _groupBaker.BakeGroups(baseGroupName); } catch (Exception ex) when (!ex.IsFatal()) { @@ -193,9 +191,9 @@ CancellationToken cancellationToken var conversionResults = new List(); var bakedObjectIds = new List(); int count = 0; - + var toPaintLater = new List<(DirectShape res, string applicationId)>(); - + foreach (LocalToGlobalMap localToGlobalMap in localToGlobalMaps) { cancellationToken.ThrowIfCancellationRequested(); @@ -208,14 +206,16 @@ CancellationToken cancellationToken if (result is List) { DirectShape directShapes = CreateDirectShape(localToGlobalMap); - + bakedObjectIds.Add(directShapes.UniqueId.ToString()); _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, directShapes); if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) { toPaintLater.Add((directShapes, myBase.applicationId ?? myBase.id)); - } - conversionResults.Add(new(Status.SUCCESS, localToGlobalMap.AtomicObject, directShapes.UniqueId, "Direct Shape")); + } + conversionResults.Add( + new(Status.SUCCESS, localToGlobalMap.AtomicObject, directShapes.UniqueId, "Direct Shape") + ); } else { @@ -229,7 +229,7 @@ CancellationToken cancellationToken } return (new(bakedObjectIds, conversionResults), toPaintLater); } - + private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix, string? units) { var transform = Transform.Identity; @@ -237,12 +237,12 @@ private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix, string? units) { return transform; } - + var tX = _scalingService.ScaleToNative(matrix.M14 / matrix.M44, units); var tY = _scalingService.ScaleToNative(matrix.M24 / matrix.M44, units); var tZ = _scalingService.ScaleToNative(matrix.M34 / matrix.M44, units); var t = new XYZ(tX, tY, tZ); - + // basis vectors XYZ vX = new(matrix.M11, matrix.M21, matrix.M31); XYZ vY = new(matrix.M12, matrix.M22, matrix.M32); @@ -253,12 +253,12 @@ private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix, string? units) transform.BasisX = vX.Normalize(); transform.BasisY = vY.Normalize(); transform.BasisZ = vZ.Normalize(); - + // TODO: check below needed? // // apply doc transform // var docTransform = GetDocReferencePointTransform(Doc); // var internalTransform = docTransform.Multiply(_transform); - + return transform; } @@ -267,7 +267,7 @@ private void PreReceiveDeepClean(string baseGroupName) _groupBaker.PurgeGroups(baseGroupName); _materialBaker.PurgeMaterials(baseGroupName); } - + private DirectShape CreateDirectShape(LocalToGlobalMap localToGlobalMap) { // 1- set ds category @@ -291,16 +291,22 @@ private DirectShape CreateDirectShape(LocalToGlobalMap localToGlobalMap) // 3 - Transform the geometries Transform combinedTransform = Transform.Identity; - + foreach (Matrix4x4 matrix in localToGlobalMap.Matrix) { - Transform revitTransform = ConvertMatrixToRevitTransform(matrix, localToGlobalMap.AtomicObject["units"] as string); + Transform revitTransform = ConvertMatrixToRevitTransform( + matrix, + localToGlobalMap.AtomicObject["units"] as string + ); combinedTransform = combinedTransform.Multiply(revitTransform); } - var transformedGeometries = DirectShape.CreateGeometryInstance(_converterSettings.Current.Document, - localToGlobalMap.AtomicObject.applicationId ?? localToGlobalMap.AtomicObject.id, combinedTransform); - + var transformedGeometries = DirectShape.CreateGeometryInstance( + _converterSettings.Current.Document, + localToGlobalMap.AtomicObject.applicationId ?? localToGlobalMap.AtomicObject.id, + combinedTransform + ); + // 4- check for valid geometry if (!result.IsValidShape(transformedGeometries)) { @@ -310,7 +316,7 @@ private DirectShape CreateDirectShape(LocalToGlobalMap localToGlobalMap) // 5 - This is where we apply the geometries into direct shape. result.SetShape(transformedGeometries); - + return result; } From 896de431be26f69c0cae6a5b546f5d1ffbe2967b Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 2 Oct 2024 14:01:34 +0300 Subject: [PATCH 18/62] Clean up --- .../Receive/RevitHostObjectBuilder.cs | 100 ++---------------- .../Speckle.Converters.RevitShared.projitems | 2 + .../Raw/Geometry/TransformConverterToHost.cs | 47 ++++++++ .../LocalToGlobalToDirectShapeConverter.cs | 79 ++++++++++++++ 4 files changed, 139 insertions(+), 89 deletions(-) create mode 100644 Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/TransformConverterToHost.cs create mode 100644 Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 662d8b16c..22934d16a 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -7,6 +7,7 @@ using Speckle.Connectors.Common.Operations.Receive; using Speckle.Connectors.Revit.HostApp; using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Services; using Speckle.Converters.RevitShared.Settings; @@ -26,10 +27,13 @@ internal sealed class RevitHostObjectBuilder : IHostObjectBuilder, IDisposable private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; private readonly ITransactionManager _transactionManager; private readonly ILocalToGlobalUnpacker _localToGlobalUnpacker; - private readonly LocalToGlobalConverterUtils _localToGlobalConverterUtils; private readonly RevitGroupBaker _groupBaker; private readonly RevitMaterialBaker _materialBaker; private readonly ILogger _logger; + private readonly ITypedConverter< + (Base atomicObject, List matrix), + DirectShape + > _localToGlobalDirectShapeConverter; private readonly RootObjectUnpacker _rootObjectUnpacker; private readonly ISdkActivityFactory _activityFactory; @@ -40,26 +44,26 @@ public RevitHostObjectBuilder( ITransactionManager transactionManager, ISdkActivityFactory activityFactory, ILocalToGlobalUnpacker localToGlobalUnpacker, - LocalToGlobalConverterUtils localToGlobalConverterUtils, RevitGroupBaker groupManager, RevitMaterialBaker materialBaker, RootObjectUnpacker rootObjectUnpacker, ILogger logger, RevitToHostCacheSingleton revitToHostCacheSingleton, - ScalingServiceToHost scalingService + ScalingServiceToHost scalingService, + ITypedConverter<(Base atomicObject, List matrix), DirectShape> localToGlobalDirectShapeConverter ) { _converter = converter; _converterSettings = converterSettings; _transactionManager = transactionManager; _localToGlobalUnpacker = localToGlobalUnpacker; - _localToGlobalConverterUtils = localToGlobalConverterUtils; _groupBaker = groupManager; _materialBaker = materialBaker; _rootObjectUnpacker = rootObjectUnpacker; _logger = logger; _revitToHostCacheSingleton = revitToHostCacheSingleton; _scalingService = scalingService; + _localToGlobalDirectShapeConverter = localToGlobalDirectShapeConverter; _activityFactory = activityFactory; } @@ -205,7 +209,9 @@ CancellationToken cancellationToken if (result is List) { - DirectShape directShapes = CreateDirectShape(localToGlobalMap); + DirectShape directShapes = _localToGlobalDirectShapeConverter.Convert( + (localToGlobalMap.AtomicObject, localToGlobalMap.Matrix) + ); bakedObjectIds.Add(directShapes.UniqueId.ToString()); _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, directShapes); @@ -230,96 +236,12 @@ CancellationToken cancellationToken return (new(bakedObjectIds, conversionResults), toPaintLater); } - private Transform ConvertMatrixToRevitTransform(Matrix4x4 matrix, string? units) - { - var transform = Transform.Identity; - if (matrix.M44 == 0 || units is null) // TODO: check units nullability? - { - return transform; - } - - var tX = _scalingService.ScaleToNative(matrix.M14 / matrix.M44, units); - var tY = _scalingService.ScaleToNative(matrix.M24 / matrix.M44, units); - var tZ = _scalingService.ScaleToNative(matrix.M34 / matrix.M44, units); - var t = new XYZ(tX, tY, tZ); - - // basis vectors - XYZ vX = new(matrix.M11, matrix.M21, matrix.M31); - XYZ vY = new(matrix.M12, matrix.M22, matrix.M32); - XYZ vZ = new(matrix.M13, matrix.M23, matrix.M33); - - // apply to new transform - transform.Origin = t; - transform.BasisX = vX.Normalize(); - transform.BasisY = vY.Normalize(); - transform.BasisZ = vZ.Normalize(); - - // TODO: check below needed? - // // apply doc transform - // var docTransform = GetDocReferencePointTransform(Doc); - // var internalTransform = docTransform.Multiply(_transform); - - return transform; - } - private void PreReceiveDeepClean(string baseGroupName) { _groupBaker.PurgeGroups(baseGroupName); _materialBaker.PurgeMaterials(baseGroupName); } - private DirectShape CreateDirectShape(LocalToGlobalMap localToGlobalMap) - { - // 1- set ds category - var category = localToGlobalMap.AtomicObject["category"] as string; - var dsCategory = BuiltInCategory.OST_GenericModel; - if (category is string categoryString) - { - var res = Enum.TryParse($"OST_{categoryString}", out BuiltInCategory cat); - if (res) - { - var c = Category.GetCategory(_converterSettings.Current.Document, cat); - if (c is not null && DirectShape.IsValidCategoryId(c.Id, _converterSettings.Current.Document)) - { - dsCategory = cat; - } - } - } - - // 2 - init DirectShape - var result = DirectShape.CreateElement(_converterSettings.Current.Document, new ElementId(dsCategory)); - - // 3 - Transform the geometries - Transform combinedTransform = Transform.Identity; - - foreach (Matrix4x4 matrix in localToGlobalMap.Matrix) - { - Transform revitTransform = ConvertMatrixToRevitTransform( - matrix, - localToGlobalMap.AtomicObject["units"] as string - ); - combinedTransform = combinedTransform.Multiply(revitTransform); - } - - var transformedGeometries = DirectShape.CreateGeometryInstance( - _converterSettings.Current.Document, - localToGlobalMap.AtomicObject.applicationId ?? localToGlobalMap.AtomicObject.id, - combinedTransform - ); - - // 4- check for valid geometry - if (!result.IsValidShape(transformedGeometries)) - { - _converterSettings.Current.Document.Delete(result.Id); - throw new SpeckleConversionException("Invalid geometry (eg unbounded curves) found for creating directshape."); - } - - // 5 - This is where we apply the geometries into direct shape. - result.SetShape(transformedGeometries); - - return result; - } - public void Dispose() { _transactionManager?.Dispose(); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems b/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems index ae06d61ea..25c8e14a2 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems +++ b/Converters/Revit/Speckle.Converters.RevitShared/Speckle.Converters.RevitShared.projitems @@ -45,6 +45,8 @@ + + diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/TransformConverterToHost.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/TransformConverterToHost.cs new file mode 100644 index 000000000..8b29bb880 --- /dev/null +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/TransformConverterToHost.cs @@ -0,0 +1,47 @@ +using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared.Services; +using Speckle.DoubleNumerics; + +namespace Speckle.Converters.RevitShared.ToSpeckle; + +public class TransformConverterToHost : ITypedConverter<(Matrix4x4 matrix, string units), DB.Transform> +{ + private readonly ScalingServiceToHost _scalingService; + + public TransformConverterToHost(ScalingServiceToHost scalingService) + { + _scalingService = scalingService; + } + + public DB.Transform Convert((Matrix4x4 matrix, string units) target) + { + var transform = DB.Transform.Identity; + if (target.matrix.M44 == 0 || target.units is null) // TODO: check target.units nullability? + { + return transform; + } + + var tX = _scalingService.ScaleToNative(target.matrix.M14 / target.matrix.M44, target.units); + var tY = _scalingService.ScaleToNative(target.matrix.M24 / target.matrix.M44, target.units); + var tZ = _scalingService.ScaleToNative(target.matrix.M34 / target.matrix.M44, target.units); + var t = new DB.XYZ(tX, tY, tZ); + + // basis vectors + DB.XYZ vX = new(target.matrix.M11, target.matrix.M21, target.matrix.M31); + DB.XYZ vY = new(target.matrix.M12, target.matrix.M22, target.matrix.M32); + DB.XYZ vZ = new(target.matrix.M13, target.matrix.M23, target.matrix.M33); + + // apply to new transform + transform.Origin = t; + transform.BasisX = vX.Normalize(); + transform.BasisY = vY.Normalize(); + transform.BasisZ = vZ.Normalize(); + + // TODO: check below needed? + // // apply doc transform + // var docTransform = GetDocReferencePointTransform(Doc); + // var internalTransform = docTransform.Multiply(_transform); + + return transform; + } +} diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs new file mode 100644 index 000000000..0e32dde27 --- /dev/null +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs @@ -0,0 +1,79 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared.Settings; +using Speckle.DoubleNumerics; +using Speckle.Sdk.Models; + +namespace Speckle.Converters.RevitShared.ToSpeckle; + +/// +/// Spirit of the LocalToGlobalMap, we can't pass that object directly here bc it lives in Connectors.Common which I (ogu) don't want to bother with it. +/// +public class LocalToGlobalToDirectShapeConverter + : ITypedConverter<(Base atomicObject, List matrix), DB.DirectShape> +{ + private readonly IConverterSettingsStore _converterSettings; + private readonly ITypedConverter<(Matrix4x4 matrix, string units), DB.Transform> _transformConverter; + + public LocalToGlobalToDirectShapeConverter( + IConverterSettingsStore converterSettings, + ITypedConverter<(Matrix4x4 matrix, string units), DB.Transform> transformConverter + ) + { + _converterSettings = converterSettings; + _transformConverter = transformConverter; + } + + public DB.DirectShape Convert((Base atomicObject, List matrix) target) + { + // 1- set ds category + var category = target.atomicObject["category"] as string; + var dsCategory = DB.BuiltInCategory.OST_GenericModel; + if (category is string categoryString) + { + var res = Enum.TryParse($"OST_{categoryString}", out DB.BuiltInCategory cat); + if (res) + { + var c = DB.Category.GetCategory(_converterSettings.Current.Document, cat); + if (c is not null && DB.DirectShape.IsValidCategoryId(c.Id, _converterSettings.Current.Document)) + { + dsCategory = cat; + } + } + } + + // 2 - init DirectShape + var result = DB.DirectShape.CreateElement(_converterSettings.Current.Document, new DB.ElementId(dsCategory)); + + // 3 - Transform the geometries + DB.Transform combinedTransform = DB.Transform.Identity; + + // existence of units is must, to be able to scale the transform correctly + if (target.atomicObject["units"] is string units) + { + foreach (Matrix4x4 matrix in target.matrix) + { + DB.Transform revitTransform = _transformConverter.Convert((matrix, units)); + combinedTransform = combinedTransform.Multiply(revitTransform); + } + } + + var transformedGeometries = DB.DirectShape.CreateGeometryInstance( + _converterSettings.Current.Document, + target.atomicObject.applicationId ?? target.atomicObject.id, + combinedTransform + ); + + // 4- check for valid geometry + if (!result.IsValidShape(transformedGeometries)) + { + _converterSettings.Current.Document.Delete(result.Id); + throw new SpeckleConversionException("Invalid geometry (eg unbounded curves) found for creating directshape."); + } + + // 5 - This is where we apply the geometries into direct shape. + result.SetShape(transformedGeometries); + + return result; + } +} From 7df01df8fc020d04057eaaf8505b195968b7c2ee Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 2 Oct 2024 14:23:01 +0300 Subject: [PATCH 19/62] More cleanup --- .../Receive/RevitHostObjectBuilder.cs | 3 +- .../RevitRootToHostConverter.cs | 67 ++----------------- .../Raw/BaseToHostGeometryObjectConverter.cs | 24 ------- .../Geometry/IRawEncodedObjectConverter.cs | 17 +++-- 4 files changed, 17 insertions(+), 94 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 22934d16a..a0c4fd193 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -8,6 +8,7 @@ using Speckle.Connectors.Revit.HostApp; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.RevitShared; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Services; using Speckle.Converters.RevitShared.Settings; @@ -207,7 +208,7 @@ CancellationToken cancellationToken var result = _converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed?.Invoke("Converting", (double)++count / localToGlobalMaps.Count); - if (result is List) + if (result is FakeDirectShapeDefinition) { DirectShape directShapes = _localToGlobalDirectShapeConverter.Convert( (localToGlobalMap.AtomicObject, localToGlobalMap.Matrix) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs index 544b6e35b..e093f1eab 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs @@ -7,6 +7,8 @@ namespace Speckle.Converters.RevitShared; +public record FakeDirectShapeDefinition(string DefinitionId, List Geometries); + public class RevitRootToHostConverter : IRootToHostConverter { private readonly IConverterSettingsStore _converterSettings; @@ -32,67 +34,12 @@ public object Convert(Base target) { throw new SpeckleConversionException($"No supported conversion for {target.speckle_type} found."); } - - DB.DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document).AddDefinition(target.applicationId ?? target.id, geometryObjects); - - // create direct shape from geometries - // DB.DirectShape result = CreateDirectShape(geometryObjects, target["category"] as string); - - return geometryObjects; - } - - private DB.DirectShape CreateDirectShape(List geometry, string? category) - { - // set ds category - var dsCategory = BuiltInCategory.OST_GenericModel; - if (category is string categoryString) - { - var res = Enum.TryParse($"OST_{categoryString}", out DB.BuiltInCategory cat); - if (res) - { - var c = Category.GetCategory(_converterSettings.Current.Document, cat); - if (c is not null && DirectShape.IsValidCategoryId(c.Id, _converterSettings.Current.Document)) - { - dsCategory = cat; - } - } - } - - var result = DirectShape.CreateElement(_converterSettings.Current.Document, new DB.ElementId(dsCategory)); - - // check for valid geometry - if (!result.IsValidShape(geometry)) - { - _converterSettings.Current.Document.Delete(result.Id); - throw new SpeckleConversionException("Invalid geometry (eg unbounded curves) found for creating directshape."); - } - result.SetShape(geometry); + var definitionId = target.applicationId ?? target.id; + DirectShapeLibrary + .GetDirectShapeLibrary(_converterSettings.Current.Document) + .AddDefinition(definitionId, geometryObjects); - // if (originalObject is SOG.IRawEncodedObject) - // { - // var materialId = DB.ElementId.InvalidElementId; - // if ( - // _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(originalObject.applicationId ?? originalObject.id, out var mappedElementId) - // ) - // { - // materialId = mappedElementId; - // } - // - // // if(materialId == DB.ElementId.InvalidElementId) - // var elGeometry = result.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); - // foreach (var geo in elGeometry) - // { - // if (geo is Solid s) - // { - // foreach (Face face in s.Faces) - // { - // _converterSettings.Current.Document.Paint(result.Id, face, materialId); - // } - // } - // } - // } - - return result; + return new FakeDirectShapeDefinition(definitionId, geometryObjects); } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs index 4fef1d199..64d35111d 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs @@ -1,6 +1,5 @@ using System.Collections; using Speckle.Converters.Common; -using Speckle.Converters.Common.FileOps; using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Settings; using Speckle.Objects; @@ -70,27 +69,4 @@ IConverterSettingsStore settings return result; } - - public IEnumerable TryImportBrepShape(SOG.BrepX burp) - { - var burpRhinoContents = burp.encodedValue.contents; - var fileBytes = System.Convert.FromBase64String(burpRhinoContents!); - - var filePath = TempFileProvider.GetTempFile("RevitX", burp.encodedValue.format); - File.WriteAllBytes(filePath, fileBytes); - - using var importer = new DB.ShapeImporter(); - var list = importer.Convert(_settings.Current.Document, filePath).OfType(); - - return list; - // Note: we might want to export in the future single breps from rhino as multiple ones to bypass limitations of the geometry kernel here; tbd - but we should not necessarily assume a single shape - // if (list.OfType().FirstOrDefault() is DB.GeometryObject shape) - // { - // // note: scaling is a todo - // // DB.SolidUtils.CreateTransformed(shape, DB.Transform.Identity); - // // _settings.Document.Paint(); // note: we can pain faces post creation with whatever material we want, to make 'em look as needed - // return shape; - // } - // return null; - } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index 72b73648b..b7b66fea9 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -11,12 +11,15 @@ public class IRawEncodedObjectConverter : ITypedConverter _settings; private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; - public IRawEncodedObjectConverter(IConverterSettingsStore settings, RevitToHostCacheSingleton revitToHostCacheSingleton) + public IRawEncodedObjectConverter( + IConverterSettingsStore settings, + RevitToHostCacheSingleton revitToHostCacheSingleton + ) { _settings = settings; _revitToHostCacheSingleton = revitToHostCacheSingleton; } - + public List Convert(SOG.IRawEncodedObject target) { var raw = target.encodedValue.contents; @@ -26,13 +29,9 @@ public IRawEncodedObjectConverter(IConverterSettingsStore Date: Wed, 2 Oct 2024 14:43:06 +0300 Subject: [PATCH 20/62] Bake single group for received version --- .../HostApp/RevitGroupBaker.cs | 10 ++++++++++ .../Operations/Receive/RevitHostObjectBuilder.cs | 4 ++-- .../ToHost/Raw/BaseToHostGeometryObjectConverter.cs | 7 +------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs index 81c2a8e4f..56a53ca3f 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs @@ -21,6 +21,10 @@ public RevitGroupBaker(IConverterSettingsStore converte _revitUtils = revitUtils; } + private readonly List _elementIdsForTopLevelGroup = new(); + + public void AddToTopLevelGroup(Element revitElement) => _elementIdsForTopLevelGroup.Add(revitElement.Id); + /// /// Adds the object to the correct group in preparation for at the end of the receive operation. /// @@ -59,6 +63,12 @@ public void AddToGroupMapping(TraversalContext traversalContext, Element revitEl private readonly Dictionary _groupCache = new(); + public void BakeGroupForTopLevel(string baseGroupName) + { + var docGroup = _converterSettings.Current.Document.Create.NewGroup(_elementIdsForTopLevelGroup); + docGroup.GroupType.Name = baseGroupName; + } + /// /// Bakes the accumulated groups in Revit, with their objects. /// diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index a0c4fd193..732b27d41 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -168,7 +168,7 @@ CancellationToken cancellationToken try { - _groupBaker.BakeGroups(baseGroupName); + _groupBaker.BakeGroupForTopLevel(baseGroupName); } catch (Exception ex) when (!ex.IsFatal()) { @@ -215,7 +215,7 @@ CancellationToken cancellationToken ); bakedObjectIds.Add(directShapes.UniqueId.ToString()); - _groupBaker.AddToGroupMapping(localToGlobalMap.TraversalContext, directShapes); + _groupBaker.AddToTopLevelGroup(directShapes); if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) { toPaintLater.Add((directShapes, myBase.applicationId ?? myBase.id)); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs index 64d35111d..81eca9cdc 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs @@ -1,7 +1,5 @@ using System.Collections; -using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; -using Speckle.Converters.RevitShared.Settings; using Speckle.Objects; using Speckle.Sdk.Models; using Speckle.Sdk.Models.Extensions; @@ -14,21 +12,18 @@ public class BaseToHostGeometryObjectConverter : ITypedConverter _curveConverter; private readonly ITypedConverter> _meshConverter; private readonly ITypedConverter> _encodedObjectConverter; - private readonly IConverterSettingsStore _settings; public BaseToHostGeometryObjectConverter( ITypedConverter pointConverter, ITypedConverter curveConverter, ITypedConverter> meshConverter, - ITypedConverter> encodedObjectConverter, - IConverterSettingsStore settings + ITypedConverter> encodedObjectConverter ) { _pointConverter = pointConverter; _curveConverter = curveConverter; _meshConverter = meshConverter; _encodedObjectConverter = encodedObjectConverter; - _settings = settings; } public List Convert(Base target) From 27f959990f3b2e5ae593d88bb425f3003cfedcab Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 2 Oct 2024 14:45:35 +0300 Subject: [PATCH 21/62] Remove invalid chars from group name --- .../Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs index 56a53ca3f..68cba9368 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs @@ -66,7 +66,7 @@ public void AddToGroupMapping(TraversalContext traversalContext, Element revitEl public void BakeGroupForTopLevel(string baseGroupName) { var docGroup = _converterSettings.Current.Document.Create.NewGroup(_elementIdsForTopLevelGroup); - docGroup.GroupType.Name = baseGroupName; + docGroup.GroupType.Name = _revitUtils.RemoveInvalidChars(baseGroupName); } /// From 48396e7eaad1686ffd872a60e3680843124df939 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 2 Oct 2024 14:52:14 +0300 Subject: [PATCH 22/62] Fix pre-existing parent group id in the list of ids to delete --- .../Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs index 68cba9368..1c9a9d717 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs @@ -96,7 +96,7 @@ public void PurgeGroups(string baseGroupName) foreach (var group in groups) { - List subgroupTypeIds = new List(); + var subgroupTypeIds = new List() { group.GroupType.Id }; CollectSubGroupTypeIds(document, group, subgroupTypeIds); document.Delete(subgroupTypeIds); } From b9bb8d52f4a3bfffded0003bb639a5aa8675a54b Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Wed, 2 Oct 2024 20:59:17 +0300 Subject: [PATCH 23/62] Remove unused file --- .../ToSpeckle/Raw/BrepXToSpeckleConverter.cs | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs deleted file mode 100644 index 8cdc6ed56..000000000 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepXToSpeckleConverter.cs +++ /dev/null @@ -1,24 +0,0 @@ -// using Speckle.Converters.Common; -// using Speckle.Converters.Common.Objects; -// using Speckle.Converters.Rhino.ToSpeckle.Encoding; -// -// namespace Speckle.Converters.Rhino.ToSpeckle.Raw; -// -// public class BrepXToSpeckleConverter(IConverterSettingsStore settingsStore) -// : ITypedConverter -// { -// public SO.RawEncoding Convert(RG.Brep target) => RawEncodingCreator.Encode(target, settingsStore.Current.Document); -// } -// -// public class ExtrusionXToSpeckleConverter(IConverterSettingsStore settingsStore) -// : ITypedConverter -// { -// public SO.RawEncoding Convert(RG.Extrusion target) => RawEncodingCreator.Encode(target, settingsStore.Current.Document); -// } -// -// public class SubDXToSpeckleConverter(IConverterSettingsStore settingsStore) -// : ITypedConverter -// { -// public SO.RawEncoding Convert(RG.SubD target) => RawEncodingCreator.Encode(target, settingsStore.Current.Document); -// } -// From b338f7750de48d8b207f5780df59c54befe1b162 Mon Sep 17 00:00:00 2001 From: oguzhankoral Date: Thu, 3 Oct 2024 11:49:27 +0300 Subject: [PATCH 24/62] Format --- DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs b/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs index 8100954a3..0a6b93a64 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/ConfigBinding.cs @@ -83,7 +83,10 @@ public void UpdateConfig(ConnectorConfig config) public void SetUserSelectedAccountId(string userSelectedAccountId) { - var str = JsonConvert.SerializeObject(new AccountsConfig() {UserSelectedAccountId = userSelectedAccountId}, _serializerOptions); + var str = JsonConvert.SerializeObject( + new AccountsConfig() { UserSelectedAccountId = userSelectedAccountId }, + _serializerOptions + ); ConfigStorage.UpdateObject("accounts", str); } @@ -94,7 +97,7 @@ public void SetUserSelectedAccountId(string userSelectedAccountId) { return null; } - + try { var config = JsonConvert.DeserializeObject(rawConfig, _serializerOptions); From 311963f8eac62509c85a6f97e982894c8ca6478b Mon Sep 17 00:00:00 2001 From: Mucahit Bilal GOKER Date: Mon, 7 Oct 2024 17:49:11 +0300 Subject: [PATCH 25/62] added elementId --- .../RevitRootToSpeckleConverter.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs index 120f81c37..413bd65b6 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs @@ -54,6 +54,9 @@ public Base Convert(object target) ?? throw new SpeckleConversionException($"Conversion of object with type {target.GetType()} returned null"); result.applicationId = element.UniqueId; + + // Add ElementID to the converted objects + result["elementId"] = element.Id.ToString()!; // POC DirectShapes have RevitCategory enum as the type or the category property, DS category property is already set in the converter // trying to set the category as a string will throw From ae162e3a466108487463d6a8986ee550e46fedd6 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Mon, 7 Oct 2024 18:08:19 +0100 Subject: [PATCH 26/62] fix: clears direct shape lib to fix second receive and catches objs with no material --- .../Operations/Receive/RevitHostObjectBuilder.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 732b27d41..379a2bffc 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -153,11 +153,18 @@ CancellationToken cancellationToken { materialId = mappedElementId; } + + if (materialId == ElementId.InvalidElementId) + { + continue; + } + // NOTE: some geometries fail to convert as solids, and the api defaults back to meshes (from the shape importer). These cannot be painted, so don't bother. foreach (var geo in elGeometry) { if (geo is Solid s) { + // SolidUtils.CreateTransformed(); foreach (Face face in s.Faces) { _converterSettings.Current.Document.Paint(res.Id, face, materialId); @@ -239,6 +246,9 @@ CancellationToken cancellationToken private void PreReceiveDeepClean(string baseGroupName) { + DirectShapeLibrary + .GetDirectShapeLibrary(_converterSettings.Current.Document).Reset(); + _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); _groupBaker.PurgeGroups(baseGroupName); _materialBaker.PurgeMaterials(baseGroupName); } From 7144d81059ab5ee2e1ca801b8cf34f28cf66ec57 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 10:59:32 +0100 Subject: [PATCH 27/62] feat(dui3): pinns created groups --- .../Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs index 1c9a9d717..f151ca7d7 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs @@ -67,6 +67,7 @@ public void BakeGroupForTopLevel(string baseGroupName) { var docGroup = _converterSettings.Current.Document.Create.NewGroup(_elementIdsForTopLevelGroup); docGroup.GroupType.Name = _revitUtils.RemoveInvalidChars(baseGroupName); + docGroup.Pinned = true; } /// From 7d2f5a43856369e47a45d5e01fcebdcd0531a6b8 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 11:00:02 +0100 Subject: [PATCH 28/62] feat: adds userland controllable transaction names --- .../Operations/Receive/ITransactionManager.cs | 2 +- .../Operations/Receive/TransactionManager.cs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/ITransactionManager.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/ITransactionManager.cs index 76bf66776..5fef78e9a 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/ITransactionManager.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/ITransactionManager.cs @@ -11,5 +11,5 @@ public interface ITransactionManager : IDisposable void StartSubtransaction(); // POC improve how the error handling behaviour is selected - void StartTransaction(bool enableFailurePreprocessor = false); + void StartTransaction(bool enableFailurePreprocessor = false, string name = "Speckle Transaction"); } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/TransactionManager.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/TransactionManager.cs index 2ed7f7ab5..71fcb7590 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/TransactionManager.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/TransactionManager.cs @@ -30,11 +30,11 @@ IFailuresPreprocessor errorPreprocessingService #pragma warning restore CA2213 // Disposable fields should be disposed // POC find a better way to use IFailuresPreprocessor - public void StartTransaction(bool enableFailurePreprocessor = false) + public void StartTransaction(bool enableFailurePreprocessor = false, string name = "Speckle Transaction") { if (_transaction == null || !_transaction.IsValidObject || _transaction.GetStatus() != TransactionStatus.Started) { - _transaction = new Transaction(Document, "Speckle Transaction"); + _transaction = new Transaction(Document, name); if (enableFailurePreprocessor) { From 9780cb6e35a87877f17003f18be06028f09ee757 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 11:00:26 +0100 Subject: [PATCH 29/62] feat: minor cleanup --- .../Receive/RevitHostObjectBuilder.cs | 164 ++++++++---------- 1 file changed, 74 insertions(+), 90 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 379a2bffc..5432736cb 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -89,25 +89,21 @@ CancellationToken cancellationToken onOperationProgressed?.Invoke("Converting", null); using var activity = _activityFactory.Start("Build"); - + // 0 - Clean then Rock n Roll! 🎸 - using TransactionGroup preReceiveCleanTransaction = new(_converterSettings.Current.Document, "Pre-receive clean"); - preReceiveCleanTransaction.Start(); - _transactionManager.StartTransaction(true); - - try - { - PreReceiveDeepClean(baseGroupName); - } - catch (Exception ex) when (!ex.IsFatal()) - { - _logger.LogError(ex, "Failed to clean up before receive in Revit"); - } - - using (var _ = _activityFactory.Start("Commit")) { + _activityFactory.Start("Pre receive clean"); + _transactionManager.StartTransaction(true, "Pre receive clean"); + try + { + PreReceiveDeepClean(baseGroupName); + } + catch (Exception ex) when (!ex.IsFatal()) + { + _logger.LogError(ex, "Failed to clean up before receive in Revit"); + } + _transactionManager.CommitTransaction(); - preReceiveCleanTransaction.Assimilate(); } // 1 - Unpack objects and proxies from root commit object @@ -116,84 +112,39 @@ CancellationToken cancellationToken unpackedRoot.DefinitionProxies, unpackedRoot.ObjectsToConvert.ToList() ); - - using TransactionGroup transactionGroup = - new(_converterSettings.Current.Document, $"Received data from {projectName}"); - transactionGroup.Start(); - _transactionManager.StartTransaction(); - + + // 2 - Bake materials + _transactionManager.StartTransaction(true, "Baking materials"); if (unpackedRoot.RenderMaterialProxies != null) { _materialBaker.MapLayersRenderMaterials(unpackedRoot); - // NOTE: do not set _contextStack.RenderMaterialProxyCache directly, things stop working. Ogu/Dim do not know why :) not a problem as we hopefully will refactor some of these hacks out. - var map = _materialBaker.BakeMaterials(unpackedRoot.RenderMaterialProxies, baseGroupName); + var map = _materialBaker.BakeMaterials(unpackedRoot.RenderMaterialProxies, baseGroupName); // NOTE: do not set _contextStack.RenderMaterialProxyCache directly, things stop working. Ogu/Dim do not know why :) not a problem as we hopefully will refactor some of these hacks out. foreach (var kvp in map) { _revitToHostCacheSingleton.MaterialsByObjectId.Add(kvp.Key, kvp.Value); } } + _transactionManager.CommitTransaction(); + // 3 - Bake objects + _transactionManager.StartTransaction(true, "Baking objects"); var conversionResults = BakeObjects(localToGlobalMaps, onOperationProgressed, cancellationToken); - - using (var _ = _activityFactory.Start("Commit")) - { - _transactionManager.CommitTransaction(); - transactionGroup.Assimilate(); - } - - using TransactionGroup createGroupTransaction = new(_converterSettings.Current.Document, "Creating group"); - createGroupTransaction.Start(); - _transactionManager.StartTransaction(true); - - foreach (var (res, applicationId) in conversionResults.Item2) - { - var elGeometry = res.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); - var materialId = ElementId.InvalidElementId; - if (_revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(applicationId, out var mappedElementId)) - { - materialId = mappedElementId; - } - - if (materialId == ElementId.InvalidElementId) - { - continue; - } - - // NOTE: some geometries fail to convert as solids, and the api defaults back to meshes (from the shape importer). These cannot be painted, so don't bother. - foreach (var geo in elGeometry) - { - if (geo is Solid s) - { - // SolidUtils.CreateTransformed(); - foreach (Face face in s.Faces) - { - _converterSettings.Current.Document.Paint(res.Id, face, materialId); - } - } - } - } - - try - { - _groupBaker.BakeGroupForTopLevel(baseGroupName); - } - catch (Exception ex) when (!ex.IsFatal()) - { - _logger.LogError(ex, "Failed to create group after receiving elements in Revit"); - } - - using (var _ = _activityFactory.Start("Commit")) - { - _transactionManager.CommitTransaction(); - createGroupTransaction.Assimilate(); - } - - _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); // Massive hack! - - return conversionResults.Item1; + _transactionManager.CommitTransaction(); + + + _transactionManager.StartTransaction(true, "Painting"); + PostBakePaint(conversionResults.postBakePaintTargets); + _transactionManager.CommitTransaction(); + + _transactionManager.StartTransaction(true, "Grouping"); + _groupBaker.BakeGroupForTopLevel(baseGroupName); + _transactionManager.CommitTransaction(); + + + return conversionResults.builderResult; } - private (HostObjectBuilderResult, List<(DirectShape res, string applicationId)>) BakeObjects( + private (HostObjectBuilderResult builderResult, List<(DirectShape res, string applicationId)> postBakePaintTargets) BakeObjects( List localToGlobalMaps, Action? onOperationProgressed, CancellationToken cancellationToken @@ -204,7 +155,7 @@ CancellationToken cancellationToken var bakedObjectIds = new List(); int count = 0; - var toPaintLater = new List<(DirectShape res, string applicationId)>(); + var postBakePaintTargets = new List<(DirectShape res, string applicationId)>(); foreach (LocalToGlobalMap localToGlobalMap in localToGlobalMaps) { @@ -215,25 +166,27 @@ CancellationToken cancellationToken var result = _converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed?.Invoke("Converting", (double)++count / localToGlobalMaps.Count); - if (result is FakeDirectShapeDefinition) + if (result is DirectShapeDefinitionWrapper) { DirectShape directShapes = _localToGlobalDirectShapeConverter.Convert( (localToGlobalMap.AtomicObject, localToGlobalMap.Matrix) ); - bakedObjectIds.Add(directShapes.UniqueId.ToString()); + bakedObjectIds.Add(directShapes.UniqueId); _groupBaker.AddToTopLevelGroup(directShapes); + if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) { - toPaintLater.Add((directShapes, myBase.applicationId ?? myBase.id)); + postBakePaintTargets.Add((directShapes, myBase.applicationId ?? myBase.id)); } + conversionResults.Add( new(Status.SUCCESS, localToGlobalMap.AtomicObject, directShapes.UniqueId, "Direct Shape") ); } else { - throw new SpeckleConversionException($"Failed to cast {result.GetType()} to Direct Shape."); + throw new SpeckleConversionException($"Failed to cast {result.GetType()} to direct shape definition wrapper."); } } catch (Exception ex) when (!ex.IsFatal()) @@ -241,14 +194,45 @@ CancellationToken cancellationToken conversionResults.Add(new(Status.ERROR, localToGlobalMap.AtomicObject, null, null, ex)); } } - return (new(bakedObjectIds, conversionResults), toPaintLater); + return (new(bakedObjectIds, conversionResults), postBakePaintTargets); } + private void PostBakePaint(List<(DirectShape res, string applicationId)> paintTargets) + { + foreach (var (res, applicationId) in paintTargets) + { + var elGeometry = res.get_Geometry(new Options() { DetailLevel = ViewDetailLevel.Undefined }); + var materialId = ElementId.InvalidElementId; + if (_revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(applicationId, out var mappedElementId)) + { + materialId = mappedElementId; + } + + if (materialId == ElementId.InvalidElementId) + { + continue; + } + + // NOTE: some geometries fail to convert as solids, and the api defaults back to meshes (from the shape importer). These cannot be painted, so don't bother. + foreach (var geo in elGeometry) + { + if (geo is Solid s) + { + foreach (Face face in s.Faces) + { + _converterSettings.Current.Document.Paint(res.Id, face, materialId); + } + } + } + } + } + private void PreReceiveDeepClean(string baseGroupName) { DirectShapeLibrary - .GetDirectShapeLibrary(_converterSettings.Current.Document).Reset(); - _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); + .GetDirectShapeLibrary(_converterSettings.Current.Document).Reset(); // Note: this needs to be cleared, as it is being used in the converter + + _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); // Massive hack! _groupBaker.PurgeGroups(baseGroupName); _materialBaker.PurgeMaterials(baseGroupName); } From 41da92e43ab2b3734323fda95044fab0e3af3225 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 11:00:45 +0100 Subject: [PATCH 30/62] feat: faster mesh scaling --- .../Raw/Geometry/MeshConverterToHost.cs | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs index 2cc0974d4..9d8cb325d 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs @@ -2,22 +2,22 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Helpers; +using Speckle.Converters.RevitShared.Services; using Speckle.DoubleNumerics; namespace Speckle.Converters.RevitShared.ToHost.TopLevel; public class MeshConverterToHost : ITypedConverter> { - private readonly ITypedConverter _pointConverter; private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; + private readonly ScalingServiceToHost _scalingServiceToHost; public MeshConverterToHost( - ITypedConverter pointConverter, - RevitToHostCacheSingleton revitToHostCacheSingleton + RevitToHostCacheSingleton revitToHostCacheSingleton, ScalingServiceToHost scalingServiceToHost ) { - _pointConverter = pointConverter; _revitToHostCacheSingleton = revitToHostCacheSingleton; + _scalingServiceToHost = scalingServiceToHost; } public List Convert(SOG.Mesh mesh) @@ -31,13 +31,11 @@ RevitToHostCacheSingleton revitToHostCacheSingleton Target = target, GraphicsStyleId = ElementId.InvalidElementId }; - - var valid = tsb.AreTargetAndFallbackCompatible(target, fallback); + tsb.OpenConnectedFaceSet(false); var vertices = ArrayToPoints(mesh.vertices, mesh.units); ElementId materialId = ElementId.InvalidElementId; - if ( _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(mesh.applicationId ?? mesh.id, out var mappedElementId) ) @@ -58,8 +56,8 @@ RevitToHostCacheSingleton revitToHostCacheSingleton if (IsNonPlanarQuad(points)) { - //Non-planar quads will be triangulated as it's more desirable than `TessellatedShapeBuilder.Build`'s attempt to make them planar. - //TODO consider triangulating all n > 3 polygons that are non-planar + // Non-planar quads will be triangulated as it's more desirable than `TessellatedShapeBuilder.Build`'s attempt to make them planar. + // TODO consider triangulating all n > 3 polygons that are non-planar var triPoints = new List { points[0], points[1], points[3] }; var face1 = new TessellatedFace(triPoints, materialId); tsb.AddFace(face1); @@ -122,11 +120,14 @@ private XYZ[] ArrayToPoints(IList arr, string units) } XYZ[] points = new XYZ[arr.Count / 3]; - + var fTypeId = _scalingServiceToHost.UnitsToNative(units) ?? UnitTypeId.Meters; + for (int i = 2, k = 0; i < arr.Count; i += 3) { - var point = new SOG.Point(arr[i - 2], arr[i - 1], arr[i], units); - points[k++] = _pointConverter.Convert(point); + points[k++] = new XYZ( + _scalingServiceToHost.ScaleToNative(arr[i - 2], fTypeId), + _scalingServiceToHost.ScaleToNative(arr[i - 1], fTypeId), + _scalingServiceToHost.ScaleToNative(arr[i], fTypeId)); } return points; From c7665a7845163c0800c71e4476659d310a8cec58 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 11:01:14 +0100 Subject: [PATCH 31/62] feat: adds fallback checking in importer and assign materials f --- .../RevitRootToHostConverter.cs | 12 ++--- .../Geometry/IRawEncodedObjectConverter.cs | 51 ++++++++++++++++++- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs index e093f1eab..ec53dd0fb 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs @@ -1,34 +1,30 @@ using Autodesk.Revit.DB; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; -using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Settings; using Speckle.Sdk.Models; namespace Speckle.Converters.RevitShared; -public record FakeDirectShapeDefinition(string DefinitionId, List Geometries); +public record DirectShapeDefinitionWrapper(string DefinitionId, List Geometries); public class RevitRootToHostConverter : IRootToHostConverter { private readonly IConverterSettingsStore _converterSettings; - private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; private readonly ITypedConverter> _baseToGeometryConverter; public RevitRootToHostConverter( ITypedConverter> baseToGeometryConverter, - IConverterSettingsStore converterSettings, - RevitToHostCacheSingleton revitToHostCacheSingleton + IConverterSettingsStore converterSettings ) { _baseToGeometryConverter = baseToGeometryConverter; _converterSettings = converterSettings; - _revitToHostCacheSingleton = revitToHostCacheSingleton; } public object Convert(Base target) { - List geometryObjects = _baseToGeometryConverter.Convert(target); + List geometryObjects = _baseToGeometryConverter.Convert(target); if (geometryObjects.Count == 0) { @@ -40,6 +36,6 @@ public object Convert(Base target) .GetDirectShapeLibrary(_converterSettings.Current.Document) .AddDefinition(definitionId, geometryObjects); - return new FakeDirectShapeDefinition(definitionId, geometryObjects); + return new DirectShapeDefinitionWrapper(definitionId, geometryObjects); } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index b7b66fea9..de1c3b1c2 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -3,6 +3,7 @@ using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Settings; +using Speckle.Sdk.Models; namespace Speckle.Converters.Revit2023.ToHost.Raw.Geometry; @@ -22,6 +23,7 @@ RevitToHostCacheSingleton revitToHostCacheSingleton public List Convert(SOG.IRawEncodedObject target) { + var targetAsBase = (Base)target; var raw = target.encodedValue.contents; var bytes = System.Convert.FromBase64String(raw!); var filePath = TempFileProvider.GetTempFile("RevitX", target.encodedValue.format); @@ -30,8 +32,53 @@ RevitToHostCacheSingleton revitToHostCacheSingleton using var importer = new DB.ShapeImporter(); var shapeImportResult = importer.Convert(_settings.Current.Document, filePath); - // Old but gold Note: we might want to export in the future single breps from rhino as multiple ones to bypass limitations of the geometry kernel here; tbd - but we should not necessarily assume a single shape + DB.ElementId materialId = DB.ElementId.InvalidElementId; + if ( + _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(targetAsBase.applicationId ?? targetAsBase.id, out var mappedElementId) + ) + { + materialId = mappedElementId; + } + + if (materialId == DB.ElementId.InvalidElementId) + { + return shapeImportResult.ToList(); // exit fast if there's no material id associated with this object + } + + // check if there's any fallback importer results and recreate the meshes with the correct material result + var returnList = new List(); + foreach (var geometryObject in shapeImportResult) + { + if (geometryObject is DB.Mesh mesh) + { + returnList.AddRange(RecreateMeshWithMaterial(mesh, materialId)); + } + else + { + returnList.Add(geometryObject); + } + } + + return returnList; + } - return shapeImportResult.ToList(); + private List RecreateMeshWithMaterial(DB.Mesh mesh, DB.ElementId materialId) + { + using var tsb = new DB.TessellatedShapeBuilder(); + tsb.OpenConnectedFaceSet(false); + for (int i = 0; i < mesh.NumTriangles; i++) + { + var triangle = mesh.get_Triangle(i); + var points = new List() + { + mesh.Vertices[(int)triangle.get_Index(0)], + mesh.Vertices[(int)triangle.get_Index(1)], + mesh.Vertices[(int)triangle.get_Index(2)] + }; + tsb.AddFace(new DB.TessellatedFace(points, materialId)); + } + tsb.CloseConnectedFaceSet(); + tsb.Build(); + return tsb.GetBuildResult().GetGeometricalObjects().ToList(); } } From 23fbe106a7d47228d366f2126216c403c6149f1f Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 15:52:58 +0100 Subject: [PATCH 32/62] fix: removes fallback for meshes due to performance reasons --- .../Geometry/IRawEncodedObjectConverter.cs | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index de1c3b1c2..5ccd42c6e 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -46,12 +46,14 @@ RevitToHostCacheSingleton revitToHostCacheSingleton } // check if there's any fallback importer results and recreate the meshes with the correct material result + // note: disabled mesh recreation mentioned above as it's very slow. var returnList = new List(); foreach (var geometryObject in shapeImportResult) { if (geometryObject is DB.Mesh mesh) { - returnList.AddRange(RecreateMeshWithMaterial(mesh, materialId)); + // returnList.AddRange(RecreateMeshWithMaterial(mesh, materialId)); // NOTE: disabled mesh recreation mentioned above as it's very slow. + returnList.Add(mesh); } else { @@ -62,14 +64,26 @@ RevitToHostCacheSingleton revitToHostCacheSingleton return returnList; } + /// + /// Note: this is not used as it's slow. + /// + /// + /// + /// private List RecreateMeshWithMaterial(DB.Mesh mesh, DB.ElementId materialId) { - using var tsb = new DB.TessellatedShapeBuilder(); + using var tsb = new DB.TessellatedShapeBuilder() + { + Target = DB.TessellatedShapeBuilderTarget.Mesh, + Fallback = DB.TessellatedShapeBuilderFallback.Salvage, + GraphicsStyleId = DB.ElementId.InvalidElementId + }; + tsb.OpenConnectedFaceSet(false); for (int i = 0; i < mesh.NumTriangles; i++) { var triangle = mesh.get_Triangle(i); - var points = new List() + var points = new[] { mesh.Vertices[(int)triangle.get_Index(0)], mesh.Vertices[(int)triangle.get_Index(1)], From 0f09a15f2091698428ba7490c6a1e03dd8cbe7a2 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 16:26:40 +0100 Subject: [PATCH 33/62] fix: improves performance for fallback scenarios --- .../Geometry/IRawEncodedObjectConverter.cs | 63 ++++++------------- 1 file changed, 19 insertions(+), 44 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index 5ccd42c6e..98db349ff 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -3,21 +3,26 @@ using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Settings; +using Speckle.Sdk.Common; using Speckle.Sdk.Models; +using Speckle.Sdk.Models.Extensions; namespace Speckle.Converters.Revit2023.ToHost.Raw.Geometry; public class IRawEncodedObjectConverter : ITypedConverter> { private readonly IConverterSettingsStore _settings; + private readonly ITypedConverter> _meshConverter; private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; public IRawEncodedObjectConverter( IConverterSettingsStore settings, + ITypedConverter> meshConverter, RevitToHostCacheSingleton revitToHostCacheSingleton ) { _settings = settings; + _meshConverter = meshConverter; _revitToHostCacheSingleton = revitToHostCacheSingleton; } @@ -44,55 +49,25 @@ RevitToHostCacheSingleton revitToHostCacheSingleton { return shapeImportResult.ToList(); // exit fast if there's no material id associated with this object } + + // check whether the results have any meshes inside - if yes, it means the shape importer produced a subpar result. + // as we cannot paint meshes later (as you can solid faces), we need to create them now. + // we'll default to using the display value of the original object as it's a better fallback. + // note: if you're tempted to try and re-mesh the shape importer's meshes, don't - they are garbage. + var hasMesh = shapeImportResult.Any(o => o is DB.Mesh); + if (!hasMesh) + { + return shapeImportResult.ToList(); + } - // check if there's any fallback importer results and recreate the meshes with the correct material result - // note: disabled mesh recreation mentioned above as it's very slow. + var displayValue = targetAsBase.TryGetDisplayValue().NotNull(); var returnList = new List(); - foreach (var geometryObject in shapeImportResult) + foreach (var mesh in displayValue) { - if (geometryObject is DB.Mesh mesh) - { - // returnList.AddRange(RecreateMeshWithMaterial(mesh, materialId)); // NOTE: disabled mesh recreation mentioned above as it's very slow. - returnList.Add(mesh); - } - else - { - returnList.Add(geometryObject); - } + mesh.applicationId = targetAsBase.applicationId ?? targetAsBase.id; // to properly map materials + returnList.AddRange(_meshConverter.Convert(mesh)); } return returnList; } - - /// - /// Note: this is not used as it's slow. - /// - /// - /// - /// - private List RecreateMeshWithMaterial(DB.Mesh mesh, DB.ElementId materialId) - { - using var tsb = new DB.TessellatedShapeBuilder() - { - Target = DB.TessellatedShapeBuilderTarget.Mesh, - Fallback = DB.TessellatedShapeBuilderFallback.Salvage, - GraphicsStyleId = DB.ElementId.InvalidElementId - }; - - tsb.OpenConnectedFaceSet(false); - for (int i = 0; i < mesh.NumTriangles; i++) - { - var triangle = mesh.get_Triangle(i); - var points = new[] - { - mesh.Vertices[(int)triangle.get_Index(0)], - mesh.Vertices[(int)triangle.get_Index(1)], - mesh.Vertices[(int)triangle.get_Index(2)] - }; - tsb.AddFace(new DB.TessellatedFace(points, materialId)); - } - tsb.CloseConnectedFaceSet(); - tsb.Build(); - return tsb.GetBuildResult().GetGeometricalObjects().ToList(); - } } From 63ae8e3ca5967bdbe4ff9778bd46c466c71643e2 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Tue, 8 Oct 2024 20:15:16 +0100 Subject: [PATCH 34/62] fix: adds back support for non-instanced curves --- .../HostApp/RevitGroupBaker.cs | 87 ++----------------- .../Receive/RevitHostObjectBuilder.cs | 8 +- .../LocalToGlobalToDirectShapeConverter.cs | 21 +++-- 3 files changed, 19 insertions(+), 97 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs index f151ca7d7..714ca742e 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/HostApp/RevitGroupBaker.cs @@ -2,13 +2,11 @@ using Speckle.Connectors.Common.Operations.Receive; using Speckle.Converters.Common; using Speckle.Converters.RevitShared.Settings; -using Speckle.Sdk.Models.GraphTraversal; namespace Speckle.Connectors.Revit.HostApp; /// -/// On receive, this class will help structure atomic objects into nested revit groups based on the hierarchy that they're coming from. Expects to be a scoped dependency per receive operation. -/// How to use: during atomic object conversion, on each succesful conversion call . Afterward, at the end of the recieve operation, call to actually create the groups in the revit document. +/// Bakes all objects into a single top level group and pins it. /// public class RevitGroupBaker : TraversalContextUnpacker { @@ -25,44 +23,6 @@ public RevitGroupBaker(IConverterSettingsStore converte public void AddToTopLevelGroup(Element revitElement) => _elementIdsForTopLevelGroup.Add(revitElement.Id); - /// - /// Adds the object to the correct group in preparation for at the end of the receive operation. - /// - /// - /// - public void AddToGroupMapping(TraversalContext traversalContext, Element revitElement) - { - var collectionPath = GetCollectionPath(traversalContext); - var currentLayerName = string.Empty; - FakeGroup? previousGroup = null; - var currentDepth = 0; - - foreach (var collection in collectionPath) - { - currentLayerName += collection.name + "-"; - if (_groupCache.TryGetValue(currentLayerName, out var g)) - { - previousGroup = g; - currentDepth++; - continue; - } - - var group = new FakeGroup() - { - // POC group names should be unique - Name = _revitUtils.RemoveInvalidChars(currentLayerName[..^1]), - Depth = currentDepth++, - Parent = previousGroup! - }; - _groupCache[currentLayerName] = group; - previousGroup = group; - } - - previousGroup!.Ids.Add(revitElement.Id); - } - - private readonly Dictionary _groupCache = new(); - public void BakeGroupForTopLevel(string baseGroupName) { var docGroup = _converterSettings.Current.Document.Create.NewGroup(_elementIdsForTopLevelGroup); @@ -70,26 +30,6 @@ public void BakeGroupForTopLevel(string baseGroupName) docGroup.Pinned = true; } - /// - /// Bakes the accumulated groups in Revit, with their objects. - /// - /// - public void BakeGroups(string baseGroupName) - { - var orderedGroups = _groupCache.Values.OrderByDescending(group => group.Depth); - Group? lastGroup = null; - - foreach (var group in orderedGroups) - { - var docGroup = _converterSettings.Current.Document.Create.NewGroup(group.Ids); - group.Parent?.Ids.Add(docGroup.Id); - docGroup.GroupType.Name = group.Name; - lastGroup = docGroup; - } - - lastGroup!.GroupType.Name = _revitUtils.RemoveInvalidChars(baseGroupName); - } - public void PurgeGroups(string baseGroupName) { var document = _converterSettings.Current.Document; @@ -103,19 +43,17 @@ public void PurgeGroups(string baseGroupName) } } - private List GetGroupsByName(Autodesk.Revit.DB.Document doc, string groupName) + private List GetGroupsByName(Document doc, string groupName) { var validGroupName = _revitUtils.RemoveInvalidChars(groupName); - using (var collector = new FilteredElementCollector(doc)) - { - ICollection groupElements = collector.OfClass(typeof(Group)).ToElements(); - List groups = groupElements.Cast().Where(g => g.GroupType.Name == validGroupName).ToList(); - return groups; - } + using var collector = new FilteredElementCollector(doc); + ICollection groupElements = collector.OfClass(typeof(Group)).ToElements(); + List groups = groupElements.Cast().Where(g => g.GroupType.Name == validGroupName).ToList(); + return groups; } - private void CollectSubGroupTypeIds(Autodesk.Revit.DB.Document document, Group group, List subGroupTypeIds) + private void CollectSubGroupTypeIds(Document document, Group group, List subGroupTypeIds) { ICollection groupMemberIds = group.GetMemberIds(); @@ -130,15 +68,4 @@ private void CollectSubGroupTypeIds(Autodesk.Revit.DB.Document document, Group g } } } - - /// - /// Little intermediate data structure that helps with the operations above. - /// - private sealed class FakeGroup - { - public List Ids { get; set; } = new(); - public int Depth { get; set; } - public string Name { get; set; } - public FakeGroup Parent { get; set; } - } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 5432736cb..3eee3faeb 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -140,7 +140,6 @@ CancellationToken cancellationToken _groupBaker.BakeGroupForTopLevel(baseGroupName); _transactionManager.CommitTransaction(); - return conversionResults.builderResult; } @@ -175,7 +174,7 @@ CancellationToken cancellationToken bakedObjectIds.Add(directShapes.UniqueId); _groupBaker.AddToTopLevelGroup(directShapes); - if (localToGlobalMap.AtomicObject is IRawEncodedObject && localToGlobalMap.AtomicObject is Base myBase) + if (localToGlobalMap.AtomicObject is IRawEncodedObject and Base myBase) { postBakePaintTargets.Add((directShapes, myBase.applicationId ?? myBase.id)); } @@ -237,8 +236,5 @@ private void PreReceiveDeepClean(string baseGroupName) _materialBaker.PurgeMaterials(baseGroupName); } - public void Dispose() - { - _transactionManager?.Dispose(); - } + public void Dispose() => _transactionManager?.Dispose(); } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs index 0e32dde27..514801305 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs @@ -44,7 +44,15 @@ public DB.DirectShape Convert((Base atomicObject, List matrix) target // 2 - init DirectShape var result = DB.DirectShape.CreateElement(_converterSettings.Current.Document, new DB.ElementId(dsCategory)); - + + if (target.matrix.Count == 0) + { + var def = DB.DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document) + .FindDefinition(target.atomicObject.applicationId ?? target.atomicObject.id); + result.SetShape(def); + return result; + } + // 3 - Transform the geometries DB.Transform combinedTransform = DB.Transform.Identity; @@ -57,23 +65,14 @@ public DB.DirectShape Convert((Base atomicObject, List matrix) target combinedTransform = combinedTransform.Multiply(revitTransform); } } - + var transformedGeometries = DB.DirectShape.CreateGeometryInstance( _converterSettings.Current.Document, target.atomicObject.applicationId ?? target.atomicObject.id, combinedTransform ); - // 4- check for valid geometry - if (!result.IsValidShape(transformedGeometries)) - { - _converterSettings.Current.Document.Delete(result.Id); - throw new SpeckleConversionException("Invalid geometry (eg unbounded curves) found for creating directshape."); - } - - // 5 - This is where we apply the geometries into direct shape. result.SetShape(transformedGeometries); - return result; } } From 704a75a2b4a8e938bf19114a782ed6a7821dd855 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Wed, 9 Oct 2024 13:19:01 +0100 Subject: [PATCH 35/62] feat(civil): adds basic element converter and fixes DI (#292) * splits autocad and civil registration for root object builder * Update Speckle.Connectors.AutocadShared.projitems * adds civil top level converter * add civil3d connector * fixes as was on wrong branch * fixed solution for new shared project * default registration for autocad/civil * some fixes * moved classes around * adds basic civil element converter * csharpier reformat * removes units from root collection, restructures civil shared project * Update AutocadConnectorModule.cs * refactors root object builder to be abstract * removes unnecessary usings --------- Co-authored-by: Adam Hathcock --- .../Bindings/AutocadSendBaseBinding.cs | 220 ++++++++++++++++++ .../Bindings/AutocadSendBinding.cs | 204 ++-------------- .../AutocadConnectorModule.cs | 15 +- .../Civil3dConnectorModule.cs | 5 + .../DependencyInjection/SharedRegistration.cs | 6 - .../HostApp/AutocadLayerUnpacker.cs | 5 +- .../Send/AutocadRootObjectBaseBuilder.cs | 184 +++++++++++++++ .../Send/AutocadRootObjectBuilder.cs | 166 ++----------- .../Plugin/AutocadCommand.cs | 7 +- ...Speckle.Connectors.AutocadShared.projitems | 3 +- .../Speckle.Connectors.Civil3d2024.csproj | 1 + .../Bindings/Civil3dSendBinding.cs | 66 ++++++ .../Civil3dConnectorModule.cs | 27 +++ .../Send/Civil3dRootObjectBuilder.cs | 47 ++++ ...Speckle.Connectors.Civil3dShared.projitems | 21 ++ .../Speckle.Connectors.Civil3dShared.shproj | 12 + .../Operations/Send/RevitRootObjectBuilder.cs | 21 +- .../AutocadRootToHostConverter.cs | 5 +- .../ServiceRegistration.cs | 1 + .../Civil3dConversionSettings.cs | 6 +- .../Civil3dConversionSettingsFactory.cs | 30 +++ .../Civil3dRootToHostConverter.cs | 27 ++- .../GlobalUsings.cs | 1 - ...Speckle.Converters.Civil3dShared.projitems | 3 +- ... CivilEntityToSpeckleTopLevelConverter.cs} | 40 ++-- Speckle.Connectors.sln | 7 +- 26 files changed, 725 insertions(+), 405 deletions(-) create mode 100644 Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs create mode 100644 Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs create mode 100644 Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs create mode 100644 Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs create mode 100644 Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs create mode 100644 Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.projitems create mode 100644 Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs rename Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/{PipeToSpeckleConverter.cs => CivilEntityToSpeckleTopLevelConverter.cs} (61%) diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs new file mode 100644 index 000000000..955d14f57 --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs @@ -0,0 +1,220 @@ +using System.Collections.Concurrent; +using Autodesk.AutoCAD.DatabaseServices; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Speckle.Connectors.Autocad.HostApp; +using Speckle.Connectors.Autocad.HostApp.Extensions; +using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.Common.Caching; +using Speckle.Connectors.Common.Cancellation; +using Speckle.Connectors.Common.Operations; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Exceptions; +using Speckle.Connectors.DUI.Logging; +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.Sdk; +using Speckle.Sdk.Common; + +namespace Speckle.Connectors.Autocad.Bindings; + +public abstract class AutocadSendBaseBinding : ISendBinding +{ + public string Name => "sendBinding"; + public SendBindingUICommands Commands { get; } + private OperationProgressManager OperationProgressManager { get; } + public IBrowserBridge Parent { get; } + + private readonly DocumentModelStore _store; + private readonly IAutocadIdleManager _idleManager; + private readonly List _sendFilters; + private readonly CancellationManager _cancellationManager; + private readonly IServiceProvider _serviceProvider; + private readonly ISendConversionCache _sendConversionCache; + private readonly IOperationProgressManager _operationProgressManager; + private readonly ILogger _logger; + private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; + private readonly ISpeckleApplication _speckleApplication; + + /// + /// Used internally to aggregate the changed objects' id. Note we're using a concurrent dictionary here as the expiry check method is not thread safe, and this was causing problems. See: + /// [CNX-202: Unhandled Exception Occurred when receiving in Rhino](https://linear.app/speckle/issue/CNX-202/unhandled-exception-occurred-when-receiving-in-rhino) + /// As to why a concurrent dictionary, it's because it's the cheapest/easiest way to do so. + /// https://stackoverflow.com/questions/18922985/concurrent-hashsett-in-net-framework + /// + private ConcurrentDictionary ChangedObjectIds { get; set; } = new(); + + protected AutocadSendBaseBinding( + DocumentModelStore store, + IAutocadIdleManager idleManager, + IBrowserBridge parent, + IEnumerable sendFilters, + CancellationManager cancellationManager, + IServiceProvider serviceProvider, + ISendConversionCache sendConversionCache, + IOperationProgressManager operationProgressManager, + ILogger logger, + ISpeckleApplication speckleApplication + ) + { + _store = store; + _idleManager = idleManager; + _serviceProvider = serviceProvider; + _cancellationManager = cancellationManager; + _sendFilters = sendFilters.ToList(); + _sendConversionCache = sendConversionCache; + _operationProgressManager = operationProgressManager; + _logger = logger; + _speckleApplication = speckleApplication; + _topLevelExceptionHandler = parent.TopLevelExceptionHandler; + Parent = parent; + Commands = new SendBindingUICommands(parent); + + Application.DocumentManager.DocumentActivated += (_, args) => + _topLevelExceptionHandler.CatchUnhandled(() => SubscribeToObjectChanges(args.Document)); + + if (Application.DocumentManager.CurrentDocument != null) + { + // catches the case when autocad just opens up with a blank new doc + SubscribeToObjectChanges(Application.DocumentManager.CurrentDocument); + } + // Since ids of the objects generates from same seed, we should clear the cache always whenever doc swapped. + _store.DocumentChanged += (_, _) => + { + _sendConversionCache.ClearCache(); + }; + } + + private readonly List _docSubsTracker = new(); + + private void SubscribeToObjectChanges(Document doc) + { + if (doc == null || doc.Database == null || _docSubsTracker.Contains(doc.Name)) + { + return; + } + + _docSubsTracker.Add(doc.Name); + doc.Database.ObjectAppended += (_, e) => OnObjectChanged(e.DBObject); + doc.Database.ObjectErased += (_, e) => OnObjectChanged(e.DBObject); + doc.Database.ObjectModified += (_, e) => OnObjectChanged(e.DBObject); + } + + private void OnObjectChanged(DBObject dbObject) + { + _topLevelExceptionHandler.CatchUnhandled(() => OnChangeChangedObjectIds(dbObject)); + } + + private void OnChangeChangedObjectIds(DBObject dBObject) + { + ChangedObjectIds[dBObject.GetSpeckleApplicationId()] = 1; + _idleManager.SubscribeToIdle(nameof(AutocadSendBinding), RunExpirationChecks); + } + + private void RunExpirationChecks() + { + var senders = _store.GetSenders(); + string[] objectIdsList = ChangedObjectIds.Keys.ToArray(); + List expiredSenderIds = new(); + + _sendConversionCache.EvictObjects(objectIdsList); + + foreach (SenderModelCard modelCard in senders) + { + var intersection = modelCard.SendFilter.NotNull().GetObjectIds().Intersect(objectIdsList).ToList(); + bool isExpired = intersection.Count != 0; + if (isExpired) + { + expiredSenderIds.Add(modelCard.ModelCardId.NotNull()); + } + } + + Commands.SetModelsExpired(expiredSenderIds); + ChangedObjectIds = new(); + } + + public List GetSendFilters() => _sendFilters; + + public List GetSendSettings() => []; + + public Task Send(string modelCardId) + { + Parent.RunOnMainThread(async () => await SendInternal(modelCardId).ConfigureAwait(false)); + return Task.CompletedTask; + } + + protected abstract void InitializeSettings(IServiceProvider serviceProvider); + + private async Task SendInternal(string modelCardId) + { + try + { + if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard) + { + // Handle as GLOBAL ERROR at BrowserBridge + throw new InvalidOperationException("No publish model card was found."); + } + + using var scope = _serviceProvider.CreateScope(); + InitializeSettings(scope.ServiceProvider); + + CancellationToken cancellationToken = _cancellationManager.InitCancellationTokenSource(modelCardId); + + // Disable document activation (document creation and document switch) + // Not disabling results in DUI model card being out of sync with the active document + // The DocumentActivated event isn't usable probably because it is pushed to back of main thread queue + Application.DocumentManager.DocumentActivationEnabled = false; + + // Get elements to convert + List autocadObjects = Application.DocumentManager.CurrentDocument.GetObjects( + modelCard.SendFilter.NotNull().GetObjectIds() + ); + + if (autocadObjects.Count == 0) + { + // Handle as CARD ERROR in this function + throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!"); + } + + var sendResult = await scope + .ServiceProvider.GetRequiredService>() + .Execute( + autocadObjects, + modelCard.GetSendInfo(_speckleApplication.Slug), + (status, progress) => + _operationProgressManager.SetModelProgress( + Parent, + modelCardId, + new ModelCardProgress(modelCardId, status, progress), + cancellationToken + ), + cancellationToken + ) + .ConfigureAwait(false); + + Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults); + } + catch (OperationCanceledException) + { + // SWALLOW -> UI handles it immediately, so we do not need to handle anything for now! + // Idea for later -> when cancel called, create promise from UI to solve it later with this catch block. + // So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled + return; + } + catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation + { + _logger.LogModelCardHandledError(ex); + Commands.SetModelError(modelCardId, ex); + } + finally + { + // renable document activation + Application.DocumentManager.DocumentActivationEnabled = true; + } + } + + public void CancelSend(string modelCardId) => _cancellationManager.CancelOperation(modelCardId); +} diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs index 6856f58b6..bc2a28a96 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBinding.cs @@ -1,54 +1,21 @@ -using System.Collections.Concurrent; -using Autodesk.AutoCAD.DatabaseServices; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Speckle.Connectors.Autocad.HostApp; -using Speckle.Connectors.Autocad.HostApp.Extensions; -using Speckle.Connectors.Autocad.Operations.Send; using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Cancellation; -using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; -using Speckle.Connectors.DUI.Exceptions; -using Speckle.Connectors.DUI.Logging; 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.Converters.Autocad; using Speckle.Converters.Common; using Speckle.Sdk; -using Speckle.Sdk.Common; namespace Speckle.Connectors.Autocad.Bindings; -public sealed class AutocadSendBinding : ISendBinding +public sealed class AutocadSendBinding : AutocadSendBaseBinding { - public string Name => "sendBinding"; - public SendBindingUICommands Commands { get; } - private OperationProgressManager OperationProgressManager { get; } - public IBrowserBridge Parent { get; } - - private readonly DocumentModelStore _store; - private readonly IAutocadIdleManager _idleManager; - private readonly List _sendFilters; - private readonly CancellationManager _cancellationManager; - private readonly IServiceProvider _serviceProvider; - private readonly ISendConversionCache _sendConversionCache; - private readonly IOperationProgressManager _operationProgressManager; - private readonly ILogger _logger; - private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; private readonly IAutocadConversionSettingsFactory _autocadConversionSettingsFactory; - private readonly ISpeckleApplication _speckleApplication; - - /// - /// Used internally to aggregate the changed objects' id. Note we're using a concurrent dictionary here as the expiry check method is not thread safe, and this was causing problems. See: - /// [CNX-202: Unhandled Exception Occurred when receiving in Rhino](https://linear.app/speckle/issue/CNX-202/unhandled-exception-occurred-when-receiving-in-rhino) - /// As to why a concurrent dictionary, it's because it's the cheapest/easiest way to do so. - /// https://stackoverflow.com/questions/18922985/concurrent-hashsett-in-net-framework - /// - private ConcurrentDictionary ChangedObjectIds { get; set; } = new(); public AutocadSendBinding( DocumentModelStore store, @@ -63,163 +30,26 @@ public AutocadSendBinding( IAutocadConversionSettingsFactory autocadConversionSettingsFactory, ISpeckleApplication speckleApplication ) + : base( + store, + idleManager, + parent, + sendFilters, + cancellationManager, + serviceProvider, + sendConversionCache, + operationProgressManager, + logger, + speckleApplication + ) { - _store = store; - _idleManager = idleManager; - _serviceProvider = serviceProvider; - _cancellationManager = cancellationManager; - _sendFilters = sendFilters.ToList(); - _sendConversionCache = sendConversionCache; - _operationProgressManager = operationProgressManager; - _logger = logger; _autocadConversionSettingsFactory = autocadConversionSettingsFactory; - _speckleApplication = speckleApplication; - _topLevelExceptionHandler = parent.TopLevelExceptionHandler; - Parent = parent; - Commands = new SendBindingUICommands(parent); - - Application.DocumentManager.DocumentActivated += (_, args) => - _topLevelExceptionHandler.CatchUnhandled(() => SubscribeToObjectChanges(args.Document)); - - if (Application.DocumentManager.CurrentDocument != null) - { - // catches the case when autocad just opens up with a blank new doc - SubscribeToObjectChanges(Application.DocumentManager.CurrentDocument); - } - // Since ids of the objects generates from same seed, we should clear the cache always whenever doc swapped. - _store.DocumentChanged += (_, _) => - { - _sendConversionCache.ClearCache(); - }; - } - - private readonly List _docSubsTracker = new(); - - private void SubscribeToObjectChanges(Document doc) - { - if (doc == null || doc.Database == null || _docSubsTracker.Contains(doc.Name)) - { - return; - } - - _docSubsTracker.Add(doc.Name); - doc.Database.ObjectAppended += (_, e) => OnObjectChanged(e.DBObject); - doc.Database.ObjectErased += (_, e) => OnObjectChanged(e.DBObject); - doc.Database.ObjectModified += (_, e) => OnObjectChanged(e.DBObject); - } - - private void OnObjectChanged(DBObject dbObject) - { - _topLevelExceptionHandler.CatchUnhandled(() => OnChangeChangedObjectIds(dbObject)); - } - - private void OnChangeChangedObjectIds(DBObject dBObject) - { - ChangedObjectIds[dBObject.GetSpeckleApplicationId()] = 1; - _idleManager.SubscribeToIdle(nameof(AutocadSendBinding), RunExpirationChecks); - } - - private void RunExpirationChecks() - { - var senders = _store.GetSenders(); - string[] objectIdsList = ChangedObjectIds.Keys.ToArray(); - List expiredSenderIds = new(); - - _sendConversionCache.EvictObjects(objectIdsList); - - foreach (SenderModelCard modelCard in senders) - { - var intersection = modelCard.SendFilter.NotNull().GetObjectIds().Intersect(objectIdsList).ToList(); - bool isExpired = intersection.Count != 0; - if (isExpired) - { - expiredSenderIds.Add(modelCard.ModelCardId.NotNull()); - } - } - - Commands.SetModelsExpired(expiredSenderIds); - ChangedObjectIds = new(); } - public List GetSendFilters() => _sendFilters; - - public List GetSendSettings() => []; - - public Task Send(string modelCardId) + protected override void InitializeSettings(IServiceProvider serviceProvider) { - Parent.RunOnMainThread(async () => await SendInternal(modelCardId).ConfigureAwait(false)); - return Task.CompletedTask; + serviceProvider + .GetRequiredService>() + .Initialize(_autocadConversionSettingsFactory.Create(Application.DocumentManager.CurrentDocument)); } - - private async Task SendInternal(string modelCardId) - { - try - { - if (_store.GetModelById(modelCardId) is not SenderModelCard modelCard) - { - // Handle as GLOBAL ERROR at BrowserBridge - throw new InvalidOperationException("No publish model card was found."); - } - - using var scope = _serviceProvider.CreateScope(); - scope - .ServiceProvider.GetRequiredService>() - .Initialize(_autocadConversionSettingsFactory.Create(Application.DocumentManager.CurrentDocument)); - - CancellationToken cancellationToken = _cancellationManager.InitCancellationTokenSource(modelCardId); - - // Disable document activation (document creation and document switch) - // Not disabling results in DUI model card being out of sync with the active document - // The DocumentActivated event isn't usable probably because it is pushed to back of main thread queue - Application.DocumentManager.DocumentActivationEnabled = false; - - // Get elements to convert - List autocadObjects = Application.DocumentManager.CurrentDocument.GetObjects( - modelCard.SendFilter.NotNull().GetObjectIds() - ); - - if (autocadObjects.Count == 0) - { - // Handle as CARD ERROR in this function - throw new SpeckleSendFilterException("No objects were found to convert. Please update your publish filter!"); - } - - var sendResult = await scope - .ServiceProvider.GetRequiredService>() - .Execute( - autocadObjects, - modelCard.GetSendInfo(_speckleApplication.Slug), - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ), - cancellationToken - ) - .ConfigureAwait(false); - - Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults); - } - catch (OperationCanceledException) - { - // SWALLOW -> UI handles it immediately, so we do not need to handle anything for now! - // Idea for later -> when cancel called, create promise from UI to solve it later with this catch block. - // So have 3 state on UI -> Cancellation clicked -> Cancelling -> Cancelled - return; - } - catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation - { - _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); - } - finally - { - // renable document activation - Application.DocumentManager.DocumentActivationEnabled = true; - } - } - - public void CancelSend(string modelCardId) => _cancellationManager.CancelOperation(modelCardId); } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs index 1b5760727..6e199726f 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/AutocadConnectorModule.cs @@ -1,5 +1,11 @@ #if AUTOCAD +using System.Reflection; using Microsoft.Extensions.DependencyInjection; +using Speckle.Connectors.Autocad.Bindings; +using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.Common.Builders; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Sdk; namespace Speckle.Connectors.Autocad.DependencyInjection; @@ -9,9 +15,16 @@ public static void AddAutocad(this IServiceCollection serviceCollection) { serviceCollection.AddAutocadBase(); - // Operations + // Send serviceCollection.LoadSend(); + serviceCollection.AddScoped, AutocadRootObjectBuilder>(); + + // Receive serviceCollection.LoadReceive(); + + // Register vertical specific bindings + serviceCollection.AddSingleton(); + serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetExecutingAssembly()); } } #endif diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs index 3cfd3a5cb..b7e3b6ec0 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/Civil3dConnectorModule.cs @@ -1,5 +1,7 @@ #if CIVIL3D using Microsoft.Extensions.DependencyInjection; +using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.Common.Builders; namespace Speckle.Connectors.Autocad.DependencyInjection; @@ -8,7 +10,10 @@ public static class Civil3dConnectorModule public static void AddCivil3d(this IServiceCollection serviceCollection) { serviceCollection.AddAutocadBase(); + + // send serviceCollection.LoadSend(); + serviceCollection.AddScoped, Civil3dRootObjectBuilder>(); } } #endif diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs index 762810747..fedcfa210 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs @@ -70,12 +70,6 @@ public static void LoadSend(this IServiceCollection serviceCollection) // Operations serviceCollection.AddScoped>(); - // Object Builders - serviceCollection.AddScoped, AutocadRootObjectBuilder>(); - - // Register bindings - serviceCollection.AddSingleton(); - // register send filters serviceCollection.AddTransient(); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadLayerUnpacker.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadLayerUnpacker.cs index 9905f4257..cad1c727e 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadLayerUnpacker.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadLayerUnpacker.cs @@ -1,4 +1,4 @@ -using Autodesk.AutoCAD.DatabaseServices; +using Autodesk.AutoCAD.DatabaseServices; using Speckle.Connectors.Autocad.HostApp.Extensions; using Speckle.Converters.Common; using Speckle.Sdk.Models.Collections; @@ -19,9 +19,6 @@ public Layer GetOrCreateSpeckleLayer(Entity entity, Transaction tr, out LayerTab } if (tr.GetObject(entity.LayerId, OpenMode.ForRead) is LayerTableRecord autocadLayer) { - // Layers and geometries can have same application ids..... - // We should prevent it for sketchup converter. Because when it happens "objects_to_bake" definition - // is changing on the way if it happens. speckleLayer = new Layer(layerName) { applicationId = autocadLayer.GetSpeckleApplicationId() }; // Do not use handle directly, see note in the 'GetSpeckleApplicationId' method _layerCollectionCache[layerName] = speckleLayer; layer = autocadLayer; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs new file mode 100644 index 000000000..589cd11d3 --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs @@ -0,0 +1,184 @@ +using System.Diagnostics.CodeAnalysis; +using Autodesk.AutoCAD.DatabaseServices; +using Microsoft.Extensions.Logging; +using Speckle.Connectors.Autocad.HostApp; +using Speckle.Connectors.Common.Builders; +using Speckle.Connectors.Common.Caching; +using Speckle.Connectors.Common.Conversion; +using Speckle.Connectors.Common.Extensions; +using Speckle.Connectors.Common.Operations; +using Speckle.Converters.Common; +using Speckle.Sdk; +using Speckle.Sdk.Logging; +using Speckle.Sdk.Models; +using Speckle.Sdk.Models.Collections; +using Speckle.Sdk.Models.Instances; + +namespace Speckle.Connectors.Autocad.Operations.Send; + +public abstract class AutocadRootObjectBaseBuilder : IRootObjectBuilder +{ + private readonly IRootToSpeckleConverter _converter; + private readonly string[] _documentPathSeparator = ["\\"]; + private readonly ISendConversionCache _sendConversionCache; + private readonly AutocadInstanceUnpacker _instanceUnpacker; + private readonly AutocadMaterialUnpacker _materialUnpacker; + private readonly AutocadColorUnpacker _colorUnpacker; + private readonly AutocadGroupUnpacker _groupUnpacker; + private readonly ILogger _logger; + private readonly ISdkActivityFactory _activityFactory; + + protected AutocadRootObjectBaseBuilder( + IRootToSpeckleConverter converter, + ISendConversionCache sendConversionCache, + AutocadInstanceUnpacker instanceObjectManager, + AutocadMaterialUnpacker materialUnpacker, + AutocadColorUnpacker colorUnpacker, + AutocadGroupUnpacker groupUnpacker, + ILogger logger, + ISdkActivityFactory activityFactory + ) + { + _converter = converter; + _sendConversionCache = sendConversionCache; + _instanceUnpacker = instanceObjectManager; + _materialUnpacker = materialUnpacker; + _colorUnpacker = colorUnpacker; + _groupUnpacker = groupUnpacker; + _logger = logger; + _activityFactory = activityFactory; + } + + public Task Build( + IReadOnlyList objects, + SendInfo sendInfo, + Action? onOperationProgressed = null, + CancellationToken ct = default + ) => Task.FromResult(BuildSync(objects, sendInfo, onOperationProgressed, ct)); + + [SuppressMessage( + "Maintainability", + "CA1506:Avoid excessive class coupling", + Justification = """ + It is already simplified but has many different references since it is a builder. Do not know can we simplify it now. + Later we might consider to refactor proxies from one proxy manager? but we do not know the shape of it all potential + proxy classes yet. So I'm supressing this one now!!! + """ + )] + private RootObjectBuilderResult BuildSync( + IReadOnlyList objects, + SendInfo sendInfo, + Action? onOperationProgressed, + CancellationToken ct + ) + { + // 0 - Init the root + Collection root = + new() + { + name = Application + .DocumentManager.CurrentDocument.Name // POC: https://spockle.atlassian.net/browse/CNX-9319 + .Split(_documentPathSeparator, StringSplitOptions.None) + .Reverse() + .First() + }; + + // TODO: better handling for document and transactions!! + Document doc = Application.DocumentManager.CurrentDocument; + using Transaction tr = doc.Database.TransactionManager.StartTransaction(); + + // 1 - Unpack the instances + var (atomicObjects, instanceProxies, instanceDefinitionProxies) = _instanceUnpacker.UnpackSelection(objects); + root[ProxyKeys.INSTANCE_DEFINITION] = instanceDefinitionProxies; + + // 2 - Unpack the groups + root[ProxyKeys.GROUP] = _groupUnpacker.UnpackGroups(atomicObjects); + using (var _ = _activityFactory.Start("Converting objects")) + { + // 3 - Convert atomic objects + List usedAcadLayers = new(); // Keeps track of autocad layers used, so we can pass them on later to the material and color unpacker. + List results = new(); + int count = 0; + foreach (var (entity, applicationId) in atomicObjects) + { + ct.ThrowIfCancellationRequested(); + using (var convertActivity = _activityFactory.Start("Converting object")) + { + // Create and add a collection for this entity if not done so already. + (Collection objectCollection, LayerTableRecord? autocadLayer) = CreateObjectCollection(entity, tr); + + if (autocadLayer is not null) + { + usedAcadLayers.Add(autocadLayer); + root.elements.Add(objectCollection); + } + + var result = ConvertAutocadEntity( + entity, + applicationId, + objectCollection, + instanceProxies, + sendInfo.ProjectId + ); + results.Add(result); + + onOperationProgressed?.Invoke("Converting", (double)++count / atomicObjects.Count); + } + } + + if (results.All(x => x.Status == Status.ERROR)) + { + throw new SpeckleConversionException("Failed to convert all objects."); // fail fast instead creating empty commit! It will appear as model card error with red color. + } + + // 4 - Unpack the render material proxies + root[ProxyKeys.RENDER_MATERIAL] = _materialUnpacker.UnpackMaterials(atomicObjects, usedAcadLayers); + + // 5 - Unpack the color proxies + root[ProxyKeys.COLOR] = _colorUnpacker.UnpackColors(atomicObjects, usedAcadLayers); + + return new RootObjectBuilderResult(root, results); + } + } + + public virtual (Collection, LayerTableRecord?) CreateObjectCollection(Entity entity, Transaction tr) + { + return (new(), null); + } + + private SendConversionResult ConvertAutocadEntity( + Entity entity, + string applicationId, + Collection collectionHost, + IReadOnlyDictionary instanceProxies, + string projectId + ) + { + string sourceType = entity.GetType().ToString(); + try + { + Base converted; + if (entity is BlockReference && instanceProxies.TryGetValue(applicationId, out InstanceProxy? instanceProxy)) + { + converted = instanceProxy; + } + else if (_sendConversionCache.TryGetValue(projectId, applicationId, out ObjectReference? value)) + { + converted = value; + } + else + { + converted = _converter.Convert(entity); + converted.applicationId = applicationId; + } + + collectionHost.elements.Add(converted); + return new(Status.SUCCESS, applicationId, sourceType, converted); + } + catch (Exception ex) when (!ex.IsFatal()) + { + _logger.LogSendConversionError(ex, sourceType); + return new(Status.ERROR, applicationId, sourceType, null, ex); + } + } +} diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs index ba521c1ab..7278ecae6 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBuilder.cs @@ -1,180 +1,46 @@ -using System.Diagnostics.CodeAnalysis; using Autodesk.AutoCAD.DatabaseServices; using Microsoft.Extensions.Logging; using Speckle.Connectors.Autocad.HostApp; -using Speckle.Connectors.Common.Builders; using Speckle.Connectors.Common.Caching; -using Speckle.Connectors.Common.Conversion; -using Speckle.Connectors.Common.Extensions; -using Speckle.Connectors.Common.Operations; -using Speckle.Converters.Autocad; using Speckle.Converters.Common; -using Speckle.Sdk; using Speckle.Sdk.Logging; -using Speckle.Sdk.Models; using Speckle.Sdk.Models.Collections; -using Speckle.Sdk.Models.Instances; namespace Speckle.Connectors.Autocad.Operations.Send; -public class AutocadRootObjectBuilder : IRootObjectBuilder +public sealed class AutocadRootObjectBuilder : AutocadRootObjectBaseBuilder { - private readonly IRootToSpeckleConverter _converter; - private readonly string[] _documentPathSeparator = ["\\"]; - private readonly IConverterSettingsStore _converterSettings; - private readonly ISendConversionCache _sendConversionCache; - private readonly AutocadInstanceUnpacker _instanceUnpacker; - private readonly AutocadMaterialUnpacker _materialUnpacker; - private readonly AutocadColorUnpacker _colorUnpacker; private readonly AutocadLayerUnpacker _layerUnpacker; - private readonly AutocadGroupUnpacker _groupUnpacker; - private readonly ILogger _logger; - private readonly ISdkActivityFactory _activityFactory; public AutocadRootObjectBuilder( + AutocadLayerUnpacker layerUnpacker, IRootToSpeckleConverter converter, ISendConversionCache sendConversionCache, AutocadInstanceUnpacker instanceObjectManager, AutocadMaterialUnpacker materialUnpacker, AutocadColorUnpacker colorUnpacker, - AutocadLayerUnpacker layerUnpacker, AutocadGroupUnpacker groupUnpacker, ILogger logger, - ISdkActivityFactory activityFactory, - IConverterSettingsStore converterSettings + ISdkActivityFactory activityFactory ) + : base( + converter, + sendConversionCache, + instanceObjectManager, + materialUnpacker, + colorUnpacker, + groupUnpacker, + logger, + activityFactory + ) { - _converter = converter; - _sendConversionCache = sendConversionCache; - _instanceUnpacker = instanceObjectManager; - _materialUnpacker = materialUnpacker; - _colorUnpacker = colorUnpacker; _layerUnpacker = layerUnpacker; - _groupUnpacker = groupUnpacker; - _logger = logger; - _activityFactory = activityFactory; - _converterSettings = converterSettings; } - public Task Build( - IReadOnlyList objects, - SendInfo sendInfo, - Action? onOperationProgressed = null, - CancellationToken ct = default - ) => Task.FromResult(BuildSync(objects, sendInfo, onOperationProgressed, ct)); - - [SuppressMessage( - "Maintainability", - "CA1506:Avoid excessive class coupling", - Justification = """ - It is already simplified but has many different references since it is a builder. Do not know can we simplify it now. - Later we might consider to refactor proxies from one proxy manager? but we do not know the shape of it all potential - proxy classes yet. So I'm supressing this one now!!! - """ - )] - private RootObjectBuilderResult BuildSync( - IReadOnlyList objects, - SendInfo sendInfo, - Action? onOperationProgressed, - CancellationToken ct - ) - { - // 0 - Init the root - Collection root = - new() - { - name = Application - .DocumentManager.CurrentDocument.Name // POC: https://spockle.atlassian.net/browse/CNX-9319 - .Split(_documentPathSeparator, StringSplitOptions.None) - .Reverse() - .First() - }; - root["units"] = _converterSettings.Current.SpeckleUnits; - - // TODO: better handling for document and transactions!! - Document doc = Application.DocumentManager.CurrentDocument; - using Transaction tr = doc.Database.TransactionManager.StartTransaction(); - - // 1 - Unpack the instances - var (atomicObjects, instanceProxies, instanceDefinitionProxies) = _instanceUnpacker.UnpackSelection(objects); - root[ProxyKeys.INSTANCE_DEFINITION] = instanceDefinitionProxies; - - // 2 - Unpack the groups - root[ProxyKeys.GROUP] = _groupUnpacker.UnpackGroups(atomicObjects); - using (var _ = _activityFactory.Start("Converting objects")) - { - // 3 - Convert atomic objects - List usedAcadLayers = new(); // Keeps track of autocad layers used, so we can pass them on later to the material and color unpacker. - List results = new(); - int count = 0; - foreach (var (entity, applicationId) in atomicObjects) - { - ct.ThrowIfCancellationRequested(); - using (var convertActivity = _activityFactory.Start("Converting object")) - { - // Create and add a collection for each layer if not done so already. - Layer layer = _layerUnpacker.GetOrCreateSpeckleLayer(entity, tr, out LayerTableRecord? autocadLayer); - if (autocadLayer is not null) - { - usedAcadLayers.Add(autocadLayer); - root.elements.Add(layer); - } - - var result = ConvertAutocadEntity(entity, applicationId, layer, instanceProxies, sendInfo.ProjectId); - results.Add(result); - - onOperationProgressed?.Invoke("Converting", (double)++count / atomicObjects.Count); - } - } - - if (results.All(x => x.Status == Status.ERROR)) - { - throw new SpeckleConversionException("Failed to convert all objects."); // fail fast instead creating empty commit! It will appear as model card error with red color. - } - - // 4 - Unpack the render material proxies - root[ProxyKeys.RENDER_MATERIAL] = _materialUnpacker.UnpackMaterials(atomicObjects, usedAcadLayers); - - // 5 - Unpack the color proxies - root[ProxyKeys.COLOR] = _colorUnpacker.UnpackColors(atomicObjects, usedAcadLayers); - - return new RootObjectBuilderResult(root, results); - } - } - - private SendConversionResult ConvertAutocadEntity( - Entity entity, - string applicationId, - Collection collectionHost, - IReadOnlyDictionary instanceProxies, - string projectId - ) + public override (Collection, LayerTableRecord?) CreateObjectCollection(Entity entity, Transaction tr) { - string sourceType = entity.GetType().ToString(); - try - { - Base converted; - if (entity is BlockReference && instanceProxies.TryGetValue(applicationId, out InstanceProxy? instanceProxy)) - { - converted = instanceProxy; - } - else if (_sendConversionCache.TryGetValue(projectId, applicationId, out ObjectReference? value)) - { - converted = value; - } - else - { - converted = _converter.Convert(entity); - converted.applicationId = applicationId; - } + Layer layer = _layerUnpacker.GetOrCreateSpeckleLayer(entity, tr, out LayerTableRecord? autocadLayer); - collectionHost.elements.Add(converted); - return new(Status.SUCCESS, applicationId, sourceType, converted); - } - catch (Exception ex) when (!ex.IsFatal()) - { - _logger.LogSendConversionError(ex, sourceType); - return new(Status.ERROR, applicationId, sourceType, null, ex); - } + return (layer, autocadLayer); } } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs index 526e6ee7a..94111eb41 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs @@ -2,14 +2,15 @@ using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using Microsoft.Extensions.DependencyInjection; -using Speckle.Connectors.Autocad.DependencyInjection; using Speckle.Connectors.Common; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.WebView; #if AUTOCAD +using Speckle.Connectors.Autocad.DependencyInjection; using Speckle.Converters.Autocad; #elif CIVIL3D using Speckle.Converters.Civil3d; +using Speckle.Connectors.Civil3d.DependencyInjection; #endif namespace Speckle.Connectors.Autocad.Plugin; @@ -30,7 +31,7 @@ public void Command() return; } - PaletteSet = new PaletteSet("Speckle (Beta) for Autocad", s_id) + PaletteSet = new PaletteSet($"Speckle (Beta) for {AppUtils.App}", s_id) { Size = new Size(400, 500), DockEnabled = (DockSides)((int)DockSides.Left + (int)DockSides.Right) @@ -51,7 +52,7 @@ public void Command() var panelWebView = Container.GetRequiredService(); - PaletteSet.AddVisual("Speckle (Beta) for Autocad WebView", panelWebView); + PaletteSet.AddVisual($"Speckle (Beta) for {AppUtils.App} WebView", panelWebView); FocusPalette(); } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems index 4798dce73..682bf35e2 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Speckle.Connectors.AutocadShared.projitems @@ -13,9 +13,9 @@ + - @@ -39,6 +39,7 @@ + diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj index fd14da12c..66dcd0fa9 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/Speckle.Connectors.Civil3d2024.csproj @@ -22,4 +22,5 @@ + diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs new file mode 100644 index 000000000..d697acf20 --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs @@ -0,0 +1,66 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Speckle.Connectors.Autocad.Bindings; +using Speckle.Connectors.Autocad.HostApp; +using Speckle.Connectors.Common.Caching; +using Speckle.Connectors.Common.Cancellation; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; +using Speckle.Connectors.DUI.Models; +using Speckle.Connectors.DUI.Models.Card.SendFilter; +using Speckle.Converters.Autocad; +using Speckle.Converters.Civil3d; +using Speckle.Converters.Common; +using Speckle.Sdk; + +namespace Speckle.Connectors.Civil3d.Bindings; + +public sealed class Civil3dSendBinding : AutocadSendBaseBinding +{ + private readonly ICivil3dConversionSettingsFactory _civil3dConversionSettingsFactory; + private readonly IAutocadConversionSettingsFactory _autocadConversionSettingsFactory; + + public Civil3dSendBinding( + DocumentModelStore store, + IAutocadIdleManager idleManager, + IBrowserBridge parent, + IEnumerable sendFilters, + CancellationManager cancellationManager, + IServiceProvider serviceProvider, + ISendConversionCache sendConversionCache, + IOperationProgressManager operationProgressManager, + ILogger logger, + ICivil3dConversionSettingsFactory civil3dConversionSettingsFactory, + IAutocadConversionSettingsFactory autocadConversionSettingsFactory, + ISpeckleApplication speckleApplication + ) + : base( + store, + idleManager, + parent, + sendFilters, + cancellationManager, + serviceProvider, + sendConversionCache, + operationProgressManager, + logger, + speckleApplication + ) + { + _civil3dConversionSettingsFactory = civil3dConversionSettingsFactory; + _autocadConversionSettingsFactory = autocadConversionSettingsFactory; + } + + // POC: we're registering the conversion settings for autocad here because we need the autocad conversion settings to be able to use the autocad typed converters. + // POC: We need a separate send binding for civil3d due to using a different unit converter (needed for conversion settings construction) + protected override void InitializeSettings(IServiceProvider serviceProvider) + { + serviceProvider + .GetRequiredService>() + .Initialize(_civil3dConversionSettingsFactory.Create(Application.DocumentManager.CurrentDocument)); + + serviceProvider + .GetRequiredService>() + .Initialize(_autocadConversionSettingsFactory.Create(Application.DocumentManager.CurrentDocument)); + } +} diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs new file mode 100644 index 000000000..7c141f18a --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs @@ -0,0 +1,27 @@ +using System.Reflection; +using Microsoft.Extensions.DependencyInjection; +using Speckle.Connectors.Autocad.DependencyInjection; +using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.Civil3d.Bindings; +using Speckle.Connectors.Civil3d.Operations.Send; +using Speckle.Connectors.Common.Builders; +using Speckle.Connectors.DUI.Bindings; +using Speckle.Sdk; + +namespace Speckle.Connectors.Civil3d.DependencyInjection; + +public static class Civil3dConnectorModule +{ + public static void AddCivil3d(this IServiceCollection serviceCollection) + { + serviceCollection.AddAutocadBase(); + serviceCollection.LoadSend(); + + // register civil specific send classes + serviceCollection.AddScoped, Civil3dRootObjectBuilder>(); + serviceCollection.AddSingleton(); + + // automatically detects the Class:IClass interface pattern to register all generated interfaces + serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetExecutingAssembly()); + } +} diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs new file mode 100644 index 000000000..679ae8e40 --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs @@ -0,0 +1,47 @@ +using Autodesk.AutoCAD.DatabaseServices; +using Microsoft.Extensions.Logging; +using Speckle.Connectors.Autocad.HostApp; +using Speckle.Connectors.Autocad.Operations.Send; +using Speckle.Connectors.Common.Caching; +using Speckle.Converters.Common; +using Speckle.Sdk.Logging; +using Speckle.Sdk.Models.Collections; + +namespace Speckle.Connectors.Civil3d.Operations.Send; + +public sealed class Civil3dRootObjectBuilder : AutocadRootObjectBaseBuilder +{ + private readonly AutocadLayerUnpacker _layerUnpacker; + + public Civil3dRootObjectBuilder( + AutocadLayerUnpacker layerUnpacker, + IRootToSpeckleConverter converter, + ISendConversionCache sendConversionCache, + AutocadInstanceUnpacker instanceObjectManager, + AutocadMaterialUnpacker materialUnpacker, + AutocadColorUnpacker colorUnpacker, + AutocadGroupUnpacker groupUnpacker, + ILogger logger, + ISdkActivityFactory activityFactory + ) + : base( + converter, + sendConversionCache, + instanceObjectManager, + materialUnpacker, + colorUnpacker, + groupUnpacker, + logger, + activityFactory + ) + { + _layerUnpacker = layerUnpacker; + } + + public override (Collection, LayerTableRecord?) CreateObjectCollection(Entity entity, Transaction tr) + { + Layer layer = _layerUnpacker.GetOrCreateSpeckleLayer(entity, tr, out LayerTableRecord? autocadLayer); + + return (layer, autocadLayer); + } +} diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.projitems b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.projitems new file mode 100644 index 000000000..391ba05b1 --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.projitems @@ -0,0 +1,21 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + 55E65D72-2FE8-4E61-891C-16A4D551CCF7 + + + Speckle.Connectors.Civil3dShared + + + + + + + + + + + + \ No newline at end of file diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj new file mode 100644 index 000000000..3d715ea4a --- /dev/null +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Speckle.Connectors.Civil3dShared.shproj @@ -0,0 +1,12 @@ + + + + {41BC679F-887F-44CF-971D-A5502EE87DB0} + + + + + + + diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs index 36001723b..24d5a9639 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs @@ -23,7 +23,6 @@ public class RevitRootObjectBuilder : IRootObjectBuilder // POC: SendSelection and RevitConversionContextStack should be interfaces, former needs interfaces private readonly IRootToSpeckleConverter _converter; private readonly IConverterSettingsStore _converterSettings; - private readonly Collection _rootObject; private readonly ISendConversionCache _sendConversionCache; private readonly ElementUnpacker _elementUnpacker; private readonly SendCollectionManager _sendCollectionManager; @@ -50,12 +49,6 @@ RevitToSpeckleCacheSingleton revitToSpeckleCacheSingleton _revitToSpeckleCacheSingleton = revitToSpeckleCacheSingleton; _logger = logger; _parameterDefinitionHandler = parameterDefinitionHandler; - - _rootObject = new Collection() - { - name = _converterSettings.Current.Document.PathName.Split('\\').Last().Split('.').First() - }; - _rootObject["units"] = _converterSettings.Current.SpeckleUnits; } public async Task Build( @@ -72,6 +65,11 @@ public async Task Build( throw new SpeckleException("Family Environment documents are not supported."); } + // 0 - Init the root + Collection rootObject = + new() { name = _converterSettings.Current.Document.PathName.Split('\\').Last().Split('.').First() }; + rootObject["units"] = _converterSettings.Current.SpeckleUnits; + var revitElements = new List(); // Convert ids to actual revit elements @@ -116,7 +114,8 @@ public async Task Build( converted.applicationId = applicationId; } - var collection = _sendCollectionManager.GetAndCreateObjectHostCollection(revitElement, _rootObject); + var collection = _sendCollectionManager.GetAndCreateObjectHostCollection(revitElement, rootObject); + collection.elements.Add(converted); results.Add(new(Status.SUCCESS, applicationId, sourceType, converted)); } @@ -136,10 +135,10 @@ public async Task Build( var idsAndSubElementIds = _elementUnpacker.GetElementsAndSubelementIdsFromAtomicObjects(atomicObjects); var materialProxies = _revitToSpeckleCacheSingleton.GetRenderMaterialProxyListForObjects(idsAndSubElementIds); - _rootObject[ProxyKeys.RENDER_MATERIAL] = materialProxies; + rootObject[ProxyKeys.RENDER_MATERIAL] = materialProxies; // NOTE: these are currently not used anywhere, so we could even skip them (?). - _rootObject[ProxyKeys.PARAMETER_DEFINITIONS] = _parameterDefinitionHandler.Definitions; + rootObject[ProxyKeys.PARAMETER_DEFINITIONS] = _parameterDefinitionHandler.Definitions; - return new RootObjectBuilderResult(_rootObject, results); + return new RootObjectBuilderResult(rootObject, results); } } diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/AutocadRootToHostConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/AutocadRootToHostConverter.cs index 8edea41f3..5f13ffa6d 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/AutocadRootToHostConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/AutocadRootToHostConverter.cs @@ -2,7 +2,6 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Converters.Common.Registration; -using Speckle.Sdk.Common; using Speckle.Sdk.Models; namespace Speckle.Converters.Autocad; @@ -25,7 +24,7 @@ public Base Convert(object target) { if (target is not DBObject dbObject) { - throw new ConversionNotSupportedException( + throw new SpeckleConversionException( $"Conversion of {target.GetType().Name} to Speckle is not supported. Only objects that inherit from DBObject are." ); } @@ -42,7 +41,7 @@ public Base Convert(object target) if (objectConverter == null) { - throw new ConversionNotSupportedException($"No conversion found for {target.GetType().Name}"); + throw new SpeckleConversionException($"No conversion found for {target.GetType().Name}"); } var convertedObject = objectConverter.Convert(dbObject); diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ServiceRegistration.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ServiceRegistration.cs index ba08d05b0..e5ca83c19 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ServiceRegistration.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ServiceRegistration.cs @@ -22,5 +22,6 @@ public static void AddAutocadConverters(this IServiceCollection serviceCollectio IConverterSettingsStore, ConverterSettingsStore >(); + serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetExecutingAssembly()); } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs index 96d14528c..71835b3dd 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs @@ -1,7 +1,3 @@ namespace Speckle.Converters.Civil3d; -public record Civil3dConversionSettings -{ - public Document Document { get; init; } - public string SpeckleUnits { get; init; } -} +public record Civil3dConversionSettings(Document Document, string SpeckleUnits); diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs new file mode 100644 index 000000000..b22adb63a --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs @@ -0,0 +1,30 @@ +using Speckle.Converters.Common; +using Speckle.InterfaceGenerator; + +namespace Speckle.Converters.Civil3d; + +[GenerateAutoInterface] +public class Civil3dConversionSettingsFactory(IHostToSpeckleUnitConverter unitsConverter) + : ICivil3dConversionSettingsFactory +{ + public Civil3dConversionSettings Create(Document document) => + new(document, unitsConverter.ConvertOrThrow(GetDocBuiltInUnit(document))); + + private static AAEC.BuiltInUnit GetDocBuiltInUnit(Document doc) + { + AAEC.BuiltInUnit unit = AAEC.BuiltInUnit.Dimensionless; + using (ADB.Transaction tr = doc.Database.TransactionManager.StartTransaction()) + { + Autodesk.AutoCAD.DatabaseServices.ObjectId id = AAEC.ApplicationServices.DrawingSetupVariables.GetInstance( + doc.Database, + false + ); + if (tr.GetObject(id, ADB.OpenMode.ForRead) is AAEC.ApplicationServices.DrawingSetupVariables setupVariables) + { + unit = setupVariables.LinearUnit; + } + tr.Commit(); + } + return unit; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs index e9dbd3379..858163ab9 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs @@ -2,7 +2,6 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Converters.Common.Registration; -using Speckle.Sdk.Common; using Speckle.Sdk.Models; namespace Speckle.Converters.Civil3d; @@ -25,12 +24,27 @@ public Base Convert(object target) { if (target is not DBObject dbObject) { - throw new ConversionNotSupportedException( + throw new SpeckleConversionException( $"Conversion of {target.GetType().Name} to Speckle is not supported. Only objects that inherit from DBObject are." ); } Type type = dbObject.GetType(); + object objectToConvert = dbObject; + + // check first for civil type objects + if (target is CDB.Entity civilEntity) + { + type = civilEntity.GetType(); + objectToConvert = civilEntity; + } + + var objectConverter = _toSpeckle.ResolveConverter(type); + + if (objectConverter == null) + { + throw new SpeckleConversionException($"No conversion found for {target.GetType().Name}"); + } try { @@ -38,14 +52,7 @@ public Base Convert(object target) { using (var tr = _settingsStore.Current.Document.Database.TransactionManager.StartTransaction()) { - var objectConverter = _toSpeckle.ResolveConverter(type); - - if (objectConverter == null) - { - throw new ConversionNotSupportedException($"No conversion found for {target.GetType().Name}"); - } - - var convertedObject = objectConverter.Convert(dbObject); + var convertedObject = objectConverter.Convert(objectToConvert); tr.Commit(); return convertedObject; } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs index a1041daae..84ef53636 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs @@ -1,3 +1,2 @@ global using AAEC = Autodesk.Aec; global using CDB = Autodesk.Civil.DatabaseServices; -global using SOBE = Speckle.Objects.BuiltElements; diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems index 117817a09..fdde977ce 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems @@ -10,11 +10,12 @@ + - + \ No newline at end of file diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/PipeToSpeckleConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs similarity index 61% rename from Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/PipeToSpeckleConverter.cs rename to Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs index d79ea563f..5f1807128 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/PipeToSpeckleConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs @@ -7,20 +7,18 @@ namespace Speckle.Converters.Civil3d.ToSpeckle.BuiltElements; -[NameAndRankValue(nameof(CDB.Pipe), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class PipeToSpeckleConverter : IToSpeckleTopLevelConverter +[NameAndRankValue(nameof(CDB.Entity), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] +public class CivilEntityToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter { private readonly ITypedConverter _pointConverter; private readonly ITypedConverter _curveConverter; - private readonly ITypedConverter _boxConverter; private readonly ITypedConverter _solidConverter; private readonly ITypedConverter> _propertySetConverter; private readonly IConverterSettingsStore _settingsStore; - public PipeToSpeckleConverter( + public CivilEntityToSpeckleTopLevelConverter( ITypedConverter pointConverter, ITypedConverter curveConverter, - ITypedConverter boxConverter, ITypedConverter solidConverter, ITypedConverter> propertySetConverter, IConverterSettingsStore settingsStore @@ -28,33 +26,33 @@ IConverterSettingsStore settingsStore { _pointConverter = pointConverter; _curveConverter = curveConverter; - _boxConverter = boxConverter; _solidConverter = solidConverter; _propertySetConverter = propertySetConverter; _settingsStore = settingsStore; } - public Base Convert(object target) => Convert((CDB.Pipe)target); + public Base Convert(object target) => Convert((CDB.Entity)target); - public SOBE.Pipe Convert(CDB.Pipe target) + public Base Convert(CDB.Entity target) { ICurve curve = _curveConverter.Convert(target.BaseCurve); - SOG.Mesh pipeMesh = _solidConverter.Convert(target.Solid3dBody); - - SOBE.Pipe specklePipe = - new() - { - baseCurve = curve, - diameter = target.InnerDiameterOrWidth, - length = target.Length3DToInsideEdge, - displayValue = new List { pipeMesh }, - units = _settingsStore.Current.SpeckleUnits - }; + + Base civilObject = new(); + civilObject["category"] = target.GetRXClass().AppName; + civilObject["name"] = target.Name; + civilObject["baseCurve"] = curve; + civilObject["units"] = _settingsStore.Current.SpeckleUnits; + + if (target is CDB.Part part) + { + // can get solid body info from part for display value + SOG.Mesh display = _solidConverter.Convert(part.Solid3dBody); + civilObject["displayValue"] = display; + } // POC: not setting property sets yet, need to determine connector parameter interoperability // POC: not setting part data yet, same reason as above - // POC: not setting additional pipe properties, probably should scope a CivilPipe class - return specklePipe; + return civilObject; } } diff --git a/Speckle.Connectors.sln b/Speckle.Connectors.sln index 7e77609da..7775ff145 100644 --- a/Speckle.Connectors.sln +++ b/Speckle.Connectors.sln @@ -157,10 +157,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connectors.Logging" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tekla", "Tekla", "{696086E4-D8CC-4FE0-A9B3-5F10B9089B55}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Connector.Tekla2024", "Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj", "{2319C00F-B268-4E4C-9F88-6B379E2BBD22}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Connector.Tekla2024", "Connectors\Tekla\Speckle.Connector.Tekla2024\Speckle.Connector.Tekla2024.csproj", "{2319C00F-B268-4E4C-9F88-6B379E2BBD22}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Speckle.Converters.Common.Tests", "Sdk\Speckle.Converters.Common.Tests\Speckle.Converters.Common.Tests.csproj", "{9EF292C6-1333-4502-AD9C-224D99847185}" EndProject +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Connectors.Civil3dShared", "Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.shproj", "{A1B72EC1-5BC4-41FD-850F-5DA87DF49616}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -395,6 +397,7 @@ Global {696086E4-D8CC-4FE0-A9B3-5F10B9089B55} = {42826721-9A18-4762-8BA9-F1429DD5C5B1} {2319C00F-B268-4E4C-9F88-6B379E2BBD22} = {696086E4-D8CC-4FE0-A9B3-5F10B9089B55} {9EF292C6-1333-4502-AD9C-224D99847185} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} + {A1B72EC1-5BC4-41FD-850F-5DA87DF49616} = {4721AA15-AF6E-4A62-A2C3-65564DC563E6} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EE253116-7070-4E9A-BCE8-2911C251B8C8} @@ -426,6 +429,7 @@ Global Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{9166cc10-12e1-4a0f-916b-61f6f2004f5a}*SharedItemsImports = 5 Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{9add1b7a-6401-4202-8613-f668e2fbc0a4}*SharedItemsImports = 13 Converters\Autocad\Speckle.Converters.AutocadShared\Speckle.Converters.AutocadShared.projitems*{9d66ede4-afc2-4f00-b40c-a7e878a2972f}*SharedItemsImports = 5 + Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems*{a1b72ec1-5bc4-41fd-850f-5da87df49616}*SharedItemsImports = 13 Connectors\Revit\Speckle.Connectors.RevitShared.Cef\Speckle.Connectors.RevitShared.Cef.projitems*{a6de3da0-b242-4f49-aef0-4e26af92d16c}*SharedItemsImports = 5 Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{a6de3da0-b242-4f49-aef0-4e26af92d16c}*SharedItemsImports = 5 Connectors\Rhino\Speckle.Connectors.RhinoShared\Speckle.Connectors.RhinoShared.projitems*{a6e3a82f-4696-4d92-aba1-38aa80752067}*SharedItemsImports = 5 @@ -437,6 +441,7 @@ Global Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{c32274d9-1b66-4d5c-82f9-eb3f10f46752}*SharedItemsImports = 5 Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{c70ebb84-ba5b-4f2f-819e-25e0985ba13c}*SharedItemsImports = 5 Connectors\Autocad\Speckle.Connectors.AutocadShared\Speckle.Connectors.AutocadShared.projitems*{ca8eae01-ab9f-4ec1-b6f3-73721487e9e1}*SharedItemsImports = 5 + Connectors\Autocad\Speckle.Connectors.Civil3dShared\Speckle.Connectors.Civil3dShared.projitems*{ca8eae01-ab9f-4ec1-b6f3-73721487e9e1}*SharedItemsImports = 5 Converters\Revit\Speckle.Converters.RevitShared.Tests\Speckle.Converters.RevitShared.Tests.projitems*{d8069a23-ad2e-4c9e-8574-7e8c45296a46}*SharedItemsImports = 5 Converters\Revit\Speckle.Converters.RevitShared\Speckle.Converters.RevitShared.projitems*{d8069a23-ad2e-4c9e-8574-7e8c45296a46}*SharedItemsImports = 5 Connectors\Revit\Speckle.Connectors.RevitShared\Speckle.Connectors.RevitShared.projitems*{dc570fff-6fe5-47bd-8bc1-b471a6067786}*SharedItemsImports = 13 From 3028e9e29d6ff43101ca8deab8c9f79e24ef8a8c Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Wed, 9 Oct 2024 16:10:13 +0100 Subject: [PATCH 36/62] Asyicify `ExecuteScriptAsync` calls (#240) * First pass adding async * Updated Idle manager to work with async Tasks * CA1506 * missing async * Fixed tests * Really fixed tests * CA2201 * Really fixed the tests * remaining awaits * Async everywhere! * Fixed merge errors * fix: Missing imports * IProgress sync used * rename progress * format * Remove empty files * update sdk * convert progress * use FireAndForget and readonly struct * revert revit to use RevitTask * don't use sync to UI thread for progress * Fixes autocad loop to update UI with Task.Delay instead of Task.Yield * format * merge fixes * update nugets * fix imports for exceptions * fix import --------- Co-authored-by: Alan Rynne Co-authored-by: Adam Hathcock --- .../Bindings/ArcGISReceiveBinding.cs | 24 +- .../Bindings/ArcGISSendBinding.cs | 77 +-- .../Bindings/BasicConnectorBinding.cs | 29 +- .../HostApp/ArcGISColorManager.cs | 14 +- .../HostApp/SyncToQueuedTask.cs | 9 - .../Receive/ArcGISHostObjectBuilder.cs | 141 +++--- .../Send/ArcGISRootObjectBuilder.cs | 6 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../Bindings/AutocadBasicConnectorBinding.cs | 112 ++--- .../Bindings/AutocadReceiveBinding.cs | 16 +- .../Bindings/AutocadSelectionBinding.cs | 8 +- .../Bindings/AutocadSendBaseBinding.cs | 23 +- .../DependencyInjection/SharedRegistration.cs | 3 +- .../HostApp/AutocadColorBaker.cs | 10 +- .../HostApp/AutocadIdleManager.cs | 27 +- .../HostApp/AutocadInstanceBaker.cs | 14 +- .../HostApp/AutocadMaterialBaker.cs | 8 +- .../Receive/AutocadHostObjectBuilder.cs | 190 ++++---- .../Send/AutocadRootObjectBaseBuilder.cs | 8 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../CefSharpPanel.xaml.cs | 12 +- .../Bindings/BasicConnectorBindingRevit.cs | 40 +- .../Bindings/RevitReceiveBinding.cs | 20 +- .../Bindings/RevitSendBinding.cs | 38 +- .../Receive/RevitContextAccessor.cs | 9 - .../Receive/RevitHostObjectBuilder.cs | 12 +- .../Operations/Send/RevitRootObjectBuilder.cs | 4 +- .../Plugin/RevitIdleManager.cs | 50 +- .../Speckle.Connectors.RevitShared.projitems | 1 - .../packages.lock.json | 22 +- .../packages.lock.json | 22 +- .../Bindings/RhinoBasicConnectorBinding.cs | 24 +- .../Bindings/RhinoReceiveBinding.cs | 20 +- .../Bindings/RhinoSelectionBinding.cs | 5 +- .../Bindings/RhinoSendBinding.cs | 23 +- .../RhinoConnectorModule.cs | 0 .../HostApp/RhinoIdleManager.cs | 25 +- .../HostApp/RhinoInstanceBaker.cs | 11 +- .../HostApp/RhinoLayerBaker.cs | 5 +- .../HostApp/RhinoMaterialBaker.cs | 2 +- .../Receive/RhinoHostObjectBuilder.cs | 22 +- .../Operations/Send/RhinoRootObjectBuilder.cs | 14 +- .../Plugin/RhinoPlugin.cs | 6 +- .../Registration/ServiceRegistration.cs | 3 +- .../Bindings/TeklaBasicConnectorBinding.cs | 4 +- .../packages.lock.json | 20 +- .../packages.lock.json | 302 ++++++++++++ .../Utils/FeatureClassUtils.cs | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 403 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 403 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 445 ++++++++++++++++++ .../packages.lock.json | 22 +- .../packages.lock.json | 344 ++++++++++++++ .../packages.lock.json | 22 +- .../packages.lock.json | 413 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 404 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 403 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 403 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 302 ++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 403 ++++++++++++++++ .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../packages.lock.json | 403 ++++++++++++++++ .../packages.lock.json | 16 +- .../ToHost/Raw/PolyCurveToHostConverter.cs | 2 +- .../Bridge/IdleCallManagerTests.cs | 19 +- .../Bridge/TopLevelExceptionHandlerTests.cs | 24 +- .../packages.lock.json | 20 +- .../DUI3ControlWebView.xaml.cs | 50 +- .../packages.lock.json | 40 +- .../Bindings/IBasicConnectorBinding.cs | 54 +-- .../Bindings/OperationProgressManager.cs | 43 +- .../Bindings/ReceiveBindingUICommands.cs | 24 +- .../Bindings/SendBindingUICommands.cs | 34 +- .../Bindings/TestBinding.cs | 25 +- .../Bridge/AppIdleManager.cs | 33 ++ .../Bridge/BrowserBridge.cs | 58 ++- .../Bridge/IBrowserBridge.cs | 24 +- .../Bridge/IBrowserScriptExecutor.cs | 2 +- .../Bridge/IdleCallManager.cs | 28 +- .../Bridge/SyncToCurrentThread.cs | 17 - .../Bridge/SyncToUIThread.cs | 21 +- .../Bridge/TopLevelExceptionHandler.cs | 94 ++-- .../Speckle.Connectors.DUI/packages.lock.json | 18 +- Directory.Packages.props | 6 +- .../Builders/IHostObjectBuilder.cs | 5 +- .../Builders/IRootObjectBuilder.cs | 2 +- .../Builders/TraversalExtensions.cs | 30 -- .../Instances/IInstanceBaker.cs | 7 +- .../Operations/CardProgress.cs | 3 + .../Operations/ISyncToThread.cs | 2 +- .../Operations/PassthroughProgress.cs | 8 + .../Operations/ReceiveOperation.cs | 42 +- .../Operations/RootObjectSender.cs | 38 +- .../Operations/SendOperation.cs | 2 +- .../packages.lock.json | 14 +- .../packages.lock.json | 18 +- .../Operations/ReceiveOperation.cs | 0 .../packages.lock.json | 16 +- .../packages.lock.json | 14 +- 119 files changed, 5924 insertions(+), 1178 deletions(-) delete mode 100644 Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/SyncToQueuedTask.cs create mode 100644 Connectors/Rhino/Speckle.Connectors.RhinoShared/DependencyInjection/RhinoConnectorModule.cs create mode 100644 Converters/ArcGIS/Speckle.Converters.ArcGIS3.DependencyInjection/packages.lock.json create mode 100644 Converters/Autocad/Speckle.Converters.Autocad2022.DependencyInjection/packages.lock.json create mode 100644 Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json create mode 100644 Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json create mode 100644 Converters/Autocad/Speckle.Converters.Autocad2025.DependencyInjection/packages.lock.json create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json create mode 100644 Converters/Revit/Speckle.Converters.Revit2022.DependencyInjection/packages.lock.json create mode 100644 Converters/Revit/Speckle.Converters.Revit2023.DependencyInjection/packages.lock.json create mode 100644 Converters/Revit/Speckle.Converters.Revit2024.DependencyInjection/packages.lock.json create mode 100644 Converters/Revit/Speckle.Converters.Revit2025.DependencyInjection/packages.lock.json create mode 100644 Converters/Rhino/Speckle.Converters.Rhino7.DependencyInjection/packages.lock.json create mode 100644 Converters/Rhino/Speckle.Converters.Rhino8.DependencyInjection/packages.lock.json create mode 100644 DUI3/Speckle.Connectors.DUI/Bridge/AppIdleManager.cs delete mode 100644 DUI3/Speckle.Connectors.DUI/Bridge/SyncToCurrentThread.cs delete mode 100644 Sdk/Speckle.Connectors.Common/Builders/TraversalExtensions.cs create mode 100644 Sdk/Speckle.Connectors.Common/Operations/CardProgress.cs create mode 100644 Sdk/Speckle.Connectors.Common/Operations/PassthroughProgress.cs create mode 100644 Sdk/Speckle.Connectors.Utils/Operations/ReceiveOperation.cs diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISReceiveBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISReceiveBinding.cs index f31984bc3..ef35bc039 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISReceiveBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISReceiveBinding.cs @@ -76,23 +76,19 @@ public async Task Receive(string modelCardId) .ServiceProvider.GetRequiredService() .Execute( modelCard.GetReceiveInfo("ArcGIS"), // POC: get host app name from settings? same for GetSendInfo - cancellationToken, - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ) + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), + cancellationToken ) .ConfigureAwait(false); modelCard.BakedObjectIds = receiveOperationResults.BakedObjectIds.ToList(); - Commands.SetModelReceiveResult( - modelCardId, - receiveOperationResults.BakedObjectIds, - receiveOperationResults.ConversionResults - ); + await Commands + .SetModelReceiveResult( + modelCardId, + receiveOperationResults.BakedObjectIds, + receiveOperationResults.ConversionResults + ) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -104,7 +100,7 @@ public async Task Receive(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } } diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs index 1f70d7f65..2e72ef14c 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs @@ -89,22 +89,32 @@ IArcGISConversionSettingsFactory arcGisConversionSettingsFactory private void SubscribeToArcGISEvents() { LayersRemovedEvent.Subscribe( - a => _topLevelExceptionHandler.CatchUnhandled(() => GetIdsForLayersRemovedEvent(a)), + a => + _topLevelExceptionHandler.FireAndForget(async () => await GetIdsForLayersRemovedEvent(a).ConfigureAwait(false)), true ); StandaloneTablesRemovedEvent.Subscribe( - a => _topLevelExceptionHandler.CatchUnhandled(() => GetIdsForStandaloneTablesRemovedEvent(a)), + a => + _topLevelExceptionHandler.FireAndForget( + async () => await GetIdsForStandaloneTablesRemovedEvent(a).ConfigureAwait(false) + ), true ); MapPropertyChangedEvent.Subscribe( - a => _topLevelExceptionHandler.CatchUnhandled(() => GetIdsForMapPropertyChangedEvent(a)), + a => + _topLevelExceptionHandler.FireAndForget( + async () => await GetIdsForMapPropertyChangedEvent(a).ConfigureAwait(false) + ), true ); // Map units, CRS etc. MapMemberPropertiesChangedEvent.Subscribe( - a => _topLevelExceptionHandler.CatchUnhandled(() => GetIdsForMapMemberPropertiesChangedEvent(a)), + a => + _topLevelExceptionHandler.FireAndForget( + async () => await GetIdsForMapMemberPropertiesChangedEvent(a).ConfigureAwait(false) + ), true ); // e.g. Layer name @@ -181,28 +191,31 @@ private void SubscribeToAnyDataSourceChange(Table layerTable) { RowCreatedEvent.Subscribe( (args) => - { - OnRowChanged(args); - }, + Parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await OnRowChanged(args).ConfigureAwait(false); + }), layerTable ); RowChangedEvent.Subscribe( (args) => - { - OnRowChanged(args); - }, + Parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await OnRowChanged(args).ConfigureAwait(false); + }), layerTable ); RowDeletedEvent.Subscribe( (args) => - { - OnRowChanged(args); - }, + Parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await OnRowChanged(args).ConfigureAwait(false); + }), layerTable ); } - private void OnRowChanged(RowChangedEventArgs args) + private async Task OnRowChanged(RowChangedEventArgs args) { if (args == null || MapView.Active == null) { @@ -241,25 +254,25 @@ private void OnRowChanged(RowChangedEventArgs args) } } - RunExpirationChecks(false); + await RunExpirationChecks(false).ConfigureAwait(false); } - private void GetIdsForLayersRemovedEvent(LayerEventsArgs args) + private async Task GetIdsForLayersRemovedEvent(LayerEventsArgs args) { foreach (Layer layer in args.Layers) { ChangedObjectIds[layer.URI] = 1; } - RunExpirationChecks(true); + await RunExpirationChecks(true).ConfigureAwait(false); } - private void GetIdsForStandaloneTablesRemovedEvent(StandaloneTableEventArgs args) + private async Task GetIdsForStandaloneTablesRemovedEvent(StandaloneTableEventArgs args) { foreach (StandaloneTable table in args.Tables) { ChangedObjectIds[table.URI] = 1; } - RunExpirationChecks(true); + await RunExpirationChecks(true).ConfigureAwait(false); } private void AddChangedNestedObjectIds(GroupLayer group) @@ -278,7 +291,7 @@ private void AddChangedNestedObjectIds(GroupLayer group) } } - private void GetIdsForMapPropertyChangedEvent(MapPropertyChangedEventArgs args) + private async Task GetIdsForMapPropertyChangedEvent(MapPropertyChangedEventArgs args) { foreach (Map map in args.Maps) { @@ -294,7 +307,7 @@ private void GetIdsForMapPropertyChangedEvent(MapPropertyChangedEventArgs args) } } } - RunExpirationChecks(false); + await RunExpirationChecks(false).ConfigureAwait(false); } private void GetIdsForLayersAddedEvent(LayerEventsArgs args) @@ -316,7 +329,7 @@ private void GetIdsForStandaloneTablesAddedEvent(StandaloneTableEventArgs args) } } - private void GetIdsForMapMemberPropertiesChangedEvent(MapMemberPropertiesChangedEventArgs args) + private async Task GetIdsForMapMemberPropertiesChangedEvent(MapMemberPropertiesChangedEventArgs args) { // don't subscribe to all events (e.g. expanding group, changing visibility etc.) bool validEvent = false; @@ -344,7 +357,7 @@ private void GetIdsForMapMemberPropertiesChangedEvent(MapMemberPropertiesChanged { ChangedObjectIds[member.URI] = 1; } - RunExpirationChecks(false); + await RunExpirationChecks(false).ConfigureAwait(false); } } @@ -417,13 +430,7 @@ public async Task Send(string modelCardId) .Execute( mapMembers, modelCard.GetSendInfo("ArcGIS"), // POC: get host app name from settings? same for GetReceiveInfo - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ), + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), cancellationToken ) .ConfigureAwait(false); @@ -432,7 +439,9 @@ public async Task Send(string modelCardId) }) .ConfigureAwait(false); - Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults); + await Commands + .SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -444,7 +453,7 @@ public async Task Send(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } } @@ -453,7 +462,7 @@ public async Task Send(string modelCardId) /// /// Checks if any sender model cards contain any of the changed objects. If so, also updates the changed objects hashset for each model card - this last part is important for on send change detection. /// - private void RunExpirationChecks(bool idsDeleted) + private async Task RunExpirationChecks(bool idsDeleted) { var senders = _store.GetSenders(); List expiredSenderIds = new(); @@ -479,7 +488,7 @@ private void RunExpirationChecks(bool idsDeleted) } } - Commands.SetModelsExpired(expiredSenderIds); + await Commands.SetModelsExpired(expiredSenderIds).ConfigureAwait(false); ChangedObjectIds = new(); } } diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs index 86e4b1d7c..82804397a 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/BasicConnectorBinding.cs @@ -30,9 +30,10 @@ public BasicConnectorBinding(DocumentModelStore store, IBrowserBridge parent, IS Commands = new BasicConnectorBindingCommands(parent); _store.DocumentChanged += (_, _) => - { - Commands.NotifyDocumentChanged(); - }; + parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await Commands.NotifyDocumentChanged().ConfigureAwait(false); + }); } public string GetSourceApplicationName() => _speckleApplication.Slug; @@ -59,10 +60,10 @@ public BasicConnectorBinding(DocumentModelStore store, IBrowserBridge parent, IS public void RemoveModel(ModelCard model) => _store.RemoveModel(model); - public void HighlightObjects(List objectIds) => - HighlightObjectsOnView(objectIds.Select(x => new ObjectID(x)).ToList()); + public async Task HighlightObjects(IReadOnlyList objectIds) => + await HighlightObjectsOnView(objectIds.Select(x => new ObjectID(x)).ToList()).ConfigureAwait(false); - public void HighlightModel(string modelCardId) + public async Task HighlightModel(string modelCardId) { var model = _store.GetModelById(modelCardId); @@ -87,27 +88,27 @@ public void HighlightModel(string modelCardId) { return; } - HighlightObjectsOnView(objectIds); + await HighlightObjectsOnView(objectIds).ConfigureAwait(false); } - private async void HighlightObjectsOnView(List objectIds) + private async Task HighlightObjectsOnView(IReadOnlyList objectIds) { MapView mapView = MapView.Active; await QueuedTask - .Run(() => + .Run(async () => { List mapMembersFeatures = GetMapMembers(objectIds, mapView); ClearSelectionInTOC(); ClearSelection(); - SelectMapMembersInTOC(mapMembersFeatures); + await SelectMapMembersInTOC(mapMembersFeatures).ConfigureAwait(false); SelectMapMembersAndFeatures(mapMembersFeatures); mapView.ZoomToSelected(); }) .ConfigureAwait(false); } - private List GetMapMembers(List objectIds, MapView mapView) + private List GetMapMembers(IReadOnlyList objectIds, MapView mapView) { // find the layer on the map (from the objectID) and add the featureID is available List mapMembersFeatures = new(); @@ -145,7 +146,7 @@ private void ClearSelectionInTOC() MapView.Active.ClearTOCSelection(); } - private void SelectMapMembersAndFeatures(List mapMembersFeatures) + private void SelectMapMembersAndFeatures(IReadOnlyList mapMembersFeatures) { foreach (MapMemberFeature mapMemberFeat in mapMembersFeatures) { @@ -170,7 +171,7 @@ private void SelectMapMembersAndFeatures(List mapMembersFeatur } } - private void SelectMapMembersInTOC(List mapMembersFeatures) + private async Task SelectMapMembersInTOC(IReadOnlyList mapMembersFeatures) { List layers = new(); List tables = new(); @@ -186,7 +187,7 @@ private void SelectMapMembersInTOC(List mapMembersFeatures) } else { - QueuedTask.Run(() => layer.SetExpanded(true)); + await QueuedTask.Run(() => layer.SetExpanded(true)).ConfigureAwait(false); } } else if (member is StandaloneTable table) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs index 90e112ef4..bfa8db2f5 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs @@ -2,6 +2,7 @@ using ArcGIS.Core.CIM; using ArcGIS.Core.Data; using ArcGIS.Desktop.Mapping; +using Speckle.Connectors.Common.Operations; using Speckle.Converters.ArcGIS3.Utils; using Speckle.Objects; using Speckle.Objects.Other; @@ -55,14 +56,15 @@ public List UnpackColors(List<(MapMember, int)> mapMembersWithDispla /// /// /// - public void ParseColors(List colorProxies, Action? onOperationProgressed) + public async Task ParseColors(List colorProxies, IProgress onOperationProgressed) { // injected as Singleton, so we need to clean existing proxies first ObjectColorsIdMap = new(); var count = 0; foreach (ColorProxy colorProxy in colorProxies) { - onOperationProgressed?.Invoke("Converting colors", (double)++count / colorProxies.Count); + onOperationProgressed.Report(new("Converting colors", (double)++count / colorProxies.Count)); + await Task.Yield(); foreach (string objectId in colorProxy.objects) { Color convertedColor = Color.FromArgb(colorProxy.value); @@ -76,14 +78,18 @@ public void ParseColors(List colorProxies, Action? /// /// /// - public void ParseMaterials(List materialProxies, Action? onOperationProgressed) + public async Task ParseMaterials( + List materialProxies, + IProgress onOperationProgressed + ) { // injected as Singleton, so we need to clean existing proxies first ObjectMaterialsIdMap = new(); var count = 0; foreach (RenderMaterialProxy colorProxy in materialProxies) { - onOperationProgressed?.Invoke("Converting materials", (double)++count / materialProxies.Count); + onOperationProgressed.Report(new("Converting materials", (double)++count / materialProxies.Count)); + await Task.Yield(); foreach (string objectId in colorProxy.objects) { Color convertedColor = Color.FromArgb(colorProxy.value.diffuse); diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/SyncToQueuedTask.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/SyncToQueuedTask.cs deleted file mode 100644 index 946676ee1..000000000 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/SyncToQueuedTask.cs +++ /dev/null @@ -1,9 +0,0 @@ -using ArcGIS.Desktop.Framework.Threading.Tasks; -using Speckle.Connectors.Common.Operations; - -namespace Speckle.Connectors.ArcGIS.HostApp; - -public class SyncToQueuedTask : ISyncToThread -{ - public Task RunOnThread(Func func) => QueuedTask.Run(func); -} diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs index dcd97e4d7..5ddbfc914 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs @@ -62,7 +62,7 @@ public async Task Build( Base rootObject, string projectName, string modelName, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ) { @@ -70,7 +70,7 @@ CancellationToken cancellationToken // ATM, GIS commit CRS is stored per layer (in FeatureClass converter), but should be moved to the Root level too // Prompt the UI conversion started. Progress bar will swoosh. - onOperationProgressed?.Invoke("Converting", null); + onOperationProgressed.Report(new("Converting", null)); // get materials List? materials = (rootObject[ProxyKeys.RENDER_MATERIAL] as List) @@ -78,14 +78,14 @@ CancellationToken cancellationToken .ToList(); if (materials != null) { - _colorManager.ParseMaterials(materials, onOperationProgressed); + await _colorManager.ParseMaterials(materials, onOperationProgressed).ConfigureAwait(false); } // get colors List? colors = (rootObject[ProxyKeys.COLOR] as List)?.Cast().ToList(); if (colors != null) { - _colorManager.ParseColors(colors, onOperationProgressed); + await _colorManager.ParseColors(colors, onOperationProgressed).ConfigureAwait(false); } int count = 0; @@ -125,24 +125,30 @@ obj is GisNonGeometricFeature { results.Add(new(Status.ERROR, obj, null, null, ex)); } - onOperationProgressed?.Invoke("Converting", (double)++count / objectsToConvert.Count); + onOperationProgressed.Report(new("Converting", (double)++count / objectsToConvert.Count)); } // 2.1. Group conversionTrackers (to write into datasets) - onOperationProgressed?.Invoke("Grouping features into layers", null); + onOperationProgressed.Report(new("Grouping features into layers", null)); Dictionary> convertedGroups = await QueuedTask - .Run(() => + .Run(async () => { - return _featureClassUtils.GroupConversionTrackers(conversionTracker, onOperationProgressed); + return await _featureClassUtils + .GroupConversionTrackers(conversionTracker, (s, progres) => onOperationProgressed.Report(new(s, progres))) + .ConfigureAwait(false); }) .ConfigureAwait(false); // 2.2. Write groups of objects to Datasets - onOperationProgressed?.Invoke("Writing to Database", null); + onOperationProgressed.Report(new("Writing to Database", null)); await QueuedTask .Run(() => { - _featureClassUtils.CreateDatasets(conversionTracker, convertedGroups, onOperationProgressed); + _featureClassUtils.CreateDatasets( + conversionTracker, + convertedGroups, + (s, progres) => onOperationProgressed.Report(new(s, progres)) + ); }) .ConfigureAwait(false); @@ -153,7 +159,7 @@ await QueuedTask int bakeCount = 0; Dictionary bakedMapMembers = new(); - onOperationProgressed?.Invoke("Adding to Map", bakeCount); + onOperationProgressed.Report(new("Adding to Map", bakeCount)); foreach (var item in conversionTracker) { @@ -215,7 +221,8 @@ await QueuedTask // add report item AddResultsFromTracker(trackerItem, results); } - onOperationProgressed?.Invoke("Adding to Map", (double)++bakeCount / conversionTracker.Count); + + onOperationProgressed.Report(new("Adding to Map", (double)++bakeCount / conversionTracker.Count)); } // apply renderers to baked layers @@ -295,78 +302,80 @@ private void AddResultsFromTracker(ObjectConversionTracker trackerItem, List AddDatasetsToMap( + private async Task AddDatasetsToMap( ObjectConversionTracker trackerItem, Dictionary createdLayerGroups, string projectName, string modelName ) { - return QueuedTask.Run(() => - { - // get layer details - string? datasetId = trackerItem.DatasetId; // should not be null here - Uri uri = new($"{_settingsStore.Current.SpeckleDatabasePath.AbsolutePath.Replace('/', '\\')}\\{datasetId}"); - string nestedLayerName = trackerItem.NestedLayerName; - - // add group for the current layer - string shortName = nestedLayerName.Split("\\")[^1]; - string nestedLayerPath = string.Join("\\", nestedLayerName.Split("\\").SkipLast(1)); - - // if no general group layer found - if (createdLayerGroups.Count == 0) + return await QueuedTask + .Run(() => { - Map map = _settingsStore.Current.Map; - GroupLayer mainGroupLayer = LayerFactory.Instance.CreateGroupLayer(map, 0, $"{projectName}: {modelName}"); - mainGroupLayer.SetExpanded(true); - createdLayerGroups["Basic Speckle Group"] = mainGroupLayer; // key doesn't really matter here - } + // get layer details + string? datasetId = trackerItem.DatasetId; // should not be null here + Uri uri = new($"{_settingsStore.Current.SpeckleDatabasePath.AbsolutePath.Replace('/', '\\')}\\{datasetId}"); + string nestedLayerName = trackerItem.NestedLayerName; - var groupLayer = CreateNestedGroupLayer(nestedLayerPath, createdLayerGroups); + // add group for the current layer + string shortName = nestedLayerName.Split("\\")[^1]; + string nestedLayerPath = string.Join("\\", nestedLayerName.Split("\\").SkipLast(1)); - // Most of the Speckle-written datasets will be containing geometry and added as Layers - // although, some datasets might be just tables (e.g. native GIS Tables, in the future maybe Revit schedules etc. - // We can create a connection to the dataset in advance and determine its type, but this will be more - // expensive, than assuming by default that it's a layer with geometry (which in most cases it's expected to be) - try - { - var layer = LayerFactory.Instance.CreateLayer(uri, groupLayer, layerName: shortName); - if (layer == null) + // if no general group layer found + if (createdLayerGroups.Count == 0) { - throw new SpeckleException($"Layer '{shortName}' was not created"); + Map map = _settingsStore.Current.Map; + GroupLayer mainGroupLayer = LayerFactory.Instance.CreateGroupLayer(map, 0, $"{projectName}: {modelName}"); + mainGroupLayer.SetExpanded(true); + createdLayerGroups["Basic Speckle Group"] = mainGroupLayer; // key doesn't really matter here } - layer.SetExpanded(false); - // if Scene - // https://community.esri.com/t5/arcgis-pro-sdk-questions/sdk-equivalent-to-changing-layer-s-elevation/td-p/1346139 - if (_settingsStore.Current.Map.IsScene) + var groupLayer = CreateNestedGroupLayer(nestedLayerPath, createdLayerGroups); + + // Most of the Speckle-written datasets will be containing geometry and added as Layers + // although, some datasets might be just tables (e.g. native GIS Tables, in the future maybe Revit schedules etc. + // We can create a connection to the dataset in advance and determine its type, but this will be more + // expensive, than assuming by default that it's a layer with geometry (which in most cases it's expected to be) + try { - var groundSurfaceLayer = _settingsStore.Current.Map.GetGroundElevationSurfaceLayer(); - var layerElevationSurface = new CIMLayerElevationSurface + var layer = LayerFactory.Instance.CreateLayer(uri, groupLayer, layerName: shortName); + if (layer == null) { - ElevationSurfaceLayerURI = groundSurfaceLayer.URI, - }; + throw new SpeckleException($"Layer '{shortName}' was not created"); + } + layer.SetExpanded(false); - // for Feature Layers - if (layer.GetDefinition() is CIMFeatureLayer cimLyr) + // if Scene + // https://community.esri.com/t5/arcgis-pro-sdk-questions/sdk-equivalent-to-changing-layer-s-elevation/td-p/1346139 + if (_settingsStore.Current.Map.IsScene) { - cimLyr.LayerElevation = layerElevationSurface; - layer.SetDefinition(cimLyr); + var groundSurfaceLayer = _settingsStore.Current.Map.GetGroundElevationSurfaceLayer(); + var layerElevationSurface = new CIMLayerElevationSurface + { + ElevationSurfaceLayerURI = groundSurfaceLayer.URI, + }; + + // for Feature Layers + if (layer.GetDefinition() is CIMFeatureLayer cimLyr) + { + cimLyr.LayerElevation = layerElevationSurface; + layer.SetDefinition(cimLyr); + } } - } - return (MapMember)layer; - } - catch (ArgumentException) - { - StandaloneTable table = StandaloneTableFactory.Instance.CreateStandaloneTable( - uri, - groupLayer, - tableName: shortName - ); - return table; - } - }); + return (MapMember)layer; + } + catch (ArgumentException) + { + StandaloneTable table = StandaloneTableFactory.Instance.CreateStandaloneTable( + uri, + groupLayer, + tableName: shortName + ); + return table; + } + }) + .ConfigureAwait(false); } private GroupLayer CreateNestedGroupLayer(string nestedLayerPath, Dictionary createdLayerGroups) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs index 604e3e5f3..7384ae992 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs @@ -57,7 +57,7 @@ public async Task Build( #pragma warning restore CA1506 IReadOnlyList objects, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken ct = default ) { @@ -79,7 +79,7 @@ public async Task Build( objects ); - onOperationProgressed?.Invoke("Converting", null); + onOperationProgressed.Report(new("Converting", null)); using (var __ = _activityFactory.Start("Converting objects")) { foreach ((MapMember mapMember, _) in layersWithDisplayPriority) @@ -183,7 +183,7 @@ mapMember is not GroupLayer } } - onOperationProgressed?.Invoke("Converting", (double)++count / objects.Count); + onOperationProgressed.Report(new("Converting", (double)++count / objects.Count)); } } diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index 28f2a8143..f10da576a 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -244,8 +244,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -253,7 +253,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -310,18 +310,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index cd5530eaa..3a7493dbd 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 0c27ca45e..5f6a88c71 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index 1a271cec7..67aa1d9db 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,18 +347,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 320d005ca..e485efe76 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -311,18 +311,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs index 0381cbac8..bf6a80b4c 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadBasicConnectorBinding.cs @@ -37,10 +37,10 @@ ILogger logger _speckleApplication = speckleApplication; Commands = new BasicConnectorBindingCommands(parent); _store.DocumentChanged += (_, _) => - { - Commands.NotifyDocumentChanged(); - }; - + parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await Commands.NotifyDocumentChanged().ConfigureAwait(false); + }); _logger = logger; } @@ -72,17 +72,17 @@ ILogger logger public void RemoveModel(ModelCard model) => _store.RemoveModel(model); - public void HighlightObjects(List objectIds) + public async Task HighlightObjects(IReadOnlyList objectIds) { // POC: Will be addressed to move it into AutocadContext! var doc = Application.DocumentManager.MdiActiveDocument; var dbObjects = doc.GetObjects(objectIds); var acadObjectIds = dbObjects.Select(tuple => tuple.Root.Id).ToArray(); - HighlightObjectsOnView(acadObjectIds); + await HighlightObjectsOnView(acadObjectIds).ConfigureAwait(false); } - public void HighlightModel(string modelCardId) + public async Task HighlightModel(string modelCardId) { // POC: Will be addressed to move it into AutocadContext! var doc = Application.DocumentManager.MdiActiveDocument; @@ -116,72 +116,78 @@ public void HighlightModel(string modelCardId) if (objectIds.Length == 0) { - Commands.SetModelError(modelCardId, new OperationCanceledException("No objects found to highlight.")); + await Commands + .SetModelError(modelCardId, new OperationCanceledException("No objects found to highlight.")) + .ConfigureAwait(false); return; } - HighlightObjectsOnView(objectIds, modelCardId); + await HighlightObjectsOnView(objectIds, modelCardId).ConfigureAwait(false); } - private void HighlightObjectsOnView(ObjectId[] objectIds, string? modelCardId = null) + private async Task HighlightObjectsOnView(ObjectId[] objectIds, string? modelCardId = null) { var doc = Application.DocumentManager.MdiActiveDocument; - Parent.RunOnMainThread(() => - { - try + await Parent + .RunOnMainThreadAsync(async () => { - doc.Editor.SetImpliedSelection(Array.Empty()); // Deselects try { - doc.Editor.SetImpliedSelection(objectIds); - } - catch (Exception e) when (!e.IsFatal()) - { - // SWALLOW REASON: - // If the objects under the blocks, it won't be able to select them. - // If we try, API will throw the invalid input error, because we request something from API that Autocad doesn't - // handle it on its current canvas. Block elements only selectable when in its scope. - } - doc.Editor.UpdateScreen(); - - Extents3d selectedExtents = new(); - - var tr = doc.TransactionManager.StartTransaction(); - foreach (ObjectId objectId in objectIds) - { + doc.Editor.SetImpliedSelection(Array.Empty()); // Deselects try { - var entity = (Entity?)tr.GetObject(objectId, OpenMode.ForRead); - if (entity?.GeometricExtents != null) - { - selectedExtents.AddExtents(entity.GeometricExtents); - } + doc.Editor.SetImpliedSelection(objectIds); } catch (Exception e) when (!e.IsFatal()) { - // Note: we're swallowing exeptions here because of a weird case when receiving blocks, we would have - // acad api throw an error on accessing entity.GeometricExtents. + // SWALLOW REASON: + // If the objects under the blocks, it won't be able to select them. + // If we try, API will throw the invalid input error, because we request something from API that Autocad doesn't + // handle it on its current canvas. Block elements only selectable when in its scope. } - } + doc.Editor.UpdateScreen(); - doc.Editor.Zoom(selectedExtents); - tr.Commit(); - Autodesk.AutoCAD.Internal.Utils.FlushGraphics(); - } - catch (Exception ex) when (!ex.IsFatal()) - { - if (modelCardId != null) - { - Commands.SetModelError(modelCardId, new OperationCanceledException("Failed to highlight objects.")); + Extents3d selectedExtents = new(); + + var tr = doc.TransactionManager.StartTransaction(); + foreach (ObjectId objectId in objectIds) + { + try + { + var entity = (Entity?)tr.GetObject(objectId, OpenMode.ForRead); + if (entity?.GeometricExtents != null) + { + selectedExtents.AddExtents(entity.GeometricExtents); + } + } + catch (Exception e) when (!e.IsFatal()) + { + // Note: we're swallowing exeptions here because of a weird case when receiving blocks, we would have + // acad api throw an error on accessing entity.GeometricExtents. + } + } + + doc.Editor.Zoom(selectedExtents); + tr.Commit(); + Autodesk.AutoCAD.Internal.Utils.FlushGraphics(); } - else + catch (Exception ex) when (!ex.IsFatal()) { - // This will happen, in some cases, where we highlight individual objects. Should be caught by the top level handler and not - // crash the host app. - throw; + if (modelCardId != null) + { + await Commands + .SetModelError(modelCardId, new OperationCanceledException("Failed to highlight objects.")) + .ConfigureAwait(false); + } + else + { + // This will happen, in some cases, where we highlight individual objects. Should be caught by the top level handler and not + // crash the host app. + throw; + } } - } - }); + }) + .ConfigureAwait(false); } } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadReceiveBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadReceiveBinding.cs index 27d6dd57b..d2d68a7fd 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadReceiveBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadReceiveBinding.cs @@ -79,18 +79,14 @@ public async Task Receive(string modelCardId) .ServiceProvider.GetRequiredService() .Execute( modelCard.GetReceiveInfo(_speckleApplication.Slug), - cancellationToken, - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ) + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), + cancellationToken ) .ConfigureAwait(false); - Commands.SetModelReceiveResult(modelCardId, operationResults.BakedObjectIds, operationResults.ConversionResults); + await Commands + .SetModelReceiveResult(modelCardId, operationResults.BakedObjectIds, operationResults.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -102,7 +98,7 @@ public async Task Receive(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } finally { diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs index 2e7d789c7..0be4d5611 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSelectionBinding.cs @@ -41,7 +41,9 @@ private void TryRegisterDocumentForSelection(Document? document) if (!_visitedDocuments.Contains(document)) { document.ImpliedSelectionChanged += (_, _) => - _topLevelExceptionHandler.CatchUnhandled(() => Parent.RunOnMainThread(OnSelectionChanged)); + _topLevelExceptionHandler.FireAndForget( + async () => await Parent.RunOnMainThreadAsync(OnSelectionChanged).ConfigureAwait(false) + ); _visitedDocuments.Add(document); } @@ -52,10 +54,10 @@ private void TryRegisterDocumentForSelection(Document? document) // Ui requests to GetSelection() should just return this local copy that is kept up to date by the event handler. private SelectionInfo _selectionInfo; - private void OnSelectionChanged() + private async Task OnSelectionChanged() { _selectionInfo = GetSelectionInternal(); - Parent.Send(SELECTION_EVENT, _selectionInfo); + await Parent.Send(SELECTION_EVENT, _selectionInfo).ConfigureAwait(false); } public SelectionInfo GetSelection() => _selectionInfo; diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs index 955d14f57..dda2cca8e 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Bindings/AutocadSendBaseBinding.cs @@ -140,11 +140,10 @@ private void RunExpirationChecks() public List GetSendSettings() => []; - public Task Send(string modelCardId) - { - Parent.RunOnMainThread(async () => await SendInternal(modelCardId).ConfigureAwait(false)); - return Task.CompletedTask; - } + public async Task Send(string modelCardId) => + await Parent + .RunOnMainThreadAsync(async () => await SendInternal(modelCardId).ConfigureAwait(false)) + .ConfigureAwait(false); protected abstract void InitializeSettings(IServiceProvider serviceProvider); @@ -184,18 +183,14 @@ private async Task SendInternal(string modelCardId) .Execute( autocadObjects, modelCard.GetSendInfo(_speckleApplication.Slug), - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ), + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), cancellationToken ) .ConfigureAwait(false); - Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults); + await Commands + .SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -207,7 +202,7 @@ private async Task SendInternal(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } finally { diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs index fedcfa210..865963b20 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/DependencyInjection/SharedRegistration.cs @@ -12,6 +12,7 @@ using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.WebView; @@ -49,7 +50,7 @@ public static void AddAutocadBase(this IServiceCollection serviceCollection) serviceCollection.AddScoped(); serviceCollection.AddScoped(); - serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); // operation progress manager serviceCollection.AddSingleton(); diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadColorBaker.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadColorBaker.cs index c85986493..531ded14e 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadColorBaker.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadColorBaker.cs @@ -1,5 +1,6 @@ using Autodesk.AutoCAD.Colors; using Microsoft.Extensions.Logging; +using Speckle.Connectors.Common.Operations; using Speckle.Sdk; using Speckle.Sdk.Models.Proxies; using AutocadColor = Autodesk.AutoCAD.Colors.Color; @@ -28,14 +29,17 @@ public AutocadColorBaker(ILogger logger) /// /// /// - public void ParseColors(List colorProxies, Action? onOperationProgressed) + public async Task ParseColors( + IReadOnlyCollection colorProxies, + IProgress onOperationProgressed + ) { var count = 0; foreach (ColorProxy colorProxy in colorProxies) { try { - onOperationProgressed?.Invoke("Converting colors", (double)++count / colorProxies.Count); + onOperationProgressed.Report(new("Converting colors", (double)++count / colorProxies.Count)); // skip any colors with source = layer, since object color default source is by layer if (colorProxy["source"] is string source && source == "layer") @@ -60,6 +64,8 @@ public void ParseColors(List colorProxies, Action? { _logger.LogError(ex, "Failed parsing color proxy"); } + + await Task.Yield(); } } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs index d745e36bc..10ebddb6f 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadIdleManager.cs @@ -3,23 +3,20 @@ namespace Speckle.Connectors.Autocad.HostApp; +public partial interface IAutocadIdleManager : IAppIdleManager; + [GenerateAutoInterface] -public class AutocadIdleManager(IIdleCallManager idleCallManager) : IAutocadIdleManager +public sealed class AutocadIdleManager(IIdleCallManager idleCallManager) + : AppIdleManager(idleCallManager), + IAutocadIdleManager { - /// - /// Subscribe deferred action to AutocadIdle event to run it whenever Autocad become idle. - /// - /// Action to call whenever Autocad become Idle. - public void SubscribeToIdle(string id, Action action) => - idleCallManager.SubscribeToIdle( - id, - action, - () => - { - Application.Idle += AutocadAppOnIdle; - } - ); + private readonly IIdleCallManager _idleCallManager = idleCallManager; + + protected override void AddEvent() + { + Application.Idle += AutocadAppOnIdle; + } private void AutocadAppOnIdle(object? sender, EventArgs e) => - idleCallManager.AppOnIdle(() => Application.Idle -= AutocadAppOnIdle); + _idleCallManager.AppOnIdle(() => Application.Idle -= AutocadAppOnIdle); } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadInstanceBaker.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadInstanceBaker.cs index 080535164..35d44abe0 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadInstanceBaker.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadInstanceBaker.cs @@ -1,14 +1,17 @@ +using System.Diagnostics.CodeAnalysis; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Microsoft.Extensions.Logging; using Speckle.Connectors.Autocad.HostApp.Extensions; using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Instances; +using Speckle.Connectors.Common.Operations; using Speckle.Converters.Autocad; using Speckle.Converters.Common; using Speckle.DoubleNumerics; using Speckle.Sdk; using Speckle.Sdk.Common; +using Speckle.Sdk.Common.Exceptions; using Speckle.Sdk.Models; using Speckle.Sdk.Models.Collections; using Speckle.Sdk.Models.Instances; @@ -45,11 +48,12 @@ IConverterSettingsStore converterSettings _converterSettings = converterSettings; } - public BakeResult BakeInstances( - List<(Collection[] collectionPath, IInstanceComponent obj)> instanceComponents, + [SuppressMessage("Maintainability", "CA1506:Avoid excessive class coupling")] + public async Task BakeInstances( + IReadOnlyCollection<(Collection[] collectionPath, IInstanceComponent obj)> instanceComponents, Dictionary> applicationIdMap, string baseLayerName, - Action? onOperationProgressed + IProgress onOperationProgressed ) { var sortedInstanceComponents = instanceComponents @@ -69,7 +73,8 @@ public BakeResult BakeInstances( { try { - onOperationProgressed?.Invoke("Converting blocks", (double)++count / sortedInstanceComponents.Count); + onOperationProgressed.Report(new("Converting blocks", (double)++count / sortedInstanceComponents.Count)); + if (instanceOrDefinition is InstanceDefinitionProxy { applicationId: not null } definitionProxy) { // TODO: create definition (block table record) @@ -162,6 +167,7 @@ instanceOrDefinition is InstanceProxy instanceProxy } transaction.Commit(); + await Task.Yield(); return new(createdObjectIds, consumedObjectIds, conversionResults); } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadMaterialBaker.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadMaterialBaker.cs index 086ae3a1c..4aea349fb 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadMaterialBaker.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/HostApp/AutocadMaterialBaker.cs @@ -3,6 +3,7 @@ using Autodesk.AutoCAD.GraphicsInterface; using Microsoft.Extensions.Logging; using Speckle.Connectors.Common.Conversion; +using Speckle.Connectors.Common.Operations; using Speckle.Objects.Other; using Speckle.Sdk; using Speckle.Sdk.Models; @@ -90,10 +91,10 @@ public void PurgeMaterials(string namePrefix) transaction.Commit(); } - public void ParseAndBakeRenderMaterials( + public async Task ParseAndBakeRenderMaterials( List materialProxies, string baseLayerPrefix, - Action? onOperationProgressed + IProgress onOperationProgressed ) { using var transaction = Application.DocumentManager.CurrentDocument.Database.TransactionManager.StartTransaction(); @@ -109,7 +110,7 @@ public void ParseAndBakeRenderMaterials( var count = 0; foreach (RenderMaterialProxy materialProxy in materialProxies) { - onOperationProgressed?.Invoke("Converting render materials", (double)++count / materialProxies.Count); + onOperationProgressed.Report(new("Converting render materials", (double)++count / materialProxies.Count)); // bake render material RenderMaterial renderMaterial = materialProxy.value; @@ -139,6 +140,7 @@ public void ParseAndBakeRenderMaterials( } transaction.Commit(); + await Task.Yield(); } private (ObjectId, ReceiveConversionResult) BakeMaterial( diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Receive/AutocadHostObjectBuilder.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Receive/AutocadHostObjectBuilder.cs index 6b3b1129d..c9bdc4ee9 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Receive/AutocadHostObjectBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Receive/AutocadHostObjectBuilder.cs @@ -52,118 +52,127 @@ RootObjectUnpacker rootObjectUnpacker _rootObjectUnpacker = rootObjectUnpacker; } - public Task Build( + public async Task Build( Base rootObject, string projectName, string modelName, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken _ - ) => + ) + { // NOTE: This is the only place we apply ISyncToThread across connectors. We need to sync up with main thread here // after GetObject and Deserialization. It is anti-pattern now. Happiness level 3/10 but works. - _syncToThread.RunOnThread(() => - { - // Prompt the UI conversion started. Progress bar will swoosh. - onOperationProgressed?.Invoke("Converting", null); + return await _syncToThread + .RunOnThread( + async () => await BuildImpl(rootObject, projectName, modelName, onOperationProgressed).ConfigureAwait(false) + ) + .ConfigureAwait(false); + } + + private async Task BuildImpl( + Base rootObject, + string projectName, + string modelName, + IProgress onOperationProgressed + ) + { + // Prompt the UI conversion started. Progress bar will swoosh. + onOperationProgressed.Report(new("Converting", null)); + + // Layer filter for received commit with project and model name + _layerBaker.CreateLayerFilter(projectName, modelName); - // Layer filter for received commit with project and model name - _layerBaker.CreateLayerFilter(projectName, modelName); + // 0 - Clean then Rock n Roll! + string baseLayerPrefix = _autocadContext.RemoveInvalidChars($"SPK-{projectName}-{modelName}-"); + PreReceiveDeepClean(baseLayerPrefix); - // 0 - Clean then Rock n Roll! - string baseLayerPrefix = _autocadContext.RemoveInvalidChars($"SPK-{projectName}-{modelName}-"); - PreReceiveDeepClean(baseLayerPrefix); + // 1 - Unpack objects and proxies from root commit object + var unpackedRoot = _rootObjectUnpacker.Unpack(rootObject); - // 1 - Unpack objects and proxies from root commit object - var unpackedRoot = _rootObjectUnpacker.Unpack(rootObject); + // 2 - Split atomic objects and instance components with their path + var (atomicObjects, instanceComponents) = _rootObjectUnpacker.SplitAtomicObjectsAndInstances( + unpackedRoot.ObjectsToConvert + ); + var atomicObjectsWithPath = _layerBaker.GetAtomicObjectsWithPath(atomicObjects); + var instanceComponentsWithPath = _layerBaker.GetInstanceComponentsWithPath(instanceComponents); - // 2 - Split atomic objects and instance components with their path - var (atomicObjects, instanceComponents) = _rootObjectUnpacker.SplitAtomicObjectsAndInstances( - unpackedRoot.ObjectsToConvert + // POC: these are not captured by traversal, so we need to re-add them here + if (unpackedRoot.DefinitionProxies != null && unpackedRoot.DefinitionProxies.Count > 0) + { + var transformed = unpackedRoot.DefinitionProxies.Select(proxy => + (Array.Empty(), proxy as IInstanceComponent) ); - var atomicObjectsWithPath = _layerBaker.GetAtomicObjectsWithPath(atomicObjects); - var instanceComponentsWithPath = _layerBaker.GetInstanceComponentsWithPath(instanceComponents); + instanceComponentsWithPath.AddRange(transformed); + } - // POC: these are not captured by traversal, so we need to re-add them here - if (unpackedRoot.DefinitionProxies != null && unpackedRoot.DefinitionProxies.Count > 0) - { - var transformed = unpackedRoot.DefinitionProxies.Select(proxy => - (Array.Empty(), proxy as IInstanceComponent) - ); - instanceComponentsWithPath.AddRange(transformed); - } + // 3 - Bake materials and colors, as they are used later down the line by layers and objects + if (unpackedRoot.RenderMaterialProxies != null) + { + await _materialBaker + .ParseAndBakeRenderMaterials(unpackedRoot.RenderMaterialProxies, baseLayerPrefix, onOperationProgressed) + .ConfigureAwait(true); + } - // 3 - Bake materials and colors, as they are used later down the line by layers and objects - if (unpackedRoot.RenderMaterialProxies != null) + if (unpackedRoot.ColorProxies != null) + { + await _colorBaker.ParseColors(unpackedRoot.ColorProxies, onOperationProgressed).ConfigureAwait(true); + } + + // 5 - Convert atomic objects + List results = new(); + List bakedObjectIds = new(); + Dictionary> applicationIdMap = new(); + var count = 0; + foreach (var (layerPath, atomicObject) in atomicObjectsWithPath) + { + string objectId = atomicObject.applicationId ?? atomicObject.id; + onOperationProgressed.Report(new("Converting objects", (double)++count / atomicObjects.Count)); + try { - _materialBaker.ParseAndBakeRenderMaterials( - unpackedRoot.RenderMaterialProxies, - baseLayerPrefix, - onOperationProgressed + List convertedObjects = await ConvertObject(atomicObject, layerPath, baseLayerPrefix) + .ConfigureAwait(true); + + applicationIdMap[objectId] = convertedObjects; + + results.AddRange( + convertedObjects.Select(e => new ReceiveConversionResult( + Status.SUCCESS, + atomicObject, + e.GetSpeckleApplicationId(), + e.GetType().ToString() + )) ); - } - if (unpackedRoot.ColorProxies != null) - { - _colorBaker.ParseColors(unpackedRoot.ColorProxies, onOperationProgressed); + bakedObjectIds.AddRange(convertedObjects.Select(e => e.GetSpeckleApplicationId())); } - - // 5 - Convert atomic objects - List results = new(); - List bakedObjectIds = new(); - Dictionary> applicationIdMap = new(); - var count = 0; - foreach (var (layerPath, atomicObject) in atomicObjectsWithPath) + catch (Exception ex) when (!ex.IsFatal()) { - string objectId = atomicObject.applicationId ?? atomicObject.id; - onOperationProgressed?.Invoke("Converting objects", (double)++count / atomicObjects.Count); - try - { - List convertedObjects = ConvertObject(atomicObject, layerPath, baseLayerPrefix).ToList(); - - applicationIdMap[objectId] = convertedObjects; - - results.AddRange( - convertedObjects.Select(e => new ReceiveConversionResult( - Status.SUCCESS, - atomicObject, - e.GetSpeckleApplicationId(), - e.GetType().ToString() - )) - ); - - bakedObjectIds.AddRange(convertedObjects.Select(e => e.GetSpeckleApplicationId())); - } - catch (Exception ex) when (!ex.IsFatal()) - { - results.Add(new(Status.ERROR, atomicObject, null, null, ex)); - } + results.Add(new(Status.ERROR, atomicObject, null, null, ex)); } + } - // 6 - Convert instances - var (createdInstanceIds, consumedObjectIds, instanceConversionResults) = _instanceBaker.BakeInstances( - instanceComponentsWithPath, - applicationIdMap, - baseLayerPrefix, - onOperationProgressed - ); + // 6 - Convert instances + var (createdInstanceIds, consumedObjectIds, instanceConversionResults) = await _instanceBaker + .BakeInstances(instanceComponentsWithPath, applicationIdMap, baseLayerPrefix, onOperationProgressed) + .ConfigureAwait(true); - bakedObjectIds.RemoveAll(id => consumedObjectIds.Contains(id)); - bakedObjectIds.AddRange(createdInstanceIds); - results.RemoveAll(result => result.ResultId != null && consumedObjectIds.Contains(result.ResultId)); - results.AddRange(instanceConversionResults); + bakedObjectIds.RemoveAll(id => consumedObjectIds.Contains(id)); + bakedObjectIds.AddRange(createdInstanceIds); + results.RemoveAll(result => result.ResultId != null && consumedObjectIds.Contains(result.ResultId)); + results.AddRange(instanceConversionResults); - // 7 - Create groups - if (unpackedRoot.GroupProxies != null) - { - List groupResults = _groupBaker.CreateGroups( - unpackedRoot.GroupProxies, - applicationIdMap - ); - results.AddRange(groupResults); - } + // 7 - Create groups + if (unpackedRoot.GroupProxies != null) + { + List groupResults = _groupBaker.CreateGroups( + unpackedRoot.GroupProxies, + applicationIdMap + ); + results.AddRange(groupResults); + } - return new HostObjectBuilderResult(bakedObjectIds, results); - }); + return new HostObjectBuilderResult(bakedObjectIds, results); + } private void PreReceiveDeepClean(string baseLayerPrefix) { @@ -172,7 +181,7 @@ private void PreReceiveDeepClean(string baseLayerPrefix) _materialBaker.PurgeMaterials(baseLayerPrefix); } - private IEnumerable ConvertObject(Base obj, Collection[] layerPath, string baseLayerNamePrefix) + private async Task> ConvertObject(Base obj, Collection[] layerPath, string baseLayerNamePrefix) { string layerName = _layerBaker.CreateLayerForReceive(layerPath, baseLayerNamePrefix); var convertedEntities = new List(); @@ -195,6 +204,7 @@ private IEnumerable ConvertObject(Base obj, Collection[] layerPath, stri } tr.Commit(); + await Task.Delay(10).ConfigureAwait(true); return convertedEntities; } diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs index 589cd11d3..2973b50b2 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs @@ -52,7 +52,7 @@ ISdkActivityFactory activityFactory public Task Build( IReadOnlyList objects, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken ct = default ) => Task.FromResult(BuildSync(objects, sendInfo, onOperationProgressed, ct)); @@ -68,8 +68,8 @@ proxy classes yet. So I'm supressing this one now!!! private RootObjectBuilderResult BuildSync( IReadOnlyList objects, SendInfo sendInfo, - Action? onOperationProgressed, - CancellationToken ct + IProgress onOperationProgressed, + CancellationToken ct = default ) { // 0 - Init the root @@ -122,7 +122,7 @@ CancellationToken ct ); results.Add(result); - onOperationProgressed?.Invoke("Converting", (double)++count / atomicObjects.Count); + onOperationProgressed.Report(new("Converting", (double)++count / atomicObjects.Count)); } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index e76199417..691417e09 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -318,7 +318,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -356,18 +356,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 5cfdef1f4..b8308f14f 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.converters.revit2022": { @@ -361,11 +361,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Revit.API": { @@ -376,9 +376,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index c147d7c09..87711270e 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.converters.revit2023": { @@ -361,11 +361,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Revit.API": { @@ -376,9 +376,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index cf6831c4b..091755b2f 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.converters.revit2024": { @@ -361,11 +361,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Revit.API": { @@ -376,9 +376,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 5a8195d5c..5553a5172 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -287,7 +287,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.converters.revit2025": { @@ -332,11 +332,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Revit.API": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared.Cef/CefSharpPanel.xaml.cs b/Connectors/Revit/Speckle.Connectors.RevitShared.Cef/CefSharpPanel.xaml.cs index 9679ffd2a..ae78681ed 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared.Cef/CefSharpPanel.xaml.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared.Cef/CefSharpPanel.xaml.cs @@ -13,8 +13,16 @@ public CefSharpPanel() InitializeComponent(); } - public void ExecuteScriptAsyncMethod(string script) => - Browser.Dispatcher.Invoke(() => Browser.ExecuteScriptAsync(script), DispatcherPriority.Background); + public Task ExecuteScriptAsyncMethod(string script, CancellationToken cancellationToken) + { + Browser.Dispatcher.Invoke( + () => Browser.ExecuteScriptAsync(script), + DispatcherPriority.Background, + cancellationToken + ); + + return Task.CompletedTask; + } public bool IsBrowserInitialized => Browser.IsBrowserInitialized; public object BrowserElement => Browser; diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs index 7fe9a1e82..98b5ab4d8 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/BasicConnectorBindingRevit.cs @@ -42,9 +42,10 @@ ILogger logger // POC: event binding? _store.DocumentChanged += (_, _) => - { - Commands.NotifyDocumentChanged(); - }; + parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await Commands.NotifyDocumentChanged().ConfigureAwait(false); + }); } public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; @@ -82,7 +83,7 @@ ILogger logger public void RemoveModel(ModelCard model) => _store.RemoveModel(model); - public void HighlightModel(string modelCardId) + public async Task HighlightModel(string modelCardId) { var model = _store.GetModelById(modelCardId); @@ -117,29 +118,33 @@ public void HighlightModel(string modelCardId) if (elementIds.Count == 0) { - Commands.SetModelError(modelCardId, new InvalidOperationException("No objects found to highlight.")); + await Commands + .SetModelError(modelCardId, new InvalidOperationException("No objects found to highlight.")) + .ConfigureAwait(false); return; } - HighlightObjectsOnView(elementIds); + await HighlightObjectsOnView(elementIds).ConfigureAwait(false); } /// /// Highlights the objects from the given ids. /// /// UniqueId's of the DB.Elements. - public void HighlightObjects(List objectIds) + public async Task HighlightObjects(IReadOnlyList objectIds) { var activeUIDoc = _revitContext.UIApplication?.ActiveUIDocument ?? throw new SpeckleException("Unable to retrieve active UI document"); - HighlightObjectsOnView( - objectIds.Select(uid => ElementIdHelper.GetElementIdFromUniqueId(activeUIDoc.Document, uid)).ToList() - ); + await HighlightObjectsOnView( + objectIds.Select(uid => ElementIdHelper.GetElementIdFromUniqueId(activeUIDoc.Document, uid)).ToList() + ) + .ConfigureAwait(false); + ; } - private void HighlightObjectsOnView(List objectIds) + private async Task HighlightObjectsOnView(List objectIds) { // POC: don't know if we can rely on storing the ActiveUIDocument, hence getting it each time var activeUIDoc = @@ -147,10 +152,13 @@ private void HighlightObjectsOnView(List objectIds) ?? throw new SpeckleException("Unable to retrieve active UI document"); // UiDocument operations should be wrapped into RevitTask, otherwise doesn't work on other tasks. - RevitTask.RunAsync(() => - { - activeUIDoc.Selection.SetElementIds(objectIds); - activeUIDoc.ShowElements(objectIds); - }); + await RevitTask + .RunAsync(() => + { + activeUIDoc.Selection.SetElementIds(objectIds); + activeUIDoc.ShowElements(objectIds); + }) + .ConfigureAwait(false); + ; } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitReceiveBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitReceiveBinding.cs index 51e9fdec2..27bb4868a 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitReceiveBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitReceiveBinding.cs @@ -81,23 +81,15 @@ public async Task Receive(string modelCardId) .ServiceProvider.GetRequiredService() .Execute( modelCard.GetReceiveInfo(_speckleApplication.Slug), - cancellationToken, - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ) + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), + cancellationToken ) .ConfigureAwait(false); modelCard.BakedObjectIds = conversionResults.BakedObjectIds.ToList(); - Commands.SetModelReceiveResult( - modelCardId, - conversionResults.BakedObjectIds, - conversionResults.ConversionResults - ); + await Commands + .SetModelReceiveResult(modelCardId, conversionResults.BakedObjectIds, conversionResults.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -108,7 +100,7 @@ public async Task Receive(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs index 2dab7cd4b..df3d88257 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Bindings/RevitSendBinding.cs @@ -82,7 +82,8 @@ ISpeckleApplication speckleApplication revitContext.UIApplication.NotNull().Application.DocumentChanged += (_, e) => topLevelExceptionHandler.CatchUnhandled(() => DocChangeHandler(e)); }); - Store.DocumentChanged += (_, _) => topLevelExceptionHandler.CatchUnhandled(OnDocumentChanged); + Store.DocumentChanged += (_, _) => + topLevelExceptionHandler.FireAndForget(async () => await OnDocumentChanged().ConfigureAwait(false)); } public List GetSendFilters() @@ -101,10 +102,7 @@ public List GetSendSettings() => public SendBindingUICommands Commands { get; } - // yes we know Send function calls many different namespace, we know. But currently I don't see any simplification area we can work on! -#pragma warning disable CA1506 public async Task Send(string modelCardId) -#pragma warning restore CA1506 { // Note: removed top level handling thing as it was confusing me try @@ -148,18 +146,14 @@ public async Task Send(string modelCardId) .Execute( revitObjects, modelCard.GetSendInfo(_speckleApplication.Slug), - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ), + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), cancellationToken ) .ConfigureAwait(false); - Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults); + await Commands + .SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -170,7 +164,7 @@ public async Task Send(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } } @@ -243,7 +237,7 @@ private bool HaveUnitsChanged(Document doc) return false; } - private void RunExpirationChecks() + private async Task RunExpirationChecks() { var senders = Store.GetSenders(); string[] objectIdsList = ChangedObjectIds.Keys.ToArray(); @@ -275,22 +269,24 @@ private void RunExpirationChecks() } } - Commands.SetModelsExpired(expiredSenderIds); + await Commands.SetModelsExpired(expiredSenderIds).ConfigureAwait(false); ChangedObjectIds = new(); } // POC: Will be re-addressed later with better UX with host apps that are friendly on async doc operations. // That's why don't bother for now how to get rid of from dup logic in other bindings. - private void OnDocumentChanged() + private async Task OnDocumentChanged() { if (_cancellationManager.NumberOfOperations > 0) { _cancellationManager.CancelAllOperations(); - Commands.SetGlobalNotification( - ToastNotificationType.INFO, - "Document Switch", - "Operations cancelled because of document swap!" - ); + await Commands + .SetGlobalNotification( + ToastNotificationType.INFO, + "Document Switch", + "Operations cancelled because of document swap!" + ) + .ConfigureAwait(false); } } } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitContextAccessor.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitContextAccessor.cs index 297587790..e69de29bb 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitContextAccessor.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitContextAccessor.cs @@ -1,9 +0,0 @@ -using Revit.Async; -using Speckle.Connectors.Common.Operations; - -namespace Speckle.Connectors.Revit.Operations.Receive; - -internal sealed class RevitContextAccessor : ISyncToThread -{ - public Task RunOnThread(Func func) => RevitTask.RunAsync(func); -} diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index b270b084e..0739c295b 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -4,6 +4,7 @@ using Speckle.Connectors.Common.Builders; using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Instances; +using Speckle.Connectors.Common.Operations; using Speckle.Connectors.Common.Operations.Receive; using Speckle.Connectors.Revit.HostApp; using Speckle.Converters.Common; @@ -61,7 +62,7 @@ public Task Build( Base rootObject, string projectName, string modelName, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ) => RevitTask.RunAsync(() => BuildSync(rootObject, projectName, modelName, onOperationProgressed, cancellationToken)); @@ -70,13 +71,13 @@ private HostObjectBuilderResult BuildSync( Base rootObject, string projectName, string modelName, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ) { var baseGroupName = $"Project {projectName}: Model {modelName}"; // TODO: unify this across connectors! - onOperationProgressed?.Invoke("Converting", null); + onOperationProgressed.Report(new("Converting", null)); using var activity = _activityFactory.Start("Build"); // 0 - Clean then Rock n Roll! 🎸 @@ -156,7 +157,7 @@ CancellationToken cancellationToken private HostObjectBuilderResult BakeObjects( List localToGlobalMaps, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ) { @@ -176,7 +177,7 @@ CancellationToken cancellationToken localToGlobalMap.Matrix ); var result = _converter.Convert(atomicObject); - onOperationProgressed?.Invoke("Converting", (double)++count / localToGlobalMaps.Count); + onOperationProgressed.Report(new("Converting", (double)++count / localToGlobalMaps.Count)); // Note: our current converter always returns a DS for now if (result is DirectShape ds) @@ -195,6 +196,7 @@ CancellationToken cancellationToken conversionResults.Add(new(Status.ERROR, localToGlobalMap.AtomicObject, null, null, ex)); } } + return new(bakedObjectIds, conversionResults); } diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs index 24d5a9639..0cb8b15aa 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Send/RevitRootObjectBuilder.cs @@ -54,7 +54,7 @@ RevitToSpeckleCacheSingleton revitToSpeckleCacheSingleton public async Task Build( IReadOnlyList objects, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken ct = default ) { @@ -125,7 +125,7 @@ public async Task Build( results.Add(new(Status.ERROR, applicationId, sourceType, null, ex)); } - onOperationProgressed?.Invoke("Converting", (double)++countProgress / atomicObjects.Count); + onOperationProgressed.Report(new("Converting", (double)++countProgress / atomicObjects.Count)); } if (results.All(x => x.Status == Status.ERROR)) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitIdleManager.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitIdleManager.cs index b4531ddf4..db20cfce0 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitIdleManager.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Plugin/RevitIdleManager.cs @@ -2,43 +2,41 @@ using Autodesk.Revit.UI.Events; using Speckle.Connectors.DUI.Bridge; using Speckle.Converters.RevitShared.Helpers; -using Speckle.InterfaceGenerator; -using Speckle.Sdk; using Speckle.Sdk.Common; namespace Speckle.Connectors.Revit.Plugin; -[GenerateAutoInterface] -public sealed class RevitIdleManager(RevitContext revitContext, IIdleCallManager idleCallManager) : IRevitIdleManager +public interface IRevitIdleManager : IAppIdleManager +{ + public void RunAsync(Action action); +} + +public sealed class RevitIdleManager( + RevitContext revitContext, + IIdleCallManager idleCallManager, + ITopLevelExceptionHandler topLevelExceptionHandler +) : AppIdleManager(idleCallManager), IRevitIdleManager { private readonly UIApplication _uiApplication = revitContext.UIApplication.NotNull(); + private readonly IIdleCallManager _idleCallManager = idleCallManager; - /// - /// Subscribe deferred action to Idling event to run it whenever Revit becomes idle. - /// - /// Action to call whenever Revit becomes Idle. - /// some events in host app are trigerred many times, we might get 10x per object - /// Making this more like a deferred action, so we don't update the UI many times - public void SubscribeToIdle(string id, Action action) => - idleCallManager.SubscribeToIdle( - id, - action, - () => + protected override void AddEvent() + { + topLevelExceptionHandler.CatchUnhandled(() => + { + try { - try - { - _uiApplication.Idling += RevitAppOnIdle; - } - catch (Exception e) when (!e.IsFatal()) - { - // TODO: wrap this guy in the top level exception handler (?) - // This happens very rarely, see previous report [CNX-125: Autodesk.Revit.Exceptions.InvalidOperationException: Can not subscribe to an event during execution of that event!](https://linear.app/speckle/issue/CNX-125/autodeskrevitexceptionsinvalidoperationexception-can-not-subscribe-to) - } + _uiApplication.Idling += RevitAppOnIdle; } - ); + catch (Autodesk.Revit.Exceptions.InvalidOperationException) + { + // This happens very rarely, see previous report [CNX-125: Autodesk.Revit.Exceptions.InvalidOperationException: Can not subscribe to an event during execution of that event!](https://linear.app/speckle/issue/CNX-125/autodeskrevitexceptionsinvalidoperationexception-can-not-subscribe-to) + } + }); + } private void RevitAppOnIdle(object? sender, IdlingEventArgs e) => - idleCallManager.AppOnIdle(() => _uiApplication.Idling -= RevitAppOnIdle); + _idleCallManager.AppOnIdle(() => _uiApplication.Idling -= RevitAppOnIdle); public void RunAsync(Action action) { diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems b/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems index e4e01eb32..4b450c7a1 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Speckle.Connectors.RevitShared.projitems @@ -33,7 +33,6 @@ - diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 0aa5dce3f..0f0f0b253 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,7 +310,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.converters.rhino7": { @@ -355,18 +355,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index 154d7bf1d..2fc49a5cd 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,7 +310,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.converters.rhino8": { @@ -355,18 +355,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs index 32596d9cc..16d28833c 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoBasicConnectorBinding.cs @@ -11,7 +11,7 @@ namespace Speckle.Connectors.Rhino.Bindings; -public class RhinoBasicConnectorBinding : IBasicConnectorBinding +public sealed class RhinoBasicConnectorBinding : IBasicConnectorBinding { public string Name => "baseBinding"; public IBrowserBridge Parent { get; } @@ -32,9 +32,10 @@ ISpeckleApplication speckleApplication Commands = new BasicConnectorBindingCommands(parent); _store.DocumentChanged += (_, _) => - { - Commands.NotifyDocumentChanged(); - }; + parent.TopLevelExceptionHandler.FireAndForget(async () => + { + await Commands.NotifyDocumentChanged().ConfigureAwait(false); + }); } public string GetConnectorVersion() => _speckleApplication.SpeckleVersion; @@ -60,7 +61,7 @@ ISpeckleApplication speckleApplication public void RemoveModel(ModelCard model) => _store.RemoveModel(model); - public void HighlightObjects(List objectIds) + public Task HighlightObjects(IReadOnlyList objectIds) { var objects = GetObjectsFromIds(objectIds); @@ -73,9 +74,10 @@ public void HighlightObjects(List objectIds) } HighlightObjectsOnView(objects.rhinoObjects, objects.groups); + return Task.CompletedTask; } - public void HighlightModel(string modelCardId) + public async Task HighlightModel(string modelCardId) { var objectIds = new List(); var myModel = _store.GetModelById(modelCardId); @@ -92,7 +94,9 @@ public void HighlightModel(string modelCardId) if (objectIds.Count == 0) { - Commands.SetModelError(modelCardId, new OperationCanceledException("No objects found to highlight.")); + await Commands + .SetModelError(modelCardId, new OperationCanceledException("No objects found to highlight.")) + .ConfigureAwait(false); return; } @@ -102,14 +106,16 @@ public void HighlightModel(string modelCardId) if (objects.rhinoObjects.Count == 0 && objects.groups.Count == 0) { - Commands.SetModelError(modelCardId, new OperationCanceledException("No objects found to highlight.")); + await Commands + .SetModelError(modelCardId, new OperationCanceledException("No objects found to highlight.")) + .ConfigureAwait(false); return; } HighlightObjectsOnView(objects.rhinoObjects, objects.groups); } - private (List rhinoObjects, List groups) GetObjectsFromIds(List objectIds) + private (List rhinoObjects, List groups) GetObjectsFromIds(IReadOnlyList objectIds) { List rhinoObjects = objectIds .Select((id) => RhinoDoc.ActiveDoc.Objects.FindId(new Guid(id))) diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs index a5b1e0e2a..dcf60ab73 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoReceiveBinding.cs @@ -75,23 +75,15 @@ public async Task Receive(string modelCardId) .ServiceProvider.GetRequiredService() .Execute( modelCard.GetReceiveInfo(_speckleApplication.Slug), - cancellationToken, - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ) + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), + cancellationToken ) .ConfigureAwait(false); modelCard.BakedObjectIds = conversionResults.BakedObjectIds.ToList(); - Commands.SetModelReceiveResult( - modelCardId, - conversionResults.BakedObjectIds, - conversionResults.ConversionResults - ); + await Commands + .SetModelReceiveResult(modelCardId, conversionResults.BakedObjectIds, conversionResults.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -103,7 +95,7 @@ public async Task Receive(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs index f5fc16c08..d2679b8b3 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSelectionBinding.cs @@ -2,19 +2,18 @@ using Rhino.DocObjects; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; -using Speckle.Connectors.Rhino.HostApp; namespace Speckle.Connectors.Rhino.Bindings; public class RhinoSelectionBinding : ISelectionBinding { - private readonly IRhinoIdleManager _idleManager; + private readonly IAppIdleManager _idleManager; private const string SELECTION_EVENT = "setSelection"; public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } - public RhinoSelectionBinding(IRhinoIdleManager idleManager, IBrowserBridge parent) + public RhinoSelectionBinding(IAppIdleManager idleManager, IBrowserBridge parent) { _idleManager = idleManager; Parent = parent; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index d7912654a..f225e2924 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -15,7 +15,6 @@ 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.Converters.Common; using Speckle.Converters.Rhino; using Speckle.Sdk; @@ -30,7 +29,7 @@ public sealed class RhinoSendBinding : ISendBinding public IBrowserBridge Parent { get; } private readonly DocumentModelStore _store; - private readonly IRhinoIdleManager _idleManager; + private readonly IAppIdleManager _idleManager; private readonly IServiceProvider _serviceProvider; private readonly List _sendFilters; private readonly CancellationManager _cancellationManager; @@ -51,7 +50,7 @@ public sealed class RhinoSendBinding : ISendBinding public RhinoSendBinding( DocumentModelStore store, - IRhinoIdleManager idleManager, + IAppIdleManager idleManager, IBrowserBridge parent, IEnumerable sendFilters, IServiceProvider serviceProvider, @@ -186,18 +185,14 @@ public async Task Send(string modelCardId) .Execute( rhinoObjects, modelCard.GetSendInfo(_speckleApplication.Slug), - (status, progress) => - _operationProgressManager.SetModelProgress( - Parent, - modelCardId, - new ModelCardProgress(modelCardId, status, progress), - cancellationToken - ), + _operationProgressManager.CreateOperationProgressEventHandler(Parent, modelCardId, cancellationToken), cancellationToken ) .ConfigureAwait(false); - Commands.SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults); + await Commands + .SetModelSendResult(modelCardId, sendResult.RootObjId, sendResult.ConversionResults) + .ConfigureAwait(false); } catch (OperationCanceledException) { @@ -209,7 +204,7 @@ public async Task Send(string modelCardId) catch (Exception ex) when (!ex.IsFatal()) // UX reasons - we will report operation exceptions as model card error. We may change this later when we have more exception documentation { _logger.LogModelCardHandledError(ex); - Commands.SetModelError(modelCardId, ex); + await Commands.SetModelError(modelCardId, ex).ConfigureAwait(false); } } @@ -218,7 +213,7 @@ public async Task Send(string modelCardId) /// /// Checks if any sender model cards contain any of the changed objects. If so, also updates the changed objects hashset for each model card - this last part is important for on send change detection. /// - private void RunExpirationChecks() + private async Task RunExpirationChecks() { var senders = _store.GetSenders(); string[] objectIdsList = ChangedObjectIds.Keys.ToArray(); // NOTE: could not copy to array happens here @@ -236,7 +231,7 @@ private void RunExpirationChecks() } } - Commands.SetModelsExpired(expiredSenderIds); + await Commands.SetModelsExpired(expiredSenderIds).ConfigureAwait(false); ChangedObjectIds = new(); } } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/DependencyInjection/RhinoConnectorModule.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/DependencyInjection/RhinoConnectorModule.cs new file mode 100644 index 000000000..e69de29bb diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs index 697d6cf2c..f536f5786 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoIdleManager.cs @@ -1,29 +1,20 @@ using Rhino; using Speckle.Connectors.DUI.Bridge; -using Speckle.InterfaceGenerator; namespace Speckle.Connectors.Rhino.HostApp; /// /// Rhino Idle Manager is a helper util to manage deferred actions. /// -[GenerateAutoInterface] -public class RhinoIdleManager(IIdleCallManager idleCallManager) : IRhinoIdleManager +public sealed class RhinoIdleManager(IIdleCallManager idleCallManager) : AppIdleManager(idleCallManager) { - /// - /// Subscribe deferred action to RhinoIdle event to run it whenever Rhino become idle. - /// - /// Action to call whenever Rhino become Idle. - public void SubscribeToIdle(string id, Action action) => - idleCallManager.SubscribeToIdle( - id, - action, - () => - { - RhinoApp.Idle += RhinoAppOnIdle; - } - ); + private readonly IIdleCallManager _idleCallManager = idleCallManager; + + protected override void AddEvent() + { + RhinoApp.Idle += RhinoAppOnIdle; + } private void RhinoAppOnIdle(object? sender, EventArgs e) => - idleCallManager.AppOnIdle(() => RhinoApp.Idle -= RhinoAppOnIdle); + _idleCallManager.AppOnIdle(() => RhinoApp.Idle -= RhinoAppOnIdle); } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoInstanceBaker.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoInstanceBaker.cs index c3c971ba6..d8af6ecf8 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoInstanceBaker.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoInstanceBaker.cs @@ -4,10 +4,12 @@ using Rhino.Geometry; using Speckle.Connectors.Common.Conversion; using Speckle.Connectors.Common.Instances; +using Speckle.Connectors.Common.Operations; using Speckle.Connectors.Rhino.Extensions; using Speckle.DoubleNumerics; using Speckle.Sdk; using Speckle.Sdk.Common; +using Speckle.Sdk.Common.Exceptions; using Speckle.Sdk.Models; using Speckle.Sdk.Models.Collections; using Speckle.Sdk.Models.Instances; @@ -40,11 +42,11 @@ ILogger logger /// Instance definitions and instances that need creating. /// A dict mapping { original application id -> [resulting application ids post conversion] } /// - public BakeResult BakeInstances( - List<(Collection[] collectionPath, IInstanceComponent obj)> instanceComponents, + public async Task BakeInstances( + IReadOnlyCollection<(Collection[] collectionPath, IInstanceComponent obj)> instanceComponents, Dictionary> applicationIdMap, string baseLayerName, - Action? onOperationProgressed + IProgress onOperationProgressed ) { // var doc = _contextStack.Current.Document; @@ -62,7 +64,7 @@ public BakeResult BakeInstances( var consumedObjectIds = new List(); foreach (var (layerCollection, instanceOrDefinition) in sortedInstanceComponents) { - onOperationProgressed?.Invoke("Converting blocks", (double)++count / sortedInstanceComponents.Count); + onOperationProgressed.Report(new("Converting blocks", (double)++count / sortedInstanceComponents.Count)); try { if (instanceOrDefinition is InstanceDefinitionProxy definitionProxy) @@ -154,6 +156,7 @@ instanceOrDefinition is InstanceProxy instanceProxy } } + await Task.Yield(); return new(createdObjectIds, consumedObjectIds, conversionResults); } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerBaker.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerBaker.cs index 14f4b62ea..0f956b9ed 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerBaker.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoLayerBaker.cs @@ -46,8 +46,7 @@ public int GetAndCreateLayerFromPath(Collection[] collectionPath, string baseLay var currentLayerName = baseLayerName; var currentDocument = RhinoDoc.ActiveDoc; // POC: too much effort right now to wrap around the interfaced layers - Layer previousLayer = currentDocument.Layers.FindName(currentLayerName); - + Layer? previousLayer = currentDocument.Layers.FindName(currentLayerName); foreach (Collection collection in collectionPath) { currentLayerName += Layer.PathSeparator + collection.name; @@ -59,7 +58,7 @@ public int GetAndCreateLayerFromPath(Collection[] collectionPath, string baseLay } var cleanNewLayerName = collection.name.Replace("{", "").Replace("}", ""); - Layer newLayer = new() { Name = cleanNewLayerName, ParentLayerId = previousLayer.Id }; + Layer newLayer = new() { Name = cleanNewLayerName, ParentLayerId = previousLayer?.Id ?? Guid.Empty }; // set material if ( diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoMaterialBaker.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoMaterialBaker.cs index e89ca6ee8..b550c4592 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoMaterialBaker.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/HostApp/RhinoMaterialBaker.cs @@ -4,7 +4,7 @@ using Speckle.Converters.Rhino; using Speckle.Objects.Other; using Speckle.Sdk; -using Speckle.Sdk.Common; +using Speckle.Sdk.Common.Exceptions; using Material = Rhino.DocObjects.Material; namespace Speckle.Connectors.Rhino.HostApp; diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs index 90a6a5783..17a6a0905 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs @@ -3,6 +3,7 @@ using Rhino.Geometry; using Speckle.Connectors.Common.Builders; using Speckle.Connectors.Common.Conversion; +using Speckle.Connectors.Common.Operations; using Speckle.Connectors.Common.Operations.Receive; using Speckle.Connectors.Rhino.HostApp; using Speckle.Converters.Common; @@ -53,11 +54,11 @@ ISdkActivityFactory activityFactory _activityFactory = activityFactory; } - public Task Build( + public async Task Build( Base rootObject, string projectName, string modelName, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ) { @@ -89,7 +90,7 @@ CancellationToken cancellationToken } // 3 - Bake materials and colors, as they are used later down the line by layers and objects - onOperationProgressed?.Invoke("Converting materials and colors", null); + onOperationProgressed.Report(new("Converting materials and colors", null)); if (unpackedRoot.RenderMaterialProxies != null) { using var _ = _activityFactory.Start("Render Materials"); @@ -103,7 +104,7 @@ CancellationToken cancellationToken // 4 - Bake layers // See [CNX-325: Rhino: Change receive operation order to increase performance](https://linear.app/speckle/issue/CNX-325/rhino-change-receive-operation-order-to-increase-performance) - onOperationProgressed?.Invoke("Baking layers (redraw disabled)", null); + onOperationProgressed.Report(new("Baking layers (redraw disabled)", null)); using (var _ = _activityFactory.Start("Pre baking layers")) { using var layerNoDraw = new DisableRedrawScope(_converterSettings.Current.Document.Views); @@ -125,7 +126,7 @@ CancellationToken cancellationToken { using (var convertActivity = _activityFactory.Start("Converting object")) { - onOperationProgressed?.Invoke("Converting objects", (double)++count / atomicObjects.Count); + onOperationProgressed.Report(new("Converting objects", (double)++count / atomicObjects.Count)); try { // 1: get pre-created layer from cache in layer baker @@ -183,12 +184,9 @@ CancellationToken cancellationToken // 6 - Convert instances using (var _ = _activityFactory.Start("Converting instances")) { - var (createdInstanceIds, consumedObjectIds, instanceConversionResults) = _instanceBaker.BakeInstances( - instanceComponentsWithPath, - applicationIdMap, - baseLayerName, - onOperationProgressed - ); + var (createdInstanceIds, consumedObjectIds, instanceConversionResults) = await _instanceBaker + .BakeInstances(instanceComponentsWithPath, applicationIdMap, baseLayerName, onOperationProgressed) + .ConfigureAwait(false); bakedObjectIds.RemoveAll(id => consumedObjectIds.Contains(id)); // remove all objects that have been "consumed" bakedObjectIds.AddRange(createdInstanceIds); // add instance ids @@ -204,7 +202,7 @@ CancellationToken cancellationToken _converterSettings.Current.Document.Views.Redraw(); - return Task.FromResult(new HostObjectBuilderResult(bakedObjectIds, conversionResults)); + return new HostObjectBuilderResult(bakedObjectIds, conversionResults); } private void PreReceiveDeepClean(string baseLayerName) diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs index a0119da16..878308cce 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs @@ -60,18 +60,11 @@ ISdkActivityFactory activityFactory _activityFactory = activityFactory; } - public Task Build( + public async Task Build( IReadOnlyList rhinoObjects, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken cancellationToken = default - ) => Task.FromResult(BuildSync(rhinoObjects, sendInfo, onOperationProgressed, cancellationToken)); - - private RootObjectBuilderResult BuildSync( - IReadOnlyList rhinoObjects, - SendInfo sendInfo, - Action? onOperationProgressed, - CancellationToken cancellationToken ) { using var activity = _activityFactory.Start("Build"); @@ -114,7 +107,7 @@ CancellationToken cancellationToken results.Add(result); ++count; - onOperationProgressed?.Invoke("Converting", (double)count / atomicObjects.Count); + onOperationProgressed.Report(new("Converting", (double)count / atomicObjects.Count)); // NOTE: useful for testing ui states, pls keep for now so we can easily uncomment // Thread.Sleep(550); @@ -135,6 +128,7 @@ CancellationToken cancellationToken rootObjectCollection[ProxyKeys.COLOR] = _colorUnpacker.UnpackColors(atomicObjects, versionLayers.ToList()); } + await Task.Yield(); return new RootObjectBuilderResult(rootObjectCollection, results); } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs index 574f3142c..3a060c253 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Plugin/RhinoPlugin.cs @@ -1,5 +1,5 @@ using Rhino; -using Speckle.Connectors.Rhino.HostApp; +using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.Rhino.Plugin; using Speckle.InterfaceGenerator; @@ -8,9 +8,9 @@ namespace Speckle.Connectors.Rhino.DependencyInjection; [GenerateAutoInterface] public class RhinoPlugin : IRhinoPlugin { - private readonly IRhinoIdleManager _idleManager; + private readonly IAppIdleManager _idleManager; - public RhinoPlugin(IRhinoIdleManager idleManager) + public RhinoPlugin(IAppIdleManager idleManager) { _idleManager = idleManager; } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs index 62b231a90..daf21e89f 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Registration/ServiceRegistration.cs @@ -10,6 +10,7 @@ using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI; using Speckle.Connectors.DUI.Bindings; +using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Connectors.DUI.WebView; @@ -41,7 +42,7 @@ public static void AddRhino(this IServiceCollection serviceCollection) // Register other connector specific types serviceCollection.AddSingleton(); serviceCollection.AddSingleton(); - serviceCollection.AddSingleton(); + serviceCollection.AddSingleton(); // Register bindings serviceCollection.AddSingleton(); diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs b/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs index 38d1a7bf1..0818a358f 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/Bindings/TeklaBasicConnectorBinding.cs @@ -40,9 +40,9 @@ DocumentModelStore store public void RemoveModel(ModelCard model) => throw new NotImplementedException(); - public void HighlightModel(string modelCardId) => throw new NotImplementedException(); + public Task HighlightModel(string modelCardId) => throw new NotImplementedException(); - public void HighlightObjects(List objectIds) => throw new NotImplementedException(); + public Task HighlightObjects(IReadOnlyList objectIds) => throw new NotImplementedException(); public BasicConnectorBindingCommands Commands { get; } } diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index efeb30d5b..8564bdc58 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -399,8 +399,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -408,7 +408,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -457,18 +457,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3.DependencyInjection/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..da9e832fe --- /dev/null +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3.DependencyInjection/packages.lock.json @@ -0,0 +1,302 @@ +{ + "version": 2, + "dependencies": { + "net6.0-windows7.0": { + "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==" + }, + "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.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.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.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.arcgis3": { + "type": "Project", + "dependencies": { + "Esri.ArcGISPro.Extensions30": "[3.2.0.49743, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==" + }, + "Esri.ArcGISPro.Extensions30": { + "type": "CentralTransitive", + "requested": "[3.2.0.49743, )", + "resolved": "3.2.0.49743", + "contentHash": "fmnYm+mD14Cz0Uqh1ij37SfLJerkyFHK5581y5tXT/l3H2ZvUmVuuxjYquXzyzj9p7IexQzMW4xCpxe+mD922g==" + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/Utils/FeatureClassUtils.cs b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/Utils/FeatureClassUtils.cs index 7f851c03c..e3aecf85c 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/Utils/FeatureClassUtils.cs +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/Utils/FeatureClassUtils.cs @@ -72,9 +72,9 @@ private Geodatabase GetDatabase() return geodatabase; } - public Dictionary> GroupConversionTrackers( + public async Task>> GroupConversionTrackers( Dictionary conversionTracker, - Action? onOperationProgressed + Action onOperationProgressed ) { // 1. Sort features into groups by path and geom type @@ -130,16 +130,17 @@ private Geodatabase GetDatabase() geometryGroups[uniqueKey].Add((context, trackerItem)); ClearExistingDataset(uniqueKey); - onOperationProgressed?.Invoke("Grouping features into layers", count++ / conversionTracker.Count); + onOperationProgressed.Invoke("Grouping features into layers", count++ / conversionTracker.Count); + await Task.Yield(); } return geometryGroups; } - public void CreateDatasets( + public async Task CreateDatasets( Dictionary conversionTracker, Dictionary> featureClassElements, - Action? onOperationProgressed + Action onOperationProgressed ) { double count = 0; @@ -170,7 +171,7 @@ public void CreateDatasets( listOfContextAndTrackers.Select(x => x.Item2).ToList() ); - onOperationProgressed?.Invoke("Writing to Database", count++ / featureClassElements.Count); + onOperationProgressed.Invoke("Writing to Database", count++ / featureClassElements.Count); continue; } @@ -198,7 +199,8 @@ public void CreateDatasets( } } - onOperationProgressed?.Invoke("Writing to Database", count++ / featureClassElements.Count); + onOperationProgressed.Invoke("Writing to Database", count++ / featureClassElements.Count); + await Task.Yield(); } } diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index 0e0a784a1..f20ada366 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -237,7 +237,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -260,18 +260,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022.DependencyInjection/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..0e0c8f5aa --- /dev/null +++ b/Converters/Autocad/Speckle.Converters.Autocad2022.DependencyInjection/packages.lock.json @@ -0,0 +1,403 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Autofac": { + "type": "Direct", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.autocad2022": { + "type": "Project", + "dependencies": { + "Speckle.AutoCAD.API": "[2022.0.2, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.AutoCAD.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2022.0.2", + "contentHash": "NFHXnlkBjzM8Bau52d6eF6m0+etHddGx7qlWN8YyrfTtGyz+AmPvF8fgxcLgyjAcB3W4Wim11JeYuEoTNH1X0w==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index f0da031bb..79b6ce524 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..68d50c2ae --- /dev/null +++ b/Converters/Autocad/Speckle.Converters.Autocad2023.DependencyInjection/packages.lock.json @@ -0,0 +1,403 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Autofac": { + "type": "Direct", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.autocad2023": { + "type": "Project", + "dependencies": { + "Speckle.AutoCAD.API": "[2023.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.AutoCAD.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2023.0.0", + "contentHash": "aNfiNw9zRW8pCl8AAQK7afEJuea4bJ4sFNsGVSDrdq1egaonZrwALU01dSyFNCE8tne86eVjlprpOGG6r0+G/A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 61185ccb8..945d1b482 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..8507379cd --- /dev/null +++ b/Converters/Autocad/Speckle.Converters.Autocad2024.DependencyInjection/packages.lock.json @@ -0,0 +1,445 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Autofac": { + "type": "Direct", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.connectors.dui": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Connectors.Utils": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.142, )", + "System.Threading.Tasks.Dataflow": "[6.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.utils": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Connectors.Logging": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )", + "Speckle.Sdk": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.autocad2024": { + "type": "Project", + "dependencies": { + "Speckle.AutoCAD.API": "[2024.0.0, )", + "Speckle.Connectors.DUI.WebView": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Microsoft.Web.WebView2": { + "type": "CentralTransitive", + "requested": "[1.0.1938.49, )", + "resolved": "1.0.1938.49", + "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" + }, + "Speckle.AutoCAD.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2024.0.0", + "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + }, + "System.Threading.Tasks.Dataflow": { + "type": "CentralTransitive", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "+tyDCU3/B1lDdOOAJywHQoFwyXIUghIaP2BxG79uvhfTnO+D9qIgjVlL/JV2NTliYbMHpd6eKDmHp2VHpij7MA==" + } + } + } +} \ No newline at end of file diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 7551ae30f..a879f1d22 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -339,18 +339,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025.DependencyInjection/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..a9b09076e --- /dev/null +++ b/Converters/Autocad/Speckle.Converters.Autocad2025.DependencyInjection/packages.lock.json @@ -0,0 +1,344 @@ +{ + "version": 2, + "dependencies": { + "net8.0-windows7.0": { + "Autofac": { + "type": "Direct", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==" + }, + "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==" + }, + "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.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.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.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.connectors.dui": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Connectors.Utils": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.142, )", + "System.Threading.Tasks.Dataflow": "[6.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.utils": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Connectors.Logging": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )", + "Speckle.Sdk": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.autocad2025": { + "type": "Project", + "dependencies": { + "Speckle.AutoCAD.API": "[2025.0.0, )", + "Speckle.Connectors.DUI.WebView": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Microsoft.Web.WebView2": { + "type": "CentralTransitive", + "requested": "[1.0.1938.49, )", + "resolved": "1.0.1938.49", + "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" + }, + "Speckle.AutoCAD.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2025.0.0", + "contentHash": "dqEgZ+bTqAG0tx0WwdnTZcbNKH2igzhOr3SMXtRYai7yIqXiz5btZ4Mf2bmfxbmxLucww3GKVpdZoI+PSZlMuQ==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + }, + "System.Threading.Tasks.Dataflow": { + "type": "CentralTransitive", + "requested": "[6.0.0, )", + "resolved": "6.0.0", + "contentHash": "+tyDCU3/B1lDdOOAJywHQoFwyXIUghIaP2BxG79uvhfTnO+D9qIgjVlL/JV2NTliYbMHpd6eKDmHp2VHpij7MA==" + } + } + } +} \ No newline at end of file diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 032902c15..678bee37f 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -265,7 +265,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -303,18 +303,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..3592145f7 --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024.DependencyInjection/packages.lock.json @@ -0,0 +1,413 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "Autofac": { + "type": "Direct", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.civil3d2024": { + "type": "Project", + "dependencies": { + "Speckle.AutoCAD.API": "[2024.0.0, )", + "Speckle.Civil3D.API": "[2024.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.AutoCAD.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2024.0.0", + "contentHash": "pZZ5uI+NXhZaQnsqRkgp/rywqBAjDObDJ9XNFGJvemT5k2OthDpHzlK/mKxz8QDCYie7uImQ8dv3uWj2QUFDPw==" + }, + "Speckle.Civil3D.API": { + "type": "CentralTransitive", + "requested": "[2024.0.0, )", + "resolved": "2024.0.0", + "contentHash": "9Q7M1k0DotN8w7MkiScQezErRdnZ4dAkxBMcPNhHSWoth/lSaT6UPV1aYEdl90RhehJWG4l3O7U2e3OXvVSFdw==", + "dependencies": { + "Speckle.AutoCAD.API": "2024.0.0" + } + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 27df5631f..f6b13dff4 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -282,7 +282,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -305,18 +305,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022.DependencyInjection/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..c098cc75d --- /dev/null +++ b/Converters/Revit/Speckle.Converters.Revit2022.DependencyInjection/packages.lock.json @@ -0,0 +1,404 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.revit2022": { + "type": "Project", + "dependencies": { + "Speckle.Converters.Common": "[1.0.0, )", + "Speckle.Converters.Common.DependencyInjection": "[1.0.0, )", + "Speckle.Revit.API": "[2022.0.2.1, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Revit.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2022.0.2.1", + "contentHash": "IrLN4WyI2ix+g3zCpo7sX8zNB3FrtrdQ3E2RpceGVPNG00v8OfD+Kei7o1bn1u/ML46iBYRAr/JcsLbwfUQsBw==" + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index e615f60a7..d6e9bccaf 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 8621de5d0..d25dcd357 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023.DependencyInjection/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..e0994174b --- /dev/null +++ b/Converters/Revit/Speckle.Converters.Revit2023.DependencyInjection/packages.lock.json @@ -0,0 +1,403 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.revit2023": { + "type": "Project", + "dependencies": { + "Speckle.Converters.Common": "[1.0.0, )", + "Speckle.Revit.API": "[2023.0.0, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Revit.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2023.0.0", + "contentHash": "tq40eD7psgTbV+epNouYyqfo6+hEi7FmXZqcxEOsAV7zfYyWhL6Rt3vmojkWGNuerGbH6oRI6KIIxrnlCNb8Hw==" + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index 8294affc0..d20d256f9 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index aed352417..2db4582c0 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024.DependencyInjection/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..f9236201c --- /dev/null +++ b/Converters/Revit/Speckle.Converters.Revit2024.DependencyInjection/packages.lock.json @@ -0,0 +1,403 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.revit2024": { + "type": "Project", + "dependencies": { + "Speckle.Converters.Common": "[1.0.0, )", + "Speckle.Revit.API": "[2024.0.0, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Revit.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2024.0.0", + "contentHash": "a4dsvZ00ocvzTgCD6dUdydf0jIZDVcDhs6dUX9cv+y3aTDbU8rmzhYXWt8sThedIG+IPSVa0vHmAH9pKiJL3SQ==" + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index 168888aac..c0baead61 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index b73d957c1..40c58beee 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2025.DependencyInjection/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..1c930d602 --- /dev/null +++ b/Converters/Revit/Speckle.Converters.Revit2025.DependencyInjection/packages.lock.json @@ -0,0 +1,302 @@ +{ + "version": 2, + "dependencies": { + "net8.0-windows7.0": { + "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==" + }, + "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.CSharp": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==" + }, + "Microsoft.Data.Sqlite": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.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.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.revit2025": { + "type": "Project", + "dependencies": { + "Speckle.Converters.Common": "[1.0.0, )", + "Speckle.Revit.API": "[2025.0.0, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==" + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Revit.API": { + "type": "CentralTransitive", + "requested": "[2023.0.0, )", + "resolved": "2025.0.0", + "contentHash": "Hwf/3Ydc7KxvjgD9pSZKLSJRsFTsxYg95YyTm6f43hcsGjmk49GsLFQt921Z9OcvUVewOggQHcmBgti+P2EPHw==" + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index dcc6ffaed..96c32115c 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -237,7 +237,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -260,18 +260,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.DependencyInjection/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..d9ccfbb75 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.Rhino7.DependencyInjection/packages.lock.json @@ -0,0 +1,403 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.rhino7": { + "type": "Project", + "dependencies": { + "RhinoCommon": "[7.13.21348.13001, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "RhinoCommon": { + "type": "CentralTransitive", + "requested": "[8.9.24194.18121, )", + "resolved": "7.13.21348.13001", + "contentHash": "JQdaNw61ddBqIe08E9O4N/grwrN1hjDHcYW7tWylwCZyFR7SepoCD4NS+6LN6+oSQhNbhLi9Bf+hQOFYFdRAEA==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index ffb03eef3..13a172ba9 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 9d2bebd56..91727817b 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino8.DependencyInjection/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8.DependencyInjection/packages.lock.json new file mode 100644 index 000000000..6681924a1 --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.Rhino8.DependencyInjection/packages.lock.json @@ -0,0 +1,403 @@ +{ + "version": 2, + "dependencies": { + ".NETFramework,Version=v4.8": { + "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.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==" + }, + "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.Net.WebSockets.Client.Managed": "1.0.22", + "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.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "W8DPQjkMScOMTtJbPwmPyj9c3zYSFGawDW3jwlBOOsnY+EzZFLgNQ/UMkK35JmkNOVPdCyPr2Tw7Vv9N+KA3ZQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "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.7", + "contentHash": "tiNmV1oPy+Z2R7Wd0bPB/FxCr8B+/5q11OpDMG751GA/YuOL7MZrBFfzv5oFRlFe08K6sjrnbrauzzGIeNrzLQ==", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "7.0.7", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4" + } + }, + "Microsoft.Data.Sqlite.Core": { + "type": "Transitive", + "resolved": "7.0.7", + "contentHash": "21FRzcJhaTrlv7kTrqr/ltFcSQM2TyuTTPhUcjO8H73od7Bb3QraNW90c7lUucNI/245XPkKZG4fp7/7OsKCSg==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "Microsoft.Extensions.Configuration": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "3.1.0" + } + }, + "Microsoft.Extensions.Configuration.Binder": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "dependencies": { + "Microsoft.Extensions.Configuration": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==" + }, + "Microsoft.Extensions.Options": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Primitives": "3.1.0", + "System.ComponentModel.Annotations": "4.7.0" + } + }, + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "3.1.0", + "contentHash": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "4.7.0" + } + }, + "Microsoft.NETFramework.ReferenceAssemblies.net48": { + "type": "Transitive", + "resolved": "1.0.3", + "contentHash": "zMk4D+9zyiEWByyQ7oPImPN/Jhpj166Ky0Nlla4eXlNL8hI/BtSJsgR8Inldd4NNpIAH3oh8yym0W2DrhXdSLQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "Polly": { + "type": "Transitive", + "resolved": "7.2.3", + "contentHash": "DeCY0OFbNdNxsjntr1gTXHJ5pKUwYzp04Er2LLeN3g6pWhffsGuKVfMBLe1lw7x76HrPkLxKEFxBlpRxS2nDEQ==" + }, + "Polly.Contrib.WaitAndRetry": { + "type": "Transitive", + "resolved": "1.1.1", + "contentHash": "1MUQLiSo4KDkQe6nzQRhIU05lm9jlexX5BVsbuw0SL82ynZ+GzAHQxJVDPVBboxV37Po3SG077aX8DuSy8TkaA==" + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Speckle.DoubleNumerics": { + "type": "Transitive", + "resolved": "4.0.1", + "contentHash": "MzEQ1Im0zTja+tEsdRIk/WlPiKqb22NmTOJcR1ZKm/mz46pezyyID3/wRz6vJUELMpSLnG7LhsxBL+nxbr7V0w==" + }, + "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.dynamic_cdecl": "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.dynamic_cdecl": { + "type": "Transitive", + "resolved": "2.1.4", + "contentHash": "ZsaKKhgYF9B1fvcnOGKl3EycNAwd9CRWX7v0rEfuPWhQQ5Jjpvf2VEHahiLIGHio3hxi3EIKFJw9KvyowWOUAw==", + "dependencies": { + "SQLitePCLRaw.core": "2.1.4" + } + }, + "System.Buffers": { + "type": "Transitive", + "resolved": "4.5.1", + "contentHash": "Rw7ijyl1qqRS0YQD/WycNst8hUUMgrMH4FCn1nNm27M4VxchZ1js3fVjQaANHO5f3sN4isvP4a+Met9Y4YomAg==" + }, + "System.ComponentModel.Annotations": { + "type": "Transitive", + "resolved": "4.7.0", + "contentHash": "0YFqjhp/mYkDGpU0Ye1GjE53HMp9UVfGN7seGpAMttAC0C40v5gw598jCgpbBLMmCo0E5YRLBv5Z2doypO49ZQ==" + }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==", + "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==" + }, + "System.Reactive": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "erBZjkQHWL9jpasCE/0qKAryzVBJFxGHVBAvgRN1bzM0q2s1S4oYREEEL0Vb+1kA/6BKb5FjUZMp5VXmy+gzkQ==", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "ZD9TMpsmYJLrxbbmdvhwt9YEgG5WntEnZ/d1eH8JBX9LBp+Ju8BSBhUGbZMNVHHomWo2KVImJhTDl2hIgw/6MA==" + }, + "System.Text.Encodings.Web": { + "type": "Transitive", + "resolved": "5.0.1", + "contentHash": "KmJ+CJXizDofbq6mpqDoRRLcxgOd2z9X3XoFNULSbvbqVRZkFX3istvr+MUjL6Zw1RT+RNdoI4GYidIINtgvqQ==", + "dependencies": { + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4" + } + }, + "System.Text.Json": { + "type": "Transitive", + "resolved": "5.0.2", + "contentHash": "I47dVIGiV6SfAyppphxqupertT/5oZkYLDCX6vC3HpOI4ZLjyoKAreUoem2ie6G0RbRuFrlqz/PcTQjfb2DOfQ==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "5.0.0", + "System.Buffers": "4.5.1", + "System.Memory": "4.5.4", + "System.Numerics.Vectors": "4.5.0", + "System.Runtime.CompilerServices.Unsafe": "5.0.0", + "System.Text.Encodings.Web": "5.0.1", + "System.Threading.Tasks.Extensions": "4.5.4", + "System.ValueTuple": "4.5.0" + } + }, + "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==" + }, + "speckle.autofac": { + "type": "Project", + "dependencies": { + "Autofac": "[5.2.0, )" + } + }, + "speckle.converters.common": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[3.1.0, )", + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Objects": "[3.1.0-dev.142, )" + } + }, + "speckle.converters.common.dependencyinjection": { + "type": "Project", + "dependencies": { + "Speckle.Autofac": "[1.0.0, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "speckle.converters.rhino8": { + "type": "Project", + "dependencies": { + "RhinoCommon": "[8.9.24194.18121, )", + "Speckle.Converters.Common": "[1.0.0, )" + } + }, + "Autofac": { + "type": "CentralTransitive", + "requested": "[5.2.0, )", + "resolved": "5.2.0", + "contentHash": "V8dBH0dsv75uDzl7Sw+HkhKDPUw2eXnlMjcSVMH+tLo2s67MpTKGyDj1pDcpR+IF2u4YRs0s3/x7R88YJzIWvg==", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.1.0" + } + }, + "Microsoft.Extensions.Logging": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "3.1.0", + "Microsoft.Extensions.DependencyInjection": "3.1.0", + "Microsoft.Extensions.Logging.Abstractions": "3.1.0", + "Microsoft.Extensions.Options": "3.1.0" + } + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[3.1.0, )", + "resolved": "3.1.0", + "contentHash": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==" + }, + "RhinoCommon": { + "type": "CentralTransitive", + "requested": "[8.9.24194.18121, )", + "resolved": "8.9.24194.18121", + "contentHash": "XRMnm38sBFeMT5AAtRTJdSaql/YNtT02AGi8TEVP1VZ4fkm8VJ1q2nNioWN3tW/+H8Tdi4nV+DuhB/5uE41MCg==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "zKOwln3evlRcasL9AHHLbkTHsKK+sxUDia3VaafhKNx/fJjqoyhiIPgPjW7xVLfU31pZR2OfTmYBFFcfgH1i/A==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.142" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.142, )", + "resolved": "3.1.0-dev.142", + "contentHash": "xtPyLVnufvipfT5jIuH9cetqkVn2e+rrJSX9fLObCkbxMCF27fioJPcJ9aOd2ErzrCKXapOVRnlHTaPdfFAdEQ==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", + "Microsoft.Extensions.Logging": "3.1.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2", + "System.Text.Json": "5.0.2" + } + } + } + } +} \ No newline at end of file diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index d5f635733..fb2148853 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PolyCurveToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PolyCurveToHostConverter.cs index 0c21f87d2..9ea6a97ed 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PolyCurveToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/PolyCurveToHostConverter.cs @@ -1,7 +1,7 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Converters.Common.Objects; using Speckle.Objects; -using Speckle.Sdk.Common; +using Speckle.Sdk.Common.Exceptions; namespace Speckle.Converters.Rhino.ToHost.Raw; diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs index 57cd12dc3..ecbb6ebaa 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/IdleCallManagerTests.cs @@ -15,7 +15,7 @@ public void SubscribeToIdleTest() var sut = new IdleCallManager(handler.Object); var action = Create(); var addEvent = Create(); - handler.Setup(x => x.CatchUnhandled(It.IsAny())).Returns(new Result()); + handler.Setup(x => x.CatchUnhandled(It.IsAny())); sut.SubscribeToIdle("id", action.Object, addEvent.Object); } @@ -24,7 +24,7 @@ public void SubscribeInternalTest() { var handler = Create(); var sut = new IdleCallManager(handler.Object); - var action = Create(); + var action = Create>(); var addEvent = Create(); addEvent.Setup(x => x.Invoke()); @@ -41,19 +41,22 @@ public void AppOnIdleTest() var handler = Create(); var sut = new IdleCallManager(handler.Object); var removeEvent = Create(); - handler.Setup(x => x.CatchUnhandled(It.IsAny())).Returns(new Result()); + handler.Setup(x => x.FireAndForget(It.IsAny>())); sut.AppOnIdle(removeEvent.Object); } [Test] - public void AppOnIdleInternalTest() + public async Task AppOnIdleInternalTest() { var handler = Create(); var sut = new IdleCallManager(handler.Object); - var expectedAction = Create(); - expectedAction.Setup(x => x.Invoke()); + var expectedAction = Create>(); + expectedAction.Setup(x => x.Invoke()).Returns(Task.CompletedTask); - handler.Setup(m => m.CatchUnhandled(It.IsAny())).Callback(a => a.Invoke()).Returns(new Result()); + handler + .Setup(m => m.CatchUnhandledAsync(It.IsAny>())) + .Callback>(a => a.Invoke()) + .Returns(Task.CompletedTask); var removeEvent = Create(); removeEvent.Setup(x => x.Invoke()); @@ -62,7 +65,7 @@ public void AppOnIdleInternalTest() sut.IdleSubscriptionCalled.Should().BeTrue(); sut.Calls.Count.Should().Be(1); - sut.AppOnIdleInternal(removeEvent.Object); + await sut.AppOnIdleInternal(removeEvent.Object); sut.Calls.Count.Should().Be(0); sut.IdleSubscriptionCalled.Should().BeFalse(); expectedAction.Verify(a => a(), Times.Once); diff --git a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs index 3ef8a0e15..8ba16dc14 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs +++ b/DUI3/Speckle.Connectors.DUI.Tests/Bridge/TopLevelExceptionHandlerTests.cs @@ -1,4 +1,4 @@ -using FluentAssertions; +using FluentAssertions; using Microsoft.Extensions.Logging; using Moq; using NUnit.Framework; @@ -26,7 +26,9 @@ public void CatchUnhandledAction_Exception() var logger = Create>(MockBehavior.Loose); var bridge = Create(); - bridge.Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny())); + bridge + .Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny(), default)) + .Returns(Task.CompletedTask); var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); @@ -53,7 +55,9 @@ public void CatchUnhandledFunc_Exception() var logger = Create>(MockBehavior.Loose); var bridge = Create(); - bridge.Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny())); + bridge + .Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny(), default)) + .Returns(Task.CompletedTask); var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); @@ -70,11 +74,9 @@ public void CatchUnhandledFunc_Exception_Fatal() var bridge = Create(); var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); -#pragma warning disable CA2201 var exception = Assert.Throws( () => sut.CatchUnhandled(new Func(() => throw new AppDomainUnloadedException())) ); -#pragma warning restore CA2201 exception.InnerExceptions.Single().Should().BeOfType(); } @@ -86,7 +88,7 @@ public async Task CatchUnhandledFuncAsync_Happy() var bridge = Create(); var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); - var returnVal = await sut.CatchUnhandled(() => Task.FromResult(val)); + var returnVal = await sut.CatchUnhandledAsync(() => Task.FromResult(val)); returnVal.Value.Should().Be(val); returnVal.Exception.Should().BeNull(); returnVal.IsSuccess.Should().BeTrue(); @@ -98,11 +100,13 @@ public async Task CatchUnhandledFuncAsync_Exception() var logger = Create>(MockBehavior.Loose); var bridge = Create(); - bridge.Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny())); + bridge + .Setup(x => x.Send(BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, It.IsAny(), default)) + .Returns(Task.CompletedTask); var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); - var returnVal = await sut.CatchUnhandled(new Func>(() => throw new InvalidOperationException())); + var returnVal = await sut.CatchUnhandledAsync(new Func>(() => throw new InvalidOperationException())); returnVal.Value.Should().BeNull(); returnVal.Exception.Should().BeOfType(); returnVal.IsSuccess.Should().BeFalse(); @@ -115,11 +119,9 @@ public void CatchUnhandledFuncAsync_Exception_Fatal() var bridge = Create(); var sut = new TopLevelExceptionHandler(logger.Object, bridge.Object); -#pragma warning disable CA2201 var exception = Assert.ThrowsAsync( - async () => await sut.CatchUnhandled(new Func>(() => throw new AppDomainUnloadedException())) + async () => await sut.CatchUnhandledAsync(new Func>(() => throw new AppDomainUnloadedException())) ); -#pragma warning restore CA2201 exception.Should().BeOfType(); } } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index ec3589f44..5ddd2cbf5 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -351,7 +351,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -394,18 +394,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/DUI3ControlWebView.xaml.cs b/DUI3/Speckle.Connectors.DUI.WebView/DUI3ControlWebView.xaml.cs index 979045d39..56ff2b85d 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/DUI3ControlWebView.xaml.cs +++ b/DUI3/Speckle.Connectors.DUI.WebView/DUI3ControlWebView.xaml.cs @@ -26,14 +26,57 @@ public DUI3ControlWebView(IServiceProvider serviceProvider) public object BrowserElement => Browser; - public void ExecuteScriptAsyncMethod(string script) + // { + // if (!Browser.IsInitialized) + // { + // throw new InvalidOperationException("Failed to execute script, Webview2 is not initialized yet."); + // } + // + // var t = Browser.Dispatcher.Invoke( + // async () => + // { + // var res = await Browser.ExecuteScriptAsync(script).ConfigureAwait(true); + // await Task.Delay(100).ConfigureAwait(true); + // return res; + // }, + // DispatcherPriority.Background + // ); + // + // _ = t.IsCompleted; + + // bool isAlreadyMainThread = Browser.Dispatcher.CheckAccess(); + // if (isAlreadyMainThread) + // { + // Browser.ExecuteScriptAsync(script); + // } + // else + // { + // Browser.Dispatcher.Invoke( + // () => + // { + // return Browser.ExecuteScriptAsync(script); + // }, + // DispatcherPriority.Background + // ); + // } + // } + + public async Task ExecuteScriptAsyncMethod(string script, CancellationToken cancellationToken) { if (!Browser.IsInitialized) { throw new InvalidOperationException("Failed to execute script, Webview2 is not initialized yet."); } - Browser.Dispatcher.Invoke(() => Browser.ExecuteScriptAsync(script), DispatcherPriority.Background); + var callbackTask = await Browser + .Dispatcher.InvokeAsync( + async () => await Browser.ExecuteScriptAsync(script).ConfigureAwait(false), + DispatcherPriority.Background, + cancellationToken + ) + .Task.ConfigureAwait(false); + + _ = await callbackTask.ConfigureAwait(false); } private void OnInitialized(object? sender, CoreWebView2InitializationCompletedEventArgs e) @@ -51,6 +94,9 @@ private void OnInitialized(object? sender, CoreWebView2InitializationCompletedEv } } + /// + /// This must be called on the Main thread + /// private void SetupBinding(IBinding binding) { binding.Parent.AssociateWithBinding(binding); diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index eb0dc1c73..239c66d6f 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -319,18 +319,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -588,8 +588,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.dui": { @@ -597,7 +597,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.146, )", + "Speckle.Sdk": "[3.1.0-dev.158, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -633,18 +633,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/IBasicConnectorBinding.cs b/DUI3/Speckle.Connectors.DUI/Bindings/IBasicConnectorBinding.cs index 4641720e5..2677926d4 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/IBasicConnectorBinding.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/IBasicConnectorBinding.cs @@ -19,9 +19,9 @@ public interface IBasicConnectorBinding : IBinding /// Highlights the objects attached to this sender in the host application. /// /// - public void HighlightModel(string modelCardId); + public Task HighlightModel(string modelCardId); - public void HighlightObjects(List objectIds); + public Task HighlightObjects(IReadOnlyList objectIds); public BasicConnectorBindingCommands Commands { get; } } @@ -43,7 +43,6 @@ public enum ToastNotificationType public class BasicConnectorBindingCommands { private const string NOTIFY_DOCUMENT_CHANGED_EVENT_NAME = "documentChanged"; - private const string SET_MODEL_PROGRESS_UI_COMMAND_NAME = "setModelProgress"; private const string SET_MODEL_ERROR_UI_COMMAND_NAME = "setModelError"; public const string SET_GLOBAL_NOTIFICATION = "setGlobalNotification"; @@ -54,7 +53,8 @@ public BasicConnectorBindingCommands(IBrowserBridge bridge) Bridge = bridge; } - public void NotifyDocumentChanged() => Bridge.Send(NOTIFY_DOCUMENT_CHANGED_EVENT_NAME); + public async Task NotifyDocumentChanged() => + await Bridge.Send(NOTIFY_DOCUMENT_CHANGED_EVENT_NAME).ConfigureAwait(false); /// /// Use it whenever you want to send global toast notification to UI. @@ -63,29 +63,27 @@ public BasicConnectorBindingCommands(IBrowserBridge bridge) /// Title of the notification /// Message in the toast notification. /// Closes toast notification in set timeout in UI. Default is true. - public void SetGlobalNotification(ToastNotificationType type, string title, string message, bool autoClose = true) => - Bridge.Send( - SET_GLOBAL_NOTIFICATION, - new - { - type, - title, - description = message, - autoClose - } - ); + public async Task SetGlobalNotification( + ToastNotificationType type, + string title, + string message, + bool autoClose = true + ) => + await Bridge + .Send( + SET_GLOBAL_NOTIFICATION, + new + { + type, + title, + description = message, + autoClose + } + ) + .ConfigureAwait(false); - public void SetModelProgress(string modelCardId, ModelCardProgress progress, CancellationTokenSource cts) - { - // NOTE: To prevent potential race condition - // After cancelling operation some parts could still send last progress update which was set progress on UI - // after it forced to be undefined. This is the safest way to prevent any case like this. - if (!cts.IsCancellationRequested) - { - Bridge.Send(SET_MODEL_PROGRESS_UI_COMMAND_NAME, new { modelCardId, progress }); - } - } - - public void SetModelError(string modelCardId, Exception error) => - Bridge.Send(SET_MODEL_ERROR_UI_COMMAND_NAME, new { modelCardId, error = error.Message }); + public async Task SetModelError(string modelCardId, Exception error) => + await Bridge + .Send(SET_MODEL_ERROR_UI_COMMAND_NAME, new { modelCardId, error = error.Message }) + .ConfigureAwait(false); } diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs b/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs index bdf790ca9..992aaf669 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/OperationProgressManager.cs @@ -1,4 +1,5 @@ using System.Collections.Concurrent; +using Speckle.Connectors.Common.Operations; using Speckle.Connectors.DUI.Bridge; using Speckle.Connectors.DUI.Models.Card; using Speckle.InterfaceGenerator; @@ -12,12 +13,37 @@ namespace Speckle.Connectors.DUI.Bindings; [GenerateAutoInterface] public class OperationProgressManager : IOperationProgressManager { + private class NonUIThreadProgress(Action handler) : IProgress + { + public void Report(T value) => handler(value); + } + private const string SET_MODEL_PROGRESS_UI_COMMAND_NAME = "setModelProgress"; private static readonly ConcurrentDictionary s_lastProgressValues = new(); - private const int THROTTLE_INTERVAL_MS = 50; + private const int THROTTLE_INTERVAL_MS = 200; + + public IProgress CreateOperationProgressEventHandler( + IBrowserBridge bridge, + string modelCardId, + CancellationToken cancellationToken + ) + { + var progress = new NonUIThreadProgress(args => + bridge.TopLevelExceptionHandler.FireAndForget( + () => + SetModelProgress( + bridge, + modelCardId, + new ModelCardProgress(modelCardId, args.Status, args.Progress), + cancellationToken + ) + ) + ); + return progress; + } - public void SetModelProgress( + public async Task SetModelProgress( IBrowserBridge bridge, string modelCardId, ModelCardProgress progress, @@ -34,20 +60,21 @@ CancellationToken cancellationToken t.Item1 = DateTime.Now; s_lastProgressValues[modelCardId] = (t.Item1, progress.Status); // Since it's the first time we get a call for this model card, we should send it out - SendProgress(bridge, modelCardId, progress); + await SendProgress(bridge, modelCardId, progress).ConfigureAwait(false); return; } - var elapsedMs = (DateTime.Now - t.Item1).Milliseconds; + var currentTime = DateTime.Now; + var elapsedMs = (currentTime - t.Item1).Milliseconds; if (elapsedMs < THROTTLE_INTERVAL_MS && t.Item2 == progress.Status) { return; } - SendProgress(bridge, modelCardId, progress); - s_lastProgressValues[modelCardId] = (DateTime.Now, progress.Status); + s_lastProgressValues[modelCardId] = (currentTime, progress.Status); + await SendProgress(bridge, modelCardId, progress).ConfigureAwait(false); } - private void SendProgress(IBrowserBridge bridge, string modelCardId, ModelCardProgress progress) => - bridge.Send(SET_MODEL_PROGRESS_UI_COMMAND_NAME, new { modelCardId, progress }); + private static async Task SendProgress(IBrowserBridge bridge, string modelCardId, ModelCardProgress progress) => + await bridge.Send(SET_MODEL_PROGRESS_UI_COMMAND_NAME, new { modelCardId, progress }).ConfigureAwait(false); } diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/ReceiveBindingUICommands.cs b/DUI3/Speckle.Connectors.DUI/Bindings/ReceiveBindingUICommands.cs index 7b9d17497..0c7bd3428 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/ReceiveBindingUICommands.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/ReceiveBindingUICommands.cs @@ -3,7 +3,7 @@ namespace Speckle.Connectors.DUI.Bindings; -public class ReceiveBindingUICommands : BasicConnectorBindingCommands +public sealed class ReceiveBindingUICommands : BasicConnectorBindingCommands { // POC: put here events once we needed for receive specific private const string SET_MODEL_RECEIVE_RESULT_UI_COMMAND_NAME = "setModelReceiveResult"; @@ -11,20 +11,22 @@ public class ReceiveBindingUICommands : BasicConnectorBindingCommands public ReceiveBindingUICommands(IBrowserBridge bridge) : base(bridge) { } - public void SetModelReceiveResult( + public async Task SetModelReceiveResult( string modelCardId, IEnumerable bakedObjectIds, IEnumerable conversionResults ) { - Bridge.Send( - SET_MODEL_RECEIVE_RESULT_UI_COMMAND_NAME, - new - { - ModelCardId = modelCardId, - bakedObjectIds, - conversionResults - } - ); + await Bridge + .Send( + SET_MODEL_RECEIVE_RESULT_UI_COMMAND_NAME, + new + { + ModelCardId = modelCardId, + bakedObjectIds, + conversionResults + } + ) + .ConfigureAwait(false); } } diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/SendBindingUICommands.cs b/DUI3/Speckle.Connectors.DUI/Bindings/SendBindingUICommands.cs index 2341b46aa..75b892fc2 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/SendBindingUICommands.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/SendBindingUICommands.cs @@ -4,33 +4,33 @@ namespace Speckle.Connectors.DUI.Bindings; // POC: Send Commands share all commands from BasicBindings + some, this pattern should be revised -public class SendBindingUICommands : BasicConnectorBindingCommands +public class SendBindingUICommands(IBrowserBridge bridge) : BasicConnectorBindingCommands(bridge) { private const string REFRESH_SEND_FILTERS_UI_COMMAND_NAME = "refreshSendFilters"; private const string SET_MODELS_EXPIRED_UI_COMMAND_NAME = "setModelsExpired"; private const string SET_MODEL_SEND_RESULT_UI_COMMAND_NAME = "setModelSendResult"; - public SendBindingUICommands(IBrowserBridge bridge) - : base(bridge) { } - // POC.. the only reasons this needs the bridge is to send? realtionship to these messages and the bridge is unclear - public void RefreshSendFilters() => Bridge.Send(REFRESH_SEND_FILTERS_UI_COMMAND_NAME); + public async Task RefreshSendFilters() => + await Bridge.Send(REFRESH_SEND_FILTERS_UI_COMMAND_NAME).ConfigureAwait(false); - public void SetModelsExpired(IEnumerable expiredModelIds) => - Bridge.Send(SET_MODELS_EXPIRED_UI_COMMAND_NAME, expiredModelIds); + public async Task SetModelsExpired(IEnumerable expiredModelIds) => + await Bridge.Send(SET_MODELS_EXPIRED_UI_COMMAND_NAME, expiredModelIds).ConfigureAwait(false); - public void SetModelSendResult( + public async Task SetModelSendResult( string modelCardId, string versionId, IEnumerable sendConversionResults ) => - Bridge.Send( - SET_MODEL_SEND_RESULT_UI_COMMAND_NAME, - new - { - modelCardId, - versionId, - sendConversionResults - } - ); + await Bridge + .Send( + SET_MODEL_SEND_RESULT_UI_COMMAND_NAME, + new + { + modelCardId, + versionId, + sendConversionResults + } + ) + .ConfigureAwait(false); } diff --git a/DUI3/Speckle.Connectors.DUI/Bindings/TestBinding.cs b/DUI3/Speckle.Connectors.DUI/Bindings/TestBinding.cs index 7231b2f2e..a5e095fbc 100644 --- a/DUI3/Speckle.Connectors.DUI/Bindings/TestBinding.cs +++ b/DUI3/Speckle.Connectors.DUI/Bindings/TestBinding.cs @@ -41,24 +41,27 @@ public object GetComplexType() => thisIsABoolean = false }; - public void TriggerEvent(string eventName) + public async Task TriggerEvent(string eventName) { switch (eventName) { case "emptyTestEvent": - Parent.Send("emptyTestEvent"); + await Parent.Send("emptyTestEvent").ConfigureAwait(false); + break; case "testEvent": default: - Parent.Send( - "testEvent", - new - { - IsOk = true, - Name = "foo", - Count = 42 - } - ); + await Parent + .Send( + "testEvent", + new + { + IsOk = true, + Name = "foo", + Count = 42 + } + ) + .ConfigureAwait(false); break; } } diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/AppIdleManager.cs b/DUI3/Speckle.Connectors.DUI/Bridge/AppIdleManager.cs new file mode 100644 index 000000000..12ecee416 --- /dev/null +++ b/DUI3/Speckle.Connectors.DUI/Bridge/AppIdleManager.cs @@ -0,0 +1,33 @@ +using Speckle.InterfaceGenerator; + +namespace Speckle.Connectors.DUI.Bridge; + +[GenerateAutoInterface] +public abstract class AppIdleManager : IAppIdleManager +{ + private readonly IIdleCallManager _idleCallManager; + + protected AppIdleManager(IIdleCallManager idleCallManager) + { + _idleCallManager = idleCallManager; + } + + /// + /// Subscribe deferred action to Idling event to run it whenever Revit becomes idle. + /// + /// Action to call whenever the host app becomes Idle. + /// some events in host app are triggered many times, we might get 10x per object + /// Making this more like a deferred action, so we don't update the UI many times + public void SubscribeToIdle(string id, Action action) + { + _idleCallManager.SubscribeToIdle(id, action, AddEvent); + } + + /// + public void SubscribeToIdle(string id, Func asyncAction) + { + _idleCallManager.SubscribeToIdle(id, asyncAction, AddEvent); + } + + protected abstract void AddEvent(); +} diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs b/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs index d610e1e01..376070bfc 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/BrowserBridge.cs @@ -114,14 +114,14 @@ public void AssociateWithBinding(IBinding binding) private async Task OnActionBlock(RunMethodArgs args) { Result result = await TopLevelExceptionHandler - .CatchUnhandled(async () => await ExecuteMethod(args.MethodName, args.MethodArgs).ConfigureAwait(false)) + .CatchUnhandledAsync(async () => await ExecuteMethod(args.MethodName, args.MethodArgs).ConfigureAwait(false)) .ConfigureAwait(false); string resultJson = result.IsSuccess ? JsonConvert.SerializeObject(result.Value, _serializerOptions) : SerializeFormattedException(result.Exception); - NotifyUIMethodCallResultReady(args.RequestId, resultJson); + await NotifyUIMethodCallResultReady(args.RequestId, resultJson).ConfigureAwait(false); } /// @@ -165,10 +165,6 @@ void Post() } } - /// - /// Run actions on main thread. - /// - /// Action to run on main thread. public void RunOnMainThread(Action action) { _mainThreadContext.Post( @@ -181,6 +177,40 @@ public void RunOnMainThread(Action action) ); } + public async Task RunOnMainThreadAsync(Func action) + { + await RunOnMainThreadAsync(async () => + { + await action.Invoke().ConfigureAwait(false); + return null; + }) + .ConfigureAwait(false); + } + + [SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "TaskCompletionSource")] + public Task RunOnMainThreadAsync(Func> action) + { + TaskCompletionSource tcs = new(); + + _mainThreadContext.Post( + async _ => + { + try + { + T result = await action.Invoke().ConfigureAwait(false); + tcs.SetResult(result); + } + catch (Exception ex) + { + tcs.SetException(ex); + } + }, + null + ); + + return tcs.Task; + } + /// /// Used by the action block to invoke the actual method called by the UI. /// @@ -272,11 +302,15 @@ private string SerializeFormattedException(Exception e) /// /// /// - private void NotifyUIMethodCallResultReady(string requestId, string? serializedData = null) + private async Task NotifyUIMethodCallResultReady( + string requestId, + string? serializedData = null, + CancellationToken cancellationToken = default + ) { _resultsStore[requestId] = serializedData; string script = $"{FrontendBoundName}.responseReady('{requestId}')"; - _browserScriptExecutor.ExecuteScriptAsyncMethod(script); + await _browserScriptExecutor.ExecuteScriptAsyncMethod(script, cancellationToken).ConfigureAwait(false); } /// @@ -310,7 +344,7 @@ public void OpenUrl(string url) Process.Start(new ProcessStartInfo { FileName = url, UseShellExecute = true }); } - public void Send(string eventName) + public async Task Send(string eventName, CancellationToken cancellationToken = default) { if (_binding is null) { @@ -319,10 +353,10 @@ public void Send(string eventName) var script = $"{FrontendBoundName}.emit('{eventName}')"; - _browserScriptExecutor.ExecuteScriptAsyncMethod(script); + await _browserScriptExecutor.ExecuteScriptAsyncMethod(script, cancellationToken).ConfigureAwait(false); } - public void Send(string eventName, T data) + public async Task Send(string eventName, T data, CancellationToken cancellationToken = default) where T : class { if (_binding is null) @@ -334,6 +368,6 @@ public void Send(string eventName, T data) string requestId = $"{Guid.NewGuid()}_{eventName}"; _resultsStore[requestId] = payload; var script = $"{FrontendBoundName}.emitResponseReady('{eventName}', '{requestId}')"; - _browserScriptExecutor.ExecuteScriptAsyncMethod(script); + await _browserScriptExecutor.ExecuteScriptAsyncMethod(script, cancellationToken).ConfigureAwait(false); } } diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs b/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs index 41075f246..7bd772978 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserBridge.cs @@ -30,24 +30,30 @@ public interface IBrowserBridge public void RunMethod(string methodName, string requestId, string args); /// - /// Run actions on main thread. + /// Posts an onto the main thread /// Some applications might need to run some operations on main thread as deferred actions. /// - /// - /// Exceptions will be caught by - /// - /// Action to run on main thread. - public void RunOnMainThread(Action action); + /// An awaitable + /// Action to run on the main thread + public Task RunOnMainThreadAsync(Func> action); + + /// + /// Posts an onto the main thread + /// Some applications might need to run some operations on main thread as deferred actions. + /// + /// An awaitable + /// Action to run on the main thread + public Task RunOnMainThreadAsync(Func action); /// /// Bridge was not initialized with a binding - public void Send(string eventName); + public Task Send(string eventName, CancellationToken cancellationToken = default); - /// + /// /// data to store /// /// Bridge was not initialized with a binding - public void Send(string eventName, T data) + public Task Send(string eventName, T data, CancellationToken cancellationToken = default) where T : class; public ITopLevelExceptionHandler TopLevelExceptionHandler { get; } diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserScriptExecutor.cs b/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserScriptExecutor.cs index 6f3e79c34..6c3fb69f9 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserScriptExecutor.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/IBrowserScriptExecutor.cs @@ -4,7 +4,7 @@ public interface IBrowserScriptExecutor { /// thrown when is /// The (constant string) script to execute on the browser - public void ExecuteScriptAsyncMethod(string script); + public Task ExecuteScriptAsyncMethod(string script, CancellationToken cancellationToken); public bool IsBrowserInitialized { get; } diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/IdleCallManager.cs b/DUI3/Speckle.Connectors.DUI/Bridge/IdleCallManager.cs index 2336ae7b0..0b3e83504 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/IdleCallManager.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/IdleCallManager.cs @@ -6,14 +6,15 @@ namespace Speckle.Connectors.DUI.Bridge; public interface IIdleCallManager { void SubscribeToIdle(string id, Action action, Action addEvent); + void SubscribeToIdle(string id, Func asyncAction, Action addEvent); void AppOnIdle(Action removeEvent); } //should be registered as singleton [SuppressMessage("ReSharper", "InconsistentlySynchronizedField")] -public class IdleCallManager : IIdleCallManager +public sealed class IdleCallManager : IIdleCallManager { - public ConcurrentDictionary Calls { get; } = new(); + internal ConcurrentDictionary> Calls { get; } = new(); private readonly object _lock = new(); public bool IdleSubscriptionCalled { get; private set; } @@ -26,9 +27,20 @@ public IdleCallManager(ITopLevelExceptionHandler topLevelExceptionHandler) } public void SubscribeToIdle(string id, Action action, Action addEvent) => - _topLevelExceptionHandler.CatchUnhandled(() => SubscribeInternal(id, action, addEvent)); + SubscribeToIdle( + id, + () => + { + action.Invoke(); + return Task.CompletedTask; + }, + addEvent + ); + + public void SubscribeToIdle(string id, Func asyncAction, Action addEvent) => + _topLevelExceptionHandler.CatchUnhandled(() => SubscribeInternal(id, asyncAction, addEvent)); - public void SubscribeInternal(string id, Action action, Action addEvent) + internal void SubscribeInternal(string id, Func action, Action addEvent) { Calls.TryAdd(id, action); if (!IdleSubscriptionCalled) @@ -45,13 +57,13 @@ public void SubscribeInternal(string id, Action action, Action addEvent) } public void AppOnIdle(Action removeEvent) => - _topLevelExceptionHandler.CatchUnhandled(() => AppOnIdleInternal(removeEvent)); + _topLevelExceptionHandler.FireAndForget(async () => await AppOnIdleInternal(removeEvent).ConfigureAwait(false)); - public void AppOnIdleInternal(Action removeEvent) + internal async Task AppOnIdleInternal(Action removeEvent) { - foreach (KeyValuePair kvp in Calls) + foreach (KeyValuePair> kvp in Calls) { - _topLevelExceptionHandler.CatchUnhandled(() => kvp.Value.Invoke()); + await _topLevelExceptionHandler.CatchUnhandledAsync(kvp.Value).ConfigureAwait(false); } Calls.Clear(); diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/SyncToCurrentThread.cs b/DUI3/Speckle.Connectors.DUI/Bridge/SyncToCurrentThread.cs deleted file mode 100644 index eaac8b7b3..000000000 --- a/DUI3/Speckle.Connectors.DUI/Bridge/SyncToCurrentThread.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Speckle.Connectors.Common.Operations; - -namespace Speckle.Connectors.DUI.Bridge; - -/// -/// Implements the interface and runs a given function on the current thread using Task.Run. -/// -public class SyncToCurrentThread : ISyncToThread -{ - /// - /// Executes a given function on the current thread using Task.Run. - /// - /// The return type of the function. - /// The function to execute. - /// A Task object representing the asynchronous operation. - public Task RunOnThread(Func func) => Task.FromResult(func.Invoke()); -} diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/SyncToUIThread.cs b/DUI3/Speckle.Connectors.DUI/Bridge/SyncToUIThread.cs index 3ae77f62f..bb7bbe0c3 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/SyncToUIThread.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/SyncToUIThread.cs @@ -13,23 +13,6 @@ public SyncToUIThread(IBrowserBridge bridge) } [SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Task Completion Source")] - public Task RunOnThread(Func func) - { - TaskCompletionSource tcs = new(); - - _bridge.RunOnMainThread(() => - { - try - { - T result = func.Invoke(); - tcs.SetResult(result); - } - catch (Exception ex) - { - tcs.SetException(ex); - } - }); - - return tcs.Task; - } + public async Task RunOnThread(Func> func) => + await _bridge.RunOnMainThreadAsync(func).ConfigureAwait(false); } diff --git a/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs b/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs index 7c3f004ab..a39ff0bc2 100644 --- a/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs +++ b/DUI3/Speckle.Connectors.DUI/Bridge/TopLevelExceptionHandler.cs @@ -41,43 +41,35 @@ internal TopLevelExceptionHandler(ILogger logger, IBro /// The function to invoke and provide error handling for /// will be rethrown, these should be allowed to bubble up to the host app /// - public Result CatchUnhandled(Action function) + public void CatchUnhandled(Action function) { - try - { - try - { - function.Invoke(); - return new(); - } - catch (Exception ex) when (!ex.IsFatal()) - { - _logger.LogError(ex, UNHANDLED_LOGGER_TEMPLATE); - - SetGlobalNotification( - ToastNotificationType.DANGER, - "Unhandled Exception Occured", - ex.ToFormattedString(), - false - ); - return new(ex); - } - } - catch (Exception ex) + _ = CatchUnhandled(() => { - _logger.LogCritical(ex, UNHANDLED_LOGGER_TEMPLATE); - throw; - } + function(); + return null; + }); } /// /// return type /// A result pattern struct (where exceptions have been handled) public Result CatchUnhandled(Func function) => - CatchUnhandled(() => Task.FromResult(function.Invoke())).Result; + CatchUnhandledAsync(() => Task.FromResult(function.Invoke())).Result; //Safe to do a .Result because this as an already completed and non-async Task from the Task.FromResult + + /// + /// A result pattern struct (where exceptions have been handled) + public async Task CatchUnhandledAsync(Func function) + { + _ = await CatchUnhandledAsync(async () => + { + await function().ConfigureAwait(false); + return null; + }) + .ConfigureAwait(false); + } /// - public async Task> CatchUnhandled(Func> function) + public async Task> CatchUnhandledAsync(Func> function) { try { @@ -88,12 +80,13 @@ public async Task> CatchUnhandled(Func> function) catch (Exception ex) when (!ex.IsFatal()) { _logger.LogError(ex, UNHANDLED_LOGGER_TEMPLATE); - SetGlobalNotification( - ToastNotificationType.DANGER, - "Unhandled Exception Occured", - ex.ToFormattedString(), - false - ); + await SetGlobalNotification( + ToastNotificationType.DANGER, + "Unhandled Exception Occured", + ex.ToFormattedString(), + false + ) + .ConfigureAwait(false); return new(ex); } } @@ -104,15 +97,28 @@ public async Task> CatchUnhandled(Func> function) } } - private void SetGlobalNotification(ToastNotificationType type, string title, string message, bool autoClose) => - Parent.Send( - BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, //TODO: We could move these constants into a DUI3 constants static class - new - { - type, - title, - description = message, - autoClose - } - ); + /// + /// Triggers an async action without explicitly needing to await it.
+ /// Any thrown by invoking will be handled by the
+ ///
+ /// + /// This function should only be used as an event handler that doesn't allow for handlers to return a + /// In cases where you can use keyword, you should prefer using + /// + /// + public async void FireAndForget(Func function) => await CatchUnhandledAsync(function).ConfigureAwait(false); + + private async Task SetGlobalNotification(ToastNotificationType type, string title, string message, bool autoClose) => + await Parent + .Send( + BasicConnectorBindingCommands.SET_GLOBAL_NOTIFICATION, //TODO: We could move these constants into a DUI3 constants static class + new + { + type, + title, + description = message, + autoClose + } + ) + .ConfigureAwait(false); } diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index b3675ffa3..aaa08deda 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -50,9 +50,9 @@ }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -325,8 +325,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.logging": { @@ -355,11 +355,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index 59f21f62a..937630511 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -35,8 +35,8 @@ - - + + @@ -44,4 +44,4 @@ - \ No newline at end of file + diff --git a/Sdk/Speckle.Connectors.Common/Builders/IHostObjectBuilder.cs b/Sdk/Speckle.Connectors.Common/Builders/IHostObjectBuilder.cs index 9cfa1113b..7d9e150dc 100644 --- a/Sdk/Speckle.Connectors.Common/Builders/IHostObjectBuilder.cs +++ b/Sdk/Speckle.Connectors.Common/Builders/IHostObjectBuilder.cs @@ -1,4 +1,5 @@ -using Speckle.Connectors.Common.Conversion; +using Speckle.Connectors.Common.Conversion; +using Speckle.Connectors.Common.Operations; using Speckle.Sdk.Models; namespace Speckle.Connectors.Common.Builders; @@ -21,7 +22,7 @@ Task Build( Base rootObject, string projectName, string modelName, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ); } diff --git a/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs b/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs index f70f6437e..f3584c726 100644 --- a/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs +++ b/Sdk/Speckle.Connectors.Common/Builders/IRootObjectBuilder.cs @@ -9,7 +9,7 @@ public interface IRootObjectBuilder public Task Build( IReadOnlyList objects, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken ct = default ); } diff --git a/Sdk/Speckle.Connectors.Common/Builders/TraversalExtensions.cs b/Sdk/Speckle.Connectors.Common/Builders/TraversalExtensions.cs deleted file mode 100644 index 68e50e178..000000000 --- a/Sdk/Speckle.Connectors.Common/Builders/TraversalExtensions.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Speckle.Sdk.Models; -using Speckle.Sdk.Models.GraphTraversal; - -namespace Speckle.Connectors.Common.Builders; - -public static class TraversalExtensions -{ - [Obsolete( - "Do not use - we're doing multi stage receives and this confuses things. Report progress as appropriate from the connector side.", - true - )] - public static IEnumerable TraverseWithProgress( - this GraphTraversal traversalFunction, - Base rootObject, - Action? onOperationProgressed, - CancellationToken cancellationToken = default - ) - { - var traversalGraph = traversalFunction.Traverse(rootObject).ToArray(); - int count = 0; - foreach (var tc in traversalGraph) - { - cancellationToken.ThrowIfCancellationRequested(); - - yield return tc; - - onOperationProgressed?.Invoke("Converting", (double)++count / traversalGraph.Length); - } - } -} diff --git a/Sdk/Speckle.Connectors.Common/Instances/IInstanceBaker.cs b/Sdk/Speckle.Connectors.Common/Instances/IInstanceBaker.cs index 6fa1dfa5b..fe6fa4af7 100644 --- a/Sdk/Speckle.Connectors.Common/Instances/IInstanceBaker.cs +++ b/Sdk/Speckle.Connectors.Common/Instances/IInstanceBaker.cs @@ -1,3 +1,4 @@ +using Speckle.Connectors.Common.Operations; using Speckle.Sdk.Models.Collections; using Speckle.Sdk.Models.Instances; @@ -13,11 +14,11 @@ public interface IInstanceBaker /// /// /// - BakeResult BakeInstances( - List<(Collection[] collectionPath, IInstanceComponent obj)> instanceComponents, + Task BakeInstances( + IReadOnlyCollection<(Collection[] collectionPath, IInstanceComponent obj)> instanceComponents, Dictionary applicationIdMap, string baseLayerName, - Action? onOperationProgressed + IProgress onOperationProgressed ); /// diff --git a/Sdk/Speckle.Connectors.Common/Operations/CardProgress.cs b/Sdk/Speckle.Connectors.Common/Operations/CardProgress.cs new file mode 100644 index 000000000..d1fbd4a8f --- /dev/null +++ b/Sdk/Speckle.Connectors.Common/Operations/CardProgress.cs @@ -0,0 +1,3 @@ +namespace Speckle.Connectors.Common.Operations; + +public readonly record struct CardProgress(string Status, double? Progress); diff --git a/Sdk/Speckle.Connectors.Common/Operations/ISyncToThread.cs b/Sdk/Speckle.Connectors.Common/Operations/ISyncToThread.cs index 795d928d9..2440e642f 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/ISyncToThread.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/ISyncToThread.cs @@ -2,5 +2,5 @@ public interface ISyncToThread { - public Task RunOnThread(Func func); + public Task RunOnThread(Func> func); } diff --git a/Sdk/Speckle.Connectors.Common/Operations/PassthroughProgress.cs b/Sdk/Speckle.Connectors.Common/Operations/PassthroughProgress.cs new file mode 100644 index 000000000..b21833e02 --- /dev/null +++ b/Sdk/Speckle.Connectors.Common/Operations/PassthroughProgress.cs @@ -0,0 +1,8 @@ +using Speckle.Sdk.Transports; + +namespace Speckle.Connectors.Common.Operations; + +public class PassthroughProgress(Action progressCallback) : IProgress +{ + public void Report(ProgressArgs value) => progressCallback.Invoke(value); +} diff --git a/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs index e7e63475a..b45897974 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs @@ -39,8 +39,8 @@ IClientFactory clientFactory public async Task Execute( ReceiveInfo receiveInfo, - CancellationToken cancellationToken, - Action? onOperationProgressed = null + IProgress onOperationProgressed, + CancellationToken cancellationToken ) { using var execute = _activityFactory.Start("Receive Operation"); @@ -53,8 +53,6 @@ public async Task Execute( .Version.Get(receiveInfo.SelectedVersionId, receiveInfo.ModelId, receiveInfo.ProjectId, cancellationToken) .ConfigureAwait(false); - int totalCount = 1; - using var transport = _serverTransportFactory.Create(account, receiveInfo.ProjectId); _progressDisplayManager.Begin(); @@ -62,40 +60,36 @@ public async Task Execute( .Receive( version.referencedObject, transport, - onProgressAction: dict => + onProgressAction: new PassthroughProgress(args => { if (!_progressDisplayManager.ShouldUpdate()) { return; } - // NOTE: this looks weird for the user, as when deserialization kicks in, the progress bar will go down, and then start progressing again. - // This is something we're happy to live with until we refactor the whole receive pipeline. - var args = dict.FirstOrDefault(); - if (args is null) - { - return; - } switch (args.ProgressEvent) { - case ProgressEvent.DownloadBytes: - onOperationProgressed?.Invoke( - $"Downloading ({_progressDisplayManager.CalculateSpeed(args)})", - _progressDisplayManager.CalculatePercentage(args) + case ProgressEvent.DownloadBytes: //TODO: OnOperationProgress is not awaited here. + onOperationProgressed.Report( + new( + $"Downloading ({_progressDisplayManager.CalculateSpeed(args)})", + _progressDisplayManager.CalculatePercentage(args) + ) ); break; case ProgressEvent.DownloadObject: - onOperationProgressed?.Invoke("Downloading Root Object...", null); + onOperationProgressed.Report(new("Downloading Root Object...", null)); break; case ProgressEvent.DeserializeObject: - onOperationProgressed?.Invoke( - $"Deserializing ({_progressDisplayManager.CalculateSpeed(args)})", - _progressDisplayManager.CalculatePercentage(args) + onOperationProgressed.Report( + new( + $"Deserializing ({_progressDisplayManager.CalculateSpeed(args)})", + _progressDisplayManager.CalculatePercentage(args) + ) ); break; } - }, - onTotalChildrenCountKnown: c => totalCount = c, + }), cancellationToken: cancellationToken ) .ConfigureAwait(false); @@ -121,7 +115,7 @@ await apiClient private async Task ConvertObjects( Base commitObject, ReceiveInfo receiveInfo, - Action? onOperationProgressed, + IProgress onOperationProgressed, CancellationToken cancellationToken ) { @@ -135,7 +129,7 @@ CancellationToken cancellationToken try { - var res = await _hostObjectBuilder + HostObjectBuilderResult res = await _hostObjectBuilder .Build(commitObject, receiveInfo.ProjectName, receiveInfo.ModelName, onOperationProgressed, cancellationToken) .ConfigureAwait(false); conversionActivity?.SetStatus(SdkActivityStatusCode.Ok); diff --git a/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs b/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs index 23f6337cc..86025d307 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs @@ -50,13 +50,13 @@ IClientFactory clientFactory public async Task<(string rootObjId, IReadOnlyDictionary convertedReferences)> Send( Base commitObject, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken ct = default ) { ct.ThrowIfCancellationRequested(); - onOperationProgressed?.Invoke("Uploading...", null); + onOperationProgressed.Report(new("Uploading...", null)); Account account = _accountService.GetAccountWithServerUrlFallback(sendInfo.AccountId, sendInfo.ServerUrl); @@ -68,40 +68,36 @@ IClientFactory clientFactory commitObject, transport, true, - onProgressAction: dict => + onProgressAction: new PassthroughProgress(args => { if (!_progressDisplayManager.ShouldUpdate()) { return; } - // NOTE: this looks weird for the user, as when deserialization kicks in, the progress bar will go down, and then start progressing again. - // This is something we're happy to live with until we refactor the whole receive pipeline. - var args = dict.FirstOrDefault(); - if (args is null) - { - return; - } - switch (args.ProgressEvent) { - case ProgressEvent.UploadBytes: - onOperationProgressed?.Invoke( - $"Uploading ({_progressDisplayManager.CalculateSpeed(args)})", - _progressDisplayManager.CalculatePercentage(args) + case ProgressEvent.UploadBytes: //TODO: These progress calls are not awaited + onOperationProgressed.Report( + new( + $"Uploading ({_progressDisplayManager.CalculateSpeed(args)})", + _progressDisplayManager.CalculatePercentage(args) + ) ); break; case ProgressEvent.UploadObject: - onOperationProgressed?.Invoke("Uploading Root Object...", null); + onOperationProgressed.Report(new("Uploading Root Object...", null)); break; case ProgressEvent.SerializeObject: - onOperationProgressed?.Invoke( - $"Serializing ({_progressDisplayManager.CalculateSpeed(args)})", - _progressDisplayManager.CalculatePercentage(args) + onOperationProgressed.Report( + new( + $"Serializing ({_progressDisplayManager.CalculateSpeed(args)})", + _progressDisplayManager.CalculatePercentage(args) + ) ); break; } - }, + }), ct ) .ConfigureAwait(false); @@ -110,7 +106,7 @@ IClientFactory clientFactory ct.ThrowIfCancellationRequested(); - onOperationProgressed?.Invoke("Linking version to model...", null); + onOperationProgressed.Report(new("Linking version to model...", null)); // 8 - Create the version (commit) using var apiClient = _clientFactory.Create(account); diff --git a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs index 52b6fa277..24fecf55d 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs @@ -25,7 +25,7 @@ ISdkActivityFactory activityFactory public async Task Execute( IReadOnlyList objects, SendInfo sendInfo, - Action? onOperationProgressed = null, + IProgress onOperationProgressed, CancellationToken ct = default ) { diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 239107225..3973c19ef 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -53,18 +53,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index a6443a804..d649fb22e 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )", - "Speckle.Sdk": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[3.1.0-dev.158, )" } }, "speckle.connectors.logging": { @@ -385,18 +385,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Connectors.Utils/Operations/ReceiveOperation.cs b/Sdk/Speckle.Connectors.Utils/Operations/ReceiveOperation.cs new file mode 100644 index 000000000..e69de29bb diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index 97d9e2773..a1ee4801e 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -350,7 +350,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.146, )" + "Speckle.Objects": "[3.1.0-dev.158, )" } }, "speckle.testing": { @@ -380,18 +380,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 3b2ce2128..0d013b54a 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -50,11 +50,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "xuv5LaU6j8ODGHyClHbbK78bOJid8LGuwfVcEega1q3sYwmLWOWIDP9lO0QA1tyctE+2CZDH3sOUChleAFC4fg==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.146" + "Speckle.Sdk": "3.1.0-dev.158" } }, "GraphQL.Client": { @@ -319,9 +319,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.146, )", - "resolved": "3.1.0-dev.146", - "contentHash": "vNaWJkt7/xcIH/CraOrEumGn8A6gAlyl1RHfRI8B8qAGylSlEhuvuBSatS1gUPI35p9omO63yYQFKaIKEIsa3Q==", + "requested": "[3.1.0-dev.158, )", + "resolved": "3.1.0-dev.158", + "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", From 794af5e50146194b7656fa3781d428a2f32b7f98 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 9 Oct 2024 16:59:30 +0100 Subject: [PATCH 37/62] fix: adds whatever support we can for curves inside blocks by pre transforming the raw elements --- .../Receive/RevitHostObjectBuilder.cs | 67 ++++++++++++++----- .../LocalToGlobalToDirectShapeConverter.cs | 9 ++- .../Instances/LocalToGlobalMap.cs | 17 ++++- 3 files changed, 72 insertions(+), 21 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 3eee3faeb..1a9c37d89 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -10,20 +10,20 @@ using Speckle.Converters.Common.Objects; using Speckle.Converters.RevitShared; using Speckle.Converters.RevitShared.Helpers; -using Speckle.Converters.RevitShared.Services; using Speckle.Converters.RevitShared.Settings; using Speckle.DoubleNumerics; +using Speckle.Objects; using Speckle.Objects.Geometry; using Speckle.Sdk; using Speckle.Sdk.Logging; using Speckle.Sdk.Models; +using Transform = Speckle.Objects.Other.Transform; namespace Speckle.Connectors.Revit.Operations.Receive; internal sealed class RevitHostObjectBuilder : IHostObjectBuilder, IDisposable { private readonly IRootToHostConverter _converter; - private readonly ScalingServiceToHost _scalingService; private readonly IConverterSettingsStore _converterSettings; private readonly RevitToHostCacheSingleton _revitToHostCacheSingleton; private readonly ITransactionManager _transactionManager; @@ -50,7 +50,6 @@ public RevitHostObjectBuilder( RootObjectUnpacker rootObjectUnpacker, ILogger logger, RevitToHostCacheSingleton revitToHostCacheSingleton, - ScalingServiceToHost scalingService, ITypedConverter<(Base atomicObject, List matrix), DirectShape> localToGlobalDirectShapeConverter ) { @@ -63,7 +62,6 @@ public RevitHostObjectBuilder( _rootObjectUnpacker = rootObjectUnpacker; _logger = logger; _revitToHostCacheSingleton = revitToHostCacheSingleton; - _scalingService = scalingService; _localToGlobalDirectShapeConverter = localToGlobalDirectShapeConverter; _activityFactory = activityFactory; } @@ -88,7 +86,7 @@ CancellationToken cancellationToken var baseGroupName = $"Project {projectName}: Model {modelName}"; // TODO: unify this across connectors! onOperationProgressed?.Invoke("Converting", null); - using var activity = _activityFactory.Start("Build"); + _activityFactory.Start("Build"); // 0 - Clean then Rock n Roll! 🎸 { @@ -114,31 +112,44 @@ CancellationToken cancellationToken ); // 2 - Bake materials - _transactionManager.StartTransaction(true, "Baking materials"); if (unpackedRoot.RenderMaterialProxies != null) { + _transactionManager.StartTransaction(true, "Baking materials"); _materialBaker.MapLayersRenderMaterials(unpackedRoot); var map = _materialBaker.BakeMaterials(unpackedRoot.RenderMaterialProxies, baseGroupName); // NOTE: do not set _contextStack.RenderMaterialProxyCache directly, things stop working. Ogu/Dim do not know why :) not a problem as we hopefully will refactor some of these hacks out. foreach (var kvp in map) { _revitToHostCacheSingleton.MaterialsByObjectId.Add(kvp.Key, kvp.Value); - } + } + _transactionManager.CommitTransaction(); } - _transactionManager.CommitTransaction(); // 3 - Bake objects - _transactionManager.StartTransaction(true, "Baking objects"); - var conversionResults = BakeObjects(localToGlobalMaps, onOperationProgressed, cancellationToken); - _transactionManager.CommitTransaction(); + (HostObjectBuilderResult builderResult, List<(DirectShape res, string applicationId)> postBakePaintTargets) + conversionResults; + { + _activityFactory.Start("Baking objects"); + _transactionManager.StartTransaction(true, "Baking objects"); + conversionResults = BakeObjects(localToGlobalMaps, onOperationProgressed, cancellationToken); + _transactionManager.CommitTransaction(); + } + // 4 - Paint solids + { + _activityFactory.Start("Painting solids"); + _transactionManager.StartTransaction(true, "Painting solids"); + PostBakePaint(conversionResults.postBakePaintTargets); + _transactionManager.CommitTransaction(); + } - _transactionManager.StartTransaction(true, "Painting"); - PostBakePaint(conversionResults.postBakePaintTargets); - _transactionManager.CommitTransaction(); + // 5 - Create group + { + _activityFactory.Start("Grouping"); + _transactionManager.StartTransaction(true, "Grouping"); + _groupBaker.BakeGroupForTopLevel(baseGroupName); + _transactionManager.CommitTransaction(); + } - _transactionManager.StartTransaction(true, "Grouping"); - _groupBaker.BakeGroupForTopLevel(baseGroupName); - _transactionManager.CommitTransaction(); return conversionResults.builderResult; } @@ -162,11 +173,28 @@ CancellationToken cancellationToken try { using var activity = _activityFactory.Start("BakeObject"); + + // POC hack of the ages: try to pre transform curves before baking + // we need to bypass the local to global converter as there we don't have access to what we want. that service will/should stop existing. + if (localToGlobalMap.AtomicObject is ITransformable transformable and ICurve && localToGlobalMap.Matrix.Count > 0 && localToGlobalMap.AtomicObject["units"] is string units) + { + ITransformable? newTransformable = null; + foreach (var mat in localToGlobalMap.Matrix) + { + transformable.TransformTo(new Transform(mat, units), out newTransformable); + } + + localToGlobalMap.AtomicObject = (newTransformable as Base)!; + localToGlobalMap.Matrix = new(); // flush out the list, as we've applied the transforms already + } + + // actual conversion happens here! var result = _converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed?.Invoke("Converting", (double)++count / localToGlobalMaps.Count); if (result is DirectShapeDefinitionWrapper) { + // direct shape creation happens here DirectShape directShapes = _localToGlobalDirectShapeConverter.Convert( (localToGlobalMap.AtomicObject, localToGlobalMap.Matrix) ); @@ -191,11 +219,16 @@ CancellationToken cancellationToken catch (Exception ex) when (!ex.IsFatal()) { conversionResults.Add(new(Status.ERROR, localToGlobalMap.AtomicObject, null, null, ex)); + _logger.LogError(ex, $"Failed to convert object of type {localToGlobalMap.AtomicObject.speckle_type}"); } } return (new(bakedObjectIds, conversionResults), postBakePaintTargets); } + /// + /// We're using this to assign materials to solids coming via the shape importer. + /// + /// private void PostBakePaint(List<(DirectShape res, string applicationId)> paintTargets) { foreach (var (res, applicationId) in paintTargets) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs index 514801305..22b83f811 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs @@ -7,7 +7,9 @@ namespace Speckle.Converters.RevitShared.ToSpeckle; /// +/// Converts local to global maps to direct shapes. /// Spirit of the LocalToGlobalMap, we can't pass that object directly here bc it lives in Connectors.Common which I (ogu) don't want to bother with it. +/// All this is poc that should be burned, once we enable proper block support to revit. /// public class LocalToGlobalToDirectShapeConverter : ITypedConverter<(Base atomicObject, List matrix), DB.DirectShape> @@ -29,9 +31,9 @@ public DB.DirectShape Convert((Base atomicObject, List matrix) target // 1- set ds category var category = target.atomicObject["category"] as string; var dsCategory = DB.BuiltInCategory.OST_GenericModel; - if (category is string categoryString) + if (category is not null) { - var res = Enum.TryParse($"OST_{categoryString}", out DB.BuiltInCategory cat); + var res = Enum.TryParse($"OST_{category}", out DB.BuiltInCategory cat); if (res) { var c = DB.Category.GetCategory(_converterSettings.Current.Document, cat); @@ -45,12 +47,13 @@ public DB.DirectShape Convert((Base atomicObject, List matrix) target // 2 - init DirectShape var result = DB.DirectShape.CreateElement(_converterSettings.Current.Document, new DB.ElementId(dsCategory)); + // If there is no transforms to be applied, use the simple way of creating direct shapes if (target.matrix.Count == 0) { var def = DB.DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document) .FindDefinition(target.atomicObject.applicationId ?? target.atomicObject.id); result.SetShape(def); - return result; + return result; // note fast exit here } // 3 - Transform the geometries diff --git a/Sdk/Speckle.Connectors.Common/Instances/LocalToGlobalMap.cs b/Sdk/Speckle.Connectors.Common/Instances/LocalToGlobalMap.cs index dbc88aea2..9e20fc111 100644 --- a/Sdk/Speckle.Connectors.Common/Instances/LocalToGlobalMap.cs +++ b/Sdk/Speckle.Connectors.Common/Instances/LocalToGlobalMap.cs @@ -4,4 +4,19 @@ namespace Speckle.Connectors.Common.Instances; -public record LocalToGlobalMap(TraversalContext TraversalContext, Base AtomicObject, List Matrix); +// Note: this was changed to a class with mutable props as in revit we need to pre-transform curves (native revit scaling does not support curves). +// public record LocalToGlobalMap(TraversalContext TraversalContext, Base AtomicObject, List Matrix); + +public class LocalToGlobalMap +{ + public LocalToGlobalMap(TraversalContext traversalContext, Base atomicObject, List matrix) + { + TraversalContext = traversalContext; + AtomicObject = atomicObject; + Matrix = matrix; + } + + public TraversalContext TraversalContext { get; set; } + public Base AtomicObject { get; set; } + public List Matrix { get; set; } +} From 685da9af3e327c50291ad7f79973618885232ead Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 9 Oct 2024 18:08:18 +0100 Subject: [PATCH 38/62] chore: package locks push --- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 54 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 57 +++++---- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 54 ++++----- .../packages.lock.json | 108 ++++++++---------- .../Speckle.Connectors.DUI/packages.lock.json | 52 ++++----- .../packages.lock.json | 48 ++++---- .../packages.lock.json | 52 ++++----- .../packages.lock.json | 51 ++++----- .../packages.lock.json | 48 ++++---- 36 files changed, 893 insertions(+), 1086 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index f10da576a..842688d3d 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -244,8 +244,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -253,7 +253,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -278,7 +278,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -308,33 +330,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index 3a7493dbd..cda3c4e1a 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -344,33 +366,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 5f6a88c71..9e40eb5af 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -344,33 +366,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index 67aa1d9db..dd9906a2d 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -309,7 +309,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -345,33 +367,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index e485efe76..1572991a0 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -309,33 +331,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 691417e09..d42e4343e 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -318,7 +318,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -354,33 +376,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index b8308f14f..f285f8cfd 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2022": { @@ -332,6 +333,27 @@ "Speckle.Revit.API": "[2022.0.2.1, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -359,39 +381,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2022.0.2.1", "contentHash": "IrLN4WyI2ix+g3zCpo7sX8zNB3FrtrdQ3E2RpceGVPNG00v8OfD+Kei7o1bn1u/ML46iBYRAr/JcsLbwfUQsBw==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 87711270e..6c3c7c43f 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2023": { @@ -332,6 +333,27 @@ "Speckle.Revit.API": "[2023.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -359,39 +381,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2023.0.0", "contentHash": "tq40eD7psgTbV+epNouYyqfo6+hEi7FmXZqcxEOsAV7zfYyWhL6Rt3vmojkWGNuerGbH6oRI6KIIxrnlCNb8Hw==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 091755b2f..6522c2a7b 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2024": { @@ -332,6 +333,27 @@ "Speckle.Revit.API": "[2024.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -359,39 +381,12 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2024.0.0", "contentHash": "a4dsvZ00ocvzTgCD6dUdydf0jIZDVcDhs6dUX9cv+y3aTDbU8rmzhYXWt8sThedIG+IPSVa0vHmAH9pKiJL3SQ==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 5553a5172..d673e7089 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -287,7 +287,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.revit2025": { @@ -297,6 +298,27 @@ "Speckle.Revit.API": "[2025.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -330,39 +352,12 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2025.0.0", "contentHash": "Hwf/3Ydc7KxvjgD9pSZKLSJRsFTsxYg95YyTm6f43hcsGjmk49GsLFQt921Z9OcvUVewOggQHcmBgti+P2EPHw==" }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index 0f0f0b253..a6a1b0c3f 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,7 +310,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.rhino7": { @@ -320,6 +321,27 @@ "Speckle.Converters.Common": "[1.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -353,33 +375,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index 2fc49a5cd..dfb81965d 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,7 +310,8 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.converters.rhino8": { @@ -320,6 +321,27 @@ "Speckle.Converters.Common": "[1.0.0, )" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -353,33 +375,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index 8564bdc58..7bee3a523 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -399,8 +399,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -408,7 +408,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -422,6 +422,27 @@ "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -455,33 +476,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index f20ada366..6597f2299 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -237,7 +237,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -257,33 +279,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 79b6ce524..36fc54507 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 945d1b482..9c442742e 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index a879f1d22..347cd9dbc 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -301,7 +301,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -337,33 +359,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 678bee37f..391a152cd 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -265,7 +265,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -301,33 +323,6 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index f6b13dff4..1a8754e78 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -282,7 +282,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -302,33 +324,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index d6e9bccaf..2fdf1761f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -363,7 +363,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -390,33 +412,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index d25dcd357..16d165c8b 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index d20d256f9..cafa7d989 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -363,7 +363,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -390,33 +412,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index 2db4582c0..c4116465a 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index c0baead61..df637180e 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -363,7 +363,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -390,33 +412,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 40c58beee..ac56fc44f 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index 96c32115c..77836e431 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -237,7 +237,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -257,33 +279,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 13a172ba9..73b97a2de 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -363,7 +363,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -390,33 +412,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 91727817b..4759f4c81 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index fb2148853..75a5fa1e1 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -273,7 +273,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "Microsoft.Extensions.Logging": { @@ -293,33 +315,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 5ddd2cbf5..3b6422493 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -351,13 +351,34 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "speckle.testing": { "type": "Project", "dependencies": { @@ -392,33 +413,6 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index 239c66d6f..f869b9d37 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -283,13 +283,34 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -317,33 +338,6 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", @@ -588,8 +582,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.dui": { @@ -597,13 +591,34 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.158, )", + "Speckle.Sdk": "[1.0.0, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -631,33 +646,6 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index aaa08deda..5c68e275b 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -48,24 +48,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "Speckle.Sdk": { - "type": "Direct", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "System.Threading.Tasks.Dataflow": { "type": "Direct", "requested": "[6.0.0, )", @@ -325,13 +307,34 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -352,15 +355,6 @@ "Microsoft.Extensions.Logging.Abstractions": "2.2.0", "Microsoft.Extensions.Options": "2.2.0" } - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } } } } diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 3973c19ef..0b2553313 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -51,33 +51,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "Speckle.Objects": { - "type": "Direct", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "Direct", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } - }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -329,6 +302,27 @@ "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index d649fb22e..af64e077a 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -342,13 +342,34 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )", - "Speckle.Sdk": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "speckle.testing": { "type": "Project", "dependencies": { @@ -382,33 +403,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index a1ee4801e..0b58df78b 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -350,7 +350,29 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.158, )" + "Speckle.Objects": "[1.0.0, )", + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" } }, "speckle.testing": { @@ -377,33 +399,6 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" - }, - "Speckle.Objects": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 0d013b54a..5c7659bcd 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -48,15 +48,6 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, - "Speckle.Objects": { - "type": "Direct", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "+YwCWAlEOVU3lgTCdf5TgrQkF4wTSTjcUbino/GpvG+4uzSwzVKQbEzK7LlO6N2y0h7R2jTwpIfeIbNxWk+Ppw==", - "dependencies": { - "Speckle.Sdk": "3.1.0-dev.158" - } - }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -305,6 +296,27 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.3" } }, + "speckle.objects": { + "type": "Project", + "dependencies": { + "Speckle.Sdk": "[1.0.0, )" + } + }, + "speckle.sdk": { + "type": "Project", + "dependencies": { + "GraphQL.Client": "[6.0.0, )", + "Microsoft.CSharp": "[4.7.0, )", + "Microsoft.Data.Sqlite": "[7.0.7, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", + "Microsoft.Extensions.Logging": "[2.2.0, )", + "Polly": "[7.2.3, )", + "Polly.Contrib.WaitAndRetry": "[1.1.1, )", + "Polly.Extensions.Http": "[3.0.0, )", + "Speckle.DoubleNumerics": "[4.0.1, )", + "Speckle.Newtonsoft.Json": "[13.0.2, )" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -316,24 +328,6 @@ "Microsoft.Extensions.Logging.Abstractions": "2.2.0", "Microsoft.Extensions.Options": "2.2.0" } - }, - "Speckle.Sdk": { - "type": "CentralTransitive", - "requested": "[3.1.0-dev.158, )", - "resolved": "3.1.0-dev.158", - "contentHash": "BvDSteT6AZJhjfcaGOI6UdMhqDBelAF9unY/Kks+LUXBqCnNuST9QQdOjvpI6tmBAUIpUZ81yldm2keJuaQErg==", - "dependencies": { - "GraphQL.Client": "6.0.0", - "Microsoft.CSharp": "4.7.0", - "Microsoft.Data.Sqlite": "7.0.7", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", - "Microsoft.Extensions.Logging": "2.2.0", - "Polly": "7.2.3", - "Polly.Contrib.WaitAndRetry": "1.1.1", - "Polly.Extensions.Http": "3.0.0", - "Speckle.DoubleNumerics": "4.0.1", - "Speckle.Newtonsoft.Json": "13.0.2" - } } } } From 48b4be68bdbc36b6f3b0bf2627891114d95a783d Mon Sep 17 00:00:00 2001 From: KatKatKateryna <89912278+KatKatKateryna@users.noreply.github.com> Date: Wed, 9 Oct 2024 18:09:15 +0100 Subject: [PATCH 39/62] add await (#294) --- .../Operations/Receive/ArcGISHostObjectBuilder.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs index 5ddbfc914..2b98a8300 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Receive/ArcGISHostObjectBuilder.cs @@ -142,13 +142,15 @@ obj is GisNonGeometricFeature // 2.2. Write groups of objects to Datasets onOperationProgressed.Report(new("Writing to Database", null)); await QueuedTask - .Run(() => + .Run(async () => { - _featureClassUtils.CreateDatasets( - conversionTracker, - convertedGroups, - (s, progres) => onOperationProgressed.Report(new(s, progres)) - ); + await _featureClassUtils + .CreateDatasets( + conversionTracker, + convertedGroups, + (s, progres) => onOperationProgressed.Report(new(s, progres)) + ) + .ConfigureAwait(false); }) .ConfigureAwait(false); From e153eebe871ad9bc8e39199b1a4b399611db1bcd Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 9 Oct 2024 18:34:50 +0100 Subject: [PATCH 40/62] chore: formatting --- .../Receive/RevitHostObjectBuilder.cs | 55 +++++++++++-------- .../Receive/RhinoHostObjectBuilder.cs | 4 +- .../Geometry/IRawEncodedObjectConverter.cs | 19 ++++--- .../Raw/Geometry/MeshConverterToHost.cs | 12 ++-- .../LocalToGlobalToDirectShapeConverter.cs | 9 +-- .../ToHost/Raw/BrepXToHostConverter.cs | 12 ++-- .../TopLevel/BrepXToHostTopLevelConverter.cs | 5 +- .../ToSpeckle/Encoding/RawEncodingCreator.cs | 16 +++--- .../ToSpeckle/Meshing/DisplayMeshExtractor.cs | 9 +-- .../ToSpeckle/Raw/BrepToSpeckleConverter.cs | 2 +- .../BrepObjectToSpeckleTopLevelConverter.cs | 3 +- ...trusionObjectToSpeckleTopLevelConverter.cs | 5 +- .../SubDObjectToSpeckleTopLevelConverter.cs | 5 +- .../FileOps/TempFileProvider.cs | 6 +- 14 files changed, 90 insertions(+), 72 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index be0f44ccb..1d6147dc1 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -85,10 +85,10 @@ CancellationToken cancellationToken ) { var baseGroupName = $"Project {projectName}: Model {modelName}"; // TODO: unify this across connectors! - + onOperationProgressed.Report(new("Converting", null)); using var activity = _activityFactory.Start("Build"); - + // 0 - Clean then Rock n Roll! 🎸 { _activityFactory.Start("Pre receive clean"); @@ -101,7 +101,7 @@ CancellationToken cancellationToken { _logger.LogError(ex, "Failed to clean up before receive in Revit"); } - + _transactionManager.CommitTransaction(); } @@ -111,7 +111,7 @@ CancellationToken cancellationToken unpackedRoot.DefinitionProxies, unpackedRoot.ObjectsToConvert.ToList() ); - + // 2 - Bake materials if (unpackedRoot.RenderMaterialProxies != null) { @@ -121,20 +121,22 @@ CancellationToken cancellationToken foreach (var kvp in map) { _revitToHostCacheSingleton.MaterialsByObjectId.Add(kvp.Key, kvp.Value); - } + } _transactionManager.CommitTransaction(); } // 3 - Bake objects - (HostObjectBuilderResult builderResult, List<(DirectShape res, string applicationId)> postBakePaintTargets) - conversionResults; + ( + HostObjectBuilderResult builderResult, + List<(DirectShape res, string applicationId)> postBakePaintTargets + ) conversionResults; { _activityFactory.Start("Baking objects"); _transactionManager.StartTransaction(true, "Baking objects"); conversionResults = BakeObjects(localToGlobalMaps, onOperationProgressed, cancellationToken); _transactionManager.CommitTransaction(); } - + // 4 - Paint solids { _activityFactory.Start("Painting solids"); @@ -142,20 +144,22 @@ CancellationToken cancellationToken PostBakePaint(conversionResults.postBakePaintTargets); _transactionManager.CommitTransaction(); } - + // 5 - Create group { _activityFactory.Start("Grouping"); _transactionManager.StartTransaction(true, "Grouping"); _groupBaker.BakeGroupForTopLevel(baseGroupName); - _transactionManager.CommitTransaction(); + _transactionManager.CommitTransaction(); } - - + return conversionResults.builderResult; } - private (HostObjectBuilderResult builderResult, List<(DirectShape res, string applicationId)> postBakePaintTargets) BakeObjects( + private ( + HostObjectBuilderResult builderResult, + List<(DirectShape res, string applicationId)> postBakePaintTargets + ) BakeObjects( List localToGlobalMaps, IProgress onOperationProgressed, CancellationToken cancellationToken @@ -177,7 +181,11 @@ CancellationToken cancellationToken // POC hack of the ages: try to pre transform curves before baking // we need to bypass the local to global converter as there we don't have access to what we want. that service will/should stop existing. - if (localToGlobalMap.AtomicObject is ITransformable transformable and ICurve && localToGlobalMap.Matrix.Count > 0 && localToGlobalMap.AtomicObject["units"] is string units) + if ( + localToGlobalMap.AtomicObject is ITransformable transformable and ICurve + && localToGlobalMap.Matrix.Count > 0 + && localToGlobalMap.AtomicObject["units"] is string units + ) { ITransformable? newTransformable = null; foreach (var mat in localToGlobalMap.Matrix) @@ -188,7 +196,7 @@ CancellationToken cancellationToken localToGlobalMap.AtomicObject = (newTransformable as Base)!; localToGlobalMap.Matrix = new(); // flush out the list, as we've applied the transforms already } - + // actual conversion happens here! var result = _converter.Convert(localToGlobalMap.AtomicObject); onOperationProgressed.Report(new("Converting", (double)++count / localToGlobalMaps.Count)); @@ -201,19 +209,21 @@ CancellationToken cancellationToken bakedObjectIds.Add(directShapes.UniqueId); _groupBaker.AddToTopLevelGroup(directShapes); - + if (localToGlobalMap.AtomicObject is IRawEncodedObject and Base myBase) { postBakePaintTargets.Add((directShapes, myBase.applicationId ?? myBase.id)); } - + conversionResults.Add( new(Status.SUCCESS, localToGlobalMap.AtomicObject, directShapes.UniqueId, "Direct Shape") ); } else { - throw new SpeckleConversionException($"Failed to cast {result.GetType()} to direct shape definition wrapper."); + throw new SpeckleConversionException( + $"Failed to cast {result.GetType()} to direct shape definition wrapper." + ); } } catch (Exception ex) when (!ex.IsFatal()) @@ -244,7 +254,7 @@ private void PostBakePaint(List<(DirectShape res, string applicationId)> paintTa { continue; } - + // NOTE: some geometries fail to convert as solids, and the api defaults back to meshes (from the shape importer). These cannot be painted, so don't bother. foreach (var geo in elGeometry) { @@ -258,12 +268,11 @@ private void PostBakePaint(List<(DirectShape res, string applicationId)> paintTa } } } - + private void PreReceiveDeepClean(string baseGroupName) { - DirectShapeLibrary - .GetDirectShapeLibrary(_converterSettings.Current.Document).Reset(); // Note: this needs to be cleared, as it is being used in the converter - + DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document).Reset(); // Note: this needs to be cleared, as it is being used in the converter + _revitToHostCacheSingleton.MaterialsByObjectId.Clear(); // Massive hack! _groupBaker.PurgeGroups(baseGroupName); _materialBaker.PurgeMaterials(baseGroupName); diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs index 16badb0f1..d0d43edbb 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs @@ -141,13 +141,13 @@ CancellationToken cancellationToken { var guid = BakeObject(geometryBase, obj, layerIndex); conversionIds.Add(guid.ToString()); - } + } else if (result is List geometryBases) // one to many raw encoding case { // NOTE: I'm unhappy about this case (dim). It's needed as the raw encoder approach can hypothetically return // multiple "geometry bases" - but this is not a fallback conversion. // EXTRA NOTE: Oguzhan says i shouldn't be unhappy about this - it's a legitimate case - // EXTRA EXTRA NOTE: TY Ogu, i am no longer than unhappy about it. It's legit "mess". + // EXTRA EXTRA NOTE: TY Ogu, i am no longer than unhappy about it. It's legit "mess". foreach (var gb in geometryBases) { var guid = BakeObject(gb, obj, layerIndex); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index 98db349ff..f86dbf8fd 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -39,27 +39,30 @@ RevitToHostCacheSingleton revitToHostCacheSingleton DB.ElementId materialId = DB.ElementId.InvalidElementId; if ( - _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue(targetAsBase.applicationId ?? targetAsBase.id, out var mappedElementId) + _revitToHostCacheSingleton.MaterialsByObjectId.TryGetValue( + targetAsBase.applicationId ?? targetAsBase.id, + out var mappedElementId + ) ) { materialId = mappedElementId; } - + if (materialId == DB.ElementId.InvalidElementId) { return shapeImportResult.ToList(); // exit fast if there's no material id associated with this object } - // check whether the results have any meshes inside - if yes, it means the shape importer produced a subpar result. - // as we cannot paint meshes later (as you can solid faces), we need to create them now. - // we'll default to using the display value of the original object as it's a better fallback. - // note: if you're tempted to try and re-mesh the shape importer's meshes, don't - they are garbage. + // check whether the results have any meshes inside - if yes, it means the shape importer produced a subpar result. + // as we cannot paint meshes later (as you can solid faces), we need to create them now. + // we'll default to using the display value of the original object as it's a better fallback. + // note: if you're tempted to try and re-mesh the shape importer's meshes, don't - they are garbage. var hasMesh = shapeImportResult.Any(o => o is DB.Mesh); if (!hasMesh) { return shapeImportResult.ToList(); } - + var displayValue = targetAsBase.TryGetDisplayValue().NotNull(); var returnList = new List(); foreach (var mesh in displayValue) @@ -67,7 +70,7 @@ RevitToHostCacheSingleton revitToHostCacheSingleton mesh.applicationId = targetAsBase.applicationId ?? targetAsBase.id; // to properly map materials returnList.AddRange(_meshConverter.Convert(mesh)); } - + return returnList; } } diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs index 9d8cb325d..cd6d9be81 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/MeshConverterToHost.cs @@ -13,7 +13,8 @@ public class MeshConverterToHost : ITypedConverter arr, string units) XYZ[] points = new XYZ[arr.Count / 3]; var fTypeId = _scalingServiceToHost.UnitsToNative(units) ?? UnitTypeId.Meters; - + for (int i = 2, k = 0; i < arr.Count; i += 3) { points[k++] = new XYZ( - _scalingServiceToHost.ScaleToNative(arr[i - 2], fTypeId), + _scalingServiceToHost.ScaleToNative(arr[i - 2], fTypeId), _scalingServiceToHost.ScaleToNative(arr[i - 1], fTypeId), - _scalingServiceToHost.ScaleToNative(arr[i], fTypeId)); + _scalingServiceToHost.ScaleToNative(arr[i], fTypeId) + ); } return points; diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs index 22b83f811..c33972225 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/LocalToGlobalToDirectShapeConverter.cs @@ -46,16 +46,17 @@ public DB.DirectShape Convert((Base atomicObject, List matrix) target // 2 - init DirectShape var result = DB.DirectShape.CreateElement(_converterSettings.Current.Document, new DB.ElementId(dsCategory)); - + // If there is no transforms to be applied, use the simple way of creating direct shapes if (target.matrix.Count == 0) { - var def = DB.DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document) + var def = DB + .DirectShapeLibrary.GetDirectShapeLibrary(_converterSettings.Current.Document) .FindDefinition(target.atomicObject.applicationId ?? target.atomicObject.id); result.SetShape(def); return result; // note fast exit here } - + // 3 - Transform the geometries DB.Transform combinedTransform = DB.Transform.Identity; @@ -68,7 +69,7 @@ public DB.DirectShape Convert((Base atomicObject, List matrix) target combinedTransform = combinedTransform.Multiply(revitTransform); } } - + var transformedGeometries = DB.DirectShape.CreateGeometryInstance( _converterSettings.Current.Document, target.atomicObject.applicationId ?? target.atomicObject.id, diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs index b5f5b4e06..780086b26 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs @@ -4,28 +4,26 @@ namespace Speckle.Converters.Rhino.ToHost.Raw; -public class BrepXToHostConverter: ITypedConverter> +public class BrepXToHostConverter : ITypedConverter> { public List Convert(SOG.BrepX target) => RawEncodingToHost.Convert(target); } -public class SubDXToHostConverter: ITypedConverter> +public class SubDXToHostConverter : ITypedConverter> { public List Convert(SOG.SubDX target) => RawEncodingToHost.Convert(target); } -public class ExtrusionElonMuskXToHostConverter: ITypedConverter> +public class ExtrusionElonMuskXToHostConverter : ITypedConverter> { public List Convert(SOG.ExtrusionX target) => RawEncodingToHost.Convert(target); } - - public static class RawEncodingToHost { public static List Convert(SOG.IRawEncodedObject target) { - // note: I am not sure that we're going to have other encoding formats, but who knows. + // note: I am not sure that we're going to have other encoding formats, but who knows. switch (target.encodedValue.format) { case SO.RawEncodingFormats.RHINO_3DM: @@ -34,7 +32,7 @@ public static class RawEncodingToHost throw new SpeckleConversionException($"Unsupported brep encoding format: {target.encodedValue.format}"); } } - + private static List Handle3dm(SOG.IRawEncodedObject target) { var bytes = System.Convert.FromBase64String(target.encodedValue.contents); diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs index af264c492..08f1c6902 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/TopLevel/BrepXToHostTopLevelConverter.cs @@ -1,5 +1,6 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; + namespace Speckle.Converters.Rhino.ToHost.TopLevel; [NameAndRankValue(nameof(SOG.BrepX), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] @@ -23,7 +24,8 @@ public SubDXToHostTopLevelConverter( } [NameAndRankValue(nameof(SOG.ExtrusionX), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] -public class ExtrusionXToHostTopLevelConverter : SpeckleToHostGeometryBaseTopLevelConverter> +public class ExtrusionXToHostTopLevelConverter + : SpeckleToHostGeometryBaseTopLevelConverter> { public ExtrusionXToHostTopLevelConverter( IConverterSettingsStore settingsStore, @@ -31,4 +33,3 @@ public ExtrusionXToHostTopLevelConverter( ) : base(settingsStore, geometryBaseConverter) { } } - diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs index f398e6942..c8475723b 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Encoding/RawEncodingCreator.cs @@ -8,19 +8,19 @@ internal static class RawEncodingCreator { public static SO.RawEncoding Encode(RG.GeometryBase target, RhinoDoc doc) { - // note: this way works too, but we need to write the file to disk before reading it back out. + // note: this way works too, but we need to write the file to disk before reading it back out. // using var doc = RhinoDoc.CreateHeadless(default); // doc.ModelUnitSystem = _settingsStore.Current.Document.ModelUnitSystem; // doc.ModelAbsoluteTolerance = _settingsStore.Current.Document.ModelAbsoluteTolerance; // doc.ModelAngleToleranceRadians = _settingsStore.Current.Document.ModelAngleToleranceRadians; // doc.Objects.Add(target); - + // var tempFile = TempFileProvider.GetTempFile(_speckleApplication.Slug, "3dm"); // doc.Write3dmFile(tempFile, new FileWriteOptions() { IncludeRenderMeshes = false, WriteGeometryOnly = true, IncludeHistory = false, WriteUserData = false}); // var fileBytes = System.Convert.ToBase64String(File.ReadAllBytes(tempFile)); // var brepXEncoding = new SOG.BrepXEncoding() { contents = fileBytes, format = "3dm" }; // return brepXEncoding; - + // note: this way works probably better as we don't need to write the file to disk and read it back in. using var file = new File3dm(); switch (target) @@ -28,23 +28,23 @@ public static SO.RawEncoding Encode(RG.GeometryBase target, RhinoDoc doc) case RG.Brep b: file.Objects.AddBrep(b); break; - case RG.Extrusion e: + case RG.Extrusion e: file.Objects.AddExtrusion(e); break; - case RG.SubD d: + case RG.SubD d: file.Objects.AddSubD(d); break; default: throw new SpeckleConversionException($"Unsupported type for encoding: {target.GetType().FullName}"); } - + file.Settings.ModelUnitSystem = doc.ModelUnitSystem; file.Settings.ModelAbsoluteTolerance = doc.ModelAbsoluteTolerance; file.Settings.ModelAngleToleranceRadians = doc.ModelAngleToleranceRadians; - + var fb = file.ToByteArray(new File3dmWriteOptions() { SaveUserData = false, Version = 7 }); var fbString = System.Convert.ToBase64String(fb); var bxe = new SO.RawEncoding() { contents = fbString, format = SO.RawEncodingFormats.RHINO_3DM }; return bxe; - } + } } diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs index b583b4258..63e9023b5 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Meshing/DisplayMeshExtractor.cs @@ -8,7 +8,7 @@ public static class DisplayMeshExtractor public static RG.Mesh GetDisplayMesh(RhinoObject obj) { // note: unsure this is nice, we get bigger meshes - we should to benchmark (conversion time vs size tradeoffs) - var renderMeshes = obj.GetMeshes(RG.MeshType.Render); + var renderMeshes = obj.GetMeshes(RG.MeshType.Render); if (renderMeshes.Length == 0) { switch (obj) @@ -23,14 +23,15 @@ public static RG.Mesh GetDisplayMesh(RhinoObject obj) #pragma warning disable CA2000 var mesh = RG.Mesh.CreateFromSubD(subDObject.Geometry as RG.SubD, 0); #pragma warning restore CA2000 - renderMeshes = [ mesh ]; + renderMeshes = [mesh]; break; default: throw new SpeckleConversionException( - $"Unsupported object for display mesh generation {obj.GetType().FullName}"); + $"Unsupported object for display mesh generation {obj.GetType().FullName}" + ); } } - + var joinedMesh = new RG.Mesh(); joinedMesh.Append(renderMeshes); return joinedMesh; diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs index dd77108e0..68a364281 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs @@ -101,7 +101,7 @@ public SOG.Brep Convert(RG.Brep target) Trims = new(target.Trims.Count), Faces = new(target.Faces.Count) }; - + // Brep non-geometry types ConvertBrepFaces(target, speckleBrep); ConvertBrepEdges(target, speckleBrep); diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs index 0e245af63..c79440bfe 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/BrepObjectToSpeckleTopLevelConverter.cs @@ -15,7 +15,8 @@ public class BrepObjectToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter public BrepObjectToSpeckleTopLevelConverter( ITypedConverter meshConverter, - IConverterSettingsStore settingsStore) + IConverterSettingsStore settingsStore + ) { _meshConverter = meshConverter; _settingsStore = settingsStore; diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs index ad47c9991..255ed0162 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/ExtrusionObjectToSpeckleTopLevelConverter.cs @@ -13,9 +13,10 @@ public class ExtrusionObjectToSpeckleTopLevelConverter : IToSpeckleTopLevelConve private readonly ITypedConverter _meshConverter; private readonly IConverterSettingsStore _settingsStore; - public ExtrusionObjectToSpeckleTopLevelConverter( + public ExtrusionObjectToSpeckleTopLevelConverter( ITypedConverter meshConverter, - IConverterSettingsStore settingsStore) + IConverterSettingsStore settingsStore + ) { _meshConverter = meshConverter; _settingsStore = settingsStore; diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs index e2a1e2da9..f86839467 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/TopLevel/SubDObjectToSpeckleTopLevelConverter.cs @@ -13,9 +13,10 @@ public class SubDObjectToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter private readonly ITypedConverter _meshConverter; private readonly IConverterSettingsStore _settingsStore; - public SubDObjectToSpeckleTopLevelConverter( + public SubDObjectToSpeckleTopLevelConverter( ITypedConverter meshConverter, - IConverterSettingsStore settingsStore) + IConverterSettingsStore settingsStore + ) { _meshConverter = meshConverter; _settingsStore = settingsStore; diff --git a/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs b/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs index 0d588c913..6d627e151 100644 --- a/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs +++ b/Sdk/Speckle.Converters.Common/FileOps/TempFileProvider.cs @@ -1,6 +1,6 @@ namespace Speckle.Converters.Common.FileOps; -public static class TempFileProvider // note should be in connector, and connector should nuke its folder on startup +public static class TempFileProvider // note should be in connector, and connector should nuke its folder on startup { public static string GetTempFile(string appSlug, string extension) { @@ -9,7 +9,7 @@ public static string GetTempFile(string appSlug, string extension) return filePath; } - public static void CleanTempFolder(string appSlug) // note, not used? + public static void CleanTempFolder(string appSlug) // note, not used? { var folderPath = GetTempFolderPath(appSlug); Directory.Delete(folderPath, true); @@ -20,5 +20,5 @@ private static string GetTempFolderPath(string appSlug) var folderPath = Path.Combine(Path.GetTempPath(), "Speckle", appSlug); Directory.CreateDirectory(folderPath); return folderPath; - } + } } From eed7f913e5f4f6382cba90820752a84514c05e14 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 9 Oct 2024 18:37:42 +0100 Subject: [PATCH 41/62] chore: more formatting --- .../Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs | 2 +- .../SpeckleToHostGeometryBaseTopLevelConverter.cs | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs index 1cf1bacc9..1880b8c40 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/GlobalUsings.cs @@ -1,4 +1,4 @@ global using RG = Rhino.Geometry; +global using SO = Speckle.Objects.Other; global using SOG = Speckle.Objects.Geometry; global using SOP = Speckle.Objects.Primitive; -global using SO = Speckle.Objects.Other; diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs index 02c5dfdd9..c2b0030ce 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/SpeckleToHostGeometryBaseTopLevelConverter.cs @@ -28,9 +28,10 @@ public object Convert(Base target) if (result is null) { throw new SpeckleConversionException( - $"Geometry base converter returned null for base object of type {target.speckle_type}"); + $"Geometry base converter returned null for base object of type {target.speckle_type}" + ); } - + var units = castedBase["units"] as string; if (result is RG.GeometryBase geometryBase && units is not null) { From 460719e0f02905a935f2e34a625b00354d20c52b Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 10 Oct 2024 09:21:05 +0100 Subject: [PATCH 42/62] Clean up attributes for logs/traces and user id correlation (#285) * Clean up attributes for logs/traces * fmt * add tags for factory * builds * Move sending activity to get account info centralized * formatting * remove global user id * use AsyncLocal and scope to scope userId * remove user id as we don't know at initialization time --- .../Properties/launchSettings.json | 2 +- .../Operations/Send/RhinoRootObjectBuilder.cs | 4 +- Directory.Packages.props | 2 +- Sdk/Speckle.Connectors.Common/Connector.cs | 2 +- .../ConnectorActivityFactory.cs | 4 +- .../Operations/ReceiveOperation.cs | 2 + .../Operations/RootObjectSender.cs | 9 +++- .../Operations/SendOperation.cs | 10 +--- .../ActivityScopeExtensions.cs | 33 +++++++++++++ Sdk/Speckle.Connectors.Logging/Consts.cs | 1 + .../Internal/LogBuilder.cs | 48 ++++--------------- .../Internal/TracingBuilder.cs | 5 +- .../LoggingActivityFactory.cs | 6 ++- 13 files changed, 71 insertions(+), 57 deletions(-) create mode 100644 Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/Properties/launchSettings.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/Properties/launchSettings.json index af44b2ac4..d842b29f8 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/Properties/launchSettings.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/Properties/launchSettings.json @@ -3,7 +3,7 @@ "Speckle.Connectors.Rhino8": { "commandName": "Executable", "executablePath": "C:\\Program Files\\Rhino 8\\System\\Rhino.exe", - "commandLineArgs": "\"$(TargetDir)Speckle.Connectors.Rhino8.rhp\"" + "commandLineArgs": "\"$(TargetDir)Speckle.Connectors.Rhino8.rhp\" /netfx" } } } diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs index 878308cce..ae9e34f36 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Send/RhinoRootObjectBuilder.cs @@ -123,7 +123,9 @@ public async Task Build( { // 4 - Unpack the render material proxies rootObjectCollection[ProxyKeys.RENDER_MATERIAL] = _materialUnpacker.UnpackRenderMaterial(atomicObjects); - + } + using (var _ = _activityFactory.Start("UnpackColors")) + { // 5 - Unpack the color proxies rootObjectCollection[ProxyKeys.COLOR] = _colorUnpacker.UnpackColors(atomicObjects, versionLayers.ToList()); } diff --git a/Directory.Packages.props b/Directory.Packages.props index 937630511..a94d7b062 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -42,6 +42,6 @@ - + diff --git a/Sdk/Speckle.Connectors.Common/Connector.cs b/Sdk/Speckle.Connectors.Common/Connector.cs index fbe971ac6..7b7b314b5 100644 --- a/Sdk/Speckle.Connectors.Common/Connector.cs +++ b/Sdk/Speckle.Connectors.Common/Connector.cs @@ -24,8 +24,8 @@ HostAppVersion version TypeLoader.Initialize(typeof(Base).Assembly, typeof(Point).Assembly); var (logging, tracing) = Observability.Initialize( + application.Name + " " + HostApplications.GetVersion(version), application.Slug, - HostApplications.GetVersion(version), Assembly.GetExecutingAssembly().GetVersion(), new( #if DEBUG || LOCAL diff --git a/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs b/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs index c9c30ba9e..b69ec0f2d 100644 --- a/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs +++ b/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs @@ -9,11 +9,13 @@ public sealed class ConnectorActivityFactory : ISdkActivityFactory, IDisposable { private readonly LoggingActivityFactory _loggingActivityFactory = new(); + public void SetTag(string key, object? value) => _loggingActivityFactory.SetTag(key, value); + public void Dispose() => _loggingActivityFactory.Dispose(); public ISdkActivity? Start(string? name = default, [CallerMemberName] string source = "") { - var activity = _loggingActivityFactory?.Start(name, source); + var activity = _loggingActivityFactory.Start(name, source); if (activity is null) { return null; diff --git a/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs index b45897974..a680d64f1 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/ReceiveOperation.cs @@ -1,4 +1,5 @@ using Speckle.Connectors.Common.Builders; +using Speckle.Connectors.Logging; using Speckle.Sdk.Api; using Speckle.Sdk.Credentials; using Speckle.Sdk.Logging; @@ -48,6 +49,7 @@ CancellationToken cancellationToken // 2 - Check account exist Account account = _accountService.GetAccountWithServerUrlFallback(receiveInfo.AccountId, receiveInfo.ServerUrl); using Client apiClient = _clientFactory.Create(account); + using var userScope = ActivityScope.SetTag(Consts.USER_ID, account.GetHashedEmail()); var version = await apiClient .Version.Get(receiveInfo.SelectedVersionId, receiveInfo.ModelId, receiveInfo.ProjectId, cancellationToken) diff --git a/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs b/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs index 86025d307..cffee904c 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/RootObjectSender.cs @@ -1,8 +1,10 @@ using Speckle.Connectors.Common.Caching; +using Speckle.Connectors.Logging; using Speckle.InterfaceGenerator; using Speckle.Sdk.Api; using Speckle.Sdk.Api.GraphQL.Inputs; using Speckle.Sdk.Credentials; +using Speckle.Sdk.Logging; using Speckle.Sdk.Models; using Speckle.Sdk.Transports; @@ -24,6 +26,7 @@ public sealed class RootObjectSender : IRootObjectSender private readonly IProgressDisplayManager _progressDisplayManager; private readonly IOperations _operations; private readonly IClientFactory _clientFactory; + private readonly ISdkActivityFactory _activityFactory; public RootObjectSender( IServerTransportFactory transportFactory, @@ -31,7 +34,8 @@ public RootObjectSender( AccountService accountService, IProgressDisplayManager progressDisplayManager, IOperations operations, - IClientFactory clientFactory + IClientFactory clientFactory, + ISdkActivityFactory activityFactory ) { _transportFactory = transportFactory; @@ -40,6 +44,7 @@ IClientFactory clientFactory _progressDisplayManager = progressDisplayManager; _operations = operations; _clientFactory = clientFactory; + _activityFactory = activityFactory; } /// @@ -59,6 +64,8 @@ IClientFactory clientFactory onOperationProgressed.Report(new("Uploading...", null)); Account account = _accountService.GetAccountWithServerUrlFallback(sendInfo.AccountId, sendInfo.ServerUrl); + using var userScope = ActivityScope.SetTag(Consts.USER_ID, account.GetHashedEmail()); + using var activity = _activityFactory.Start("SendOperation"); using var transport = _transportFactory.Create(account, sendInfo.ProjectId, 60, null); diff --git a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs index 24fecf55d..7ca24667d 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/SendOperation.cs @@ -1,6 +1,5 @@ using Speckle.Connectors.Common.Builders; using Speckle.Connectors.Common.Conversion; -using Speckle.Sdk.Logging; using Speckle.Sdk.Models; namespace Speckle.Connectors.Common.Operations; @@ -9,17 +8,11 @@ public sealed class SendOperation { private readonly IRootObjectBuilder _rootObjectBuilder; private readonly IRootObjectSender _baseObjectSender; - private readonly ISdkActivityFactory _activityFactory; - public SendOperation( - IRootObjectBuilder rootObjectBuilder, - IRootObjectSender baseObjectSender, - ISdkActivityFactory activityFactory - ) + public SendOperation(IRootObjectBuilder rootObjectBuilder, IRootObjectSender baseObjectSender) { _rootObjectBuilder = rootObjectBuilder; _baseObjectSender = baseObjectSender; - _activityFactory = activityFactory; } public async Task Execute( @@ -29,7 +22,6 @@ public async Task Execute( CancellationToken ct = default ) { - using var activity = _activityFactory.Start("SendOperation"); var buildResult = await _rootObjectBuilder .Build(objects, sendInfo, onOperationProgressed, ct) .ConfigureAwait(false); diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs new file mode 100644 index 000000000..c01121542 --- /dev/null +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs @@ -0,0 +1,33 @@ +using System.Diagnostics; +using OpenTelemetry; + +namespace Speckle.Connectors.Logging; + +public static class ActivityScope +{ + private static readonly AsyncLocal> s_tags = new(); + + public static IReadOnlyDictionary Tags => s_tags.Value; + + public static IDisposable SetTag(string key, string value) + { + s_tags.Value[key] = value; + return new TagScope(key); + } + + private sealed class TagScope(string key) : IDisposable + { + public void Dispose() => s_tags.Value.Remove(key); + } +} + +internal sealed class ActivityScopeProcessor : BaseProcessor +{ + public override void OnEnd(Activity data) + { + foreach (KeyValuePair keyValuePair in ActivityScope.Tags) + { + data.SetTag(keyValuePair.Key, keyValuePair.Value); + } + } +} diff --git a/Sdk/Speckle.Connectors.Logging/Consts.cs b/Sdk/Speckle.Connectors.Logging/Consts.cs index 1dcb0ae6f..2101db9e8 100644 --- a/Sdk/Speckle.Connectors.Logging/Consts.cs +++ b/Sdk/Speckle.Connectors.Logging/Consts.cs @@ -8,4 +8,5 @@ public static class Consts public const string OS_TYPE = "os.type"; public const string OS_SLUG = "os.slug"; public const string RUNTIME_NAME = "runtime.name"; + public const string USER_ID = "user.id"; } diff --git a/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs b/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs index 6c310289d..24b5aed65 100644 --- a/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs +++ b/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs @@ -1,7 +1,4 @@ -using System.Diagnostics; -using System.Reflection; -using System.Runtime.InteropServices; -using OpenTelemetry.Resources; +using OpenTelemetry.Resources; using Serilog; using Serilog.Exceptions; using Serilog.Extensions.Logging; @@ -18,16 +15,9 @@ public static LoggerProvider Initialize( ResourceBuilder resourceBuilder ) { - var fileVersionInfo = GetFileVersionInfo(); var serilogLogConfiguration = new LoggerConfiguration() .MinimumLevel.Is(SpeckleLogLevelUtility.GetLevel(speckleLogging?.MinimumLevel ?? SpeckleLogLevel.Warning)) .Enrich.FromLogContext() - .Enrich.WithProperty("version", fileVersionInfo.FileVersion) - .Enrich.WithProperty("productVersion", connectorVersion) - .Enrich.WithProperty("hostOs", DetermineHostOsSlug()) - .Enrich.WithProperty("hostOsVersion", Environment.OSVersion) - .Enrich.WithProperty("hostOsArchitecture", RuntimeInformation.ProcessArchitecture.ToString()) - .Enrich.WithProperty("runtime", RuntimeInformation.FrameworkDescription) .Enrich.WithExceptionDetails(); if (speckleLogging?.File is not null) @@ -54,11 +44,12 @@ ResourceBuilder resourceBuilder var logger = serilogLogConfiguration.CreateLogger(); logger - .ForContext("hostApplication", applicationAndVersion) + .ForContext("applicationAndVersion", applicationAndVersion) + .ForContext("connectorVersion", connectorVersion) .ForContext("userApplicationDataPath", SpecklePathProvider.UserApplicationDataPath()) .ForContext("installApplicationDataPath", SpecklePathProvider.InstallApplicationDataPath) .Information( - "Initialized logger inside {hostApplication}/{productVersion}/{version} for user {id}. Path info {userApplicationDataPath} {installApplicationDataPath}." + "Initialized logger inside {applicationAndVersion}/{connectorVersion}. Path info {userApplicationDataPath} {installApplicationDataPath}." ); #pragma warning disable CA2000 @@ -66,32 +57,6 @@ ResourceBuilder resourceBuilder #pragma warning restore CA2000 } - private static FileVersionInfo GetFileVersionInfo() - { - var assembly = Assembly.GetExecutingAssembly().Location; - return FileVersionInfo.GetVersionInfo(assembly); - } - - private static string DetermineHostOsSlug() - { - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) - { - return "Windows"; - } - - if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) - { - return "MacOS"; - } - - if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) - { - return "Linux"; - } - - return RuntimeInformation.OSDescription; - } - private static LoggerConfiguration InitializeOtelLogging( LoggerConfiguration serilogLogConfiguration, SpeckleOtelLogging speckleOtelLogging, @@ -102,6 +67,9 @@ ResourceBuilder resourceBuilder o.Protocol = OtlpProtocol.HttpProtobuf; o.LogsEndpoint = speckleOtelLogging.Endpoint; o.Headers = speckleOtelLogging.Headers ?? o.Headers; - o.ResourceAttributes = resourceBuilder.Build().Attributes.ToDictionary(x => x.Key, x => x.Value); + o.ResourceAttributes = resourceBuilder + .Build() + .Attributes.Concat(ActivityScope.Tags) + .ToDictionary(x => x.Key, x => x.Value); }); } diff --git a/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs b/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs index 183d165fa..be67b65a6 100644 --- a/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs +++ b/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs @@ -29,7 +29,10 @@ internal static class TracingBuilder tracerProviderBuilder = tracerProviderBuilder.AddConsoleExporter(); } - tracerProviderBuilder = tracerProviderBuilder.SetResourceBuilder(resourceBuilder).SetSampler(); + tracerProviderBuilder = tracerProviderBuilder + .SetResourceBuilder(resourceBuilder) + .SetSampler() + .AddProcessor(new ActivityScopeProcessor()); return tracerProviderBuilder.Build(); } diff --git a/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs b/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs index 708d1f6b0..cf99bffdd 100644 --- a/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs +++ b/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs @@ -10,10 +10,14 @@ public sealed class LoggingActivityFactory : IDisposable private readonly ActivitySource? _activitySource = new(TRACING_SOURCE, GetPackageVersion(Assembly.GetExecutingAssembly())); + private readonly Dictionary _tags = new(); + + public void SetTag(string key, object? value) => _tags[key] = value; + public LoggingActivity? Start(string? name = null, [CallerMemberName] string source = "") { //If you get a MissingManifestResourceException, Likely source or name is empty string, which is no good. - var activity = _activitySource?.StartActivity(name ?? source, ActivityKind.Client); + var activity = _activitySource?.StartActivity(name: name ?? source, kind: ActivityKind.Client, tags: _tags); if (activity is null) { return null; From bbd4beeafee7583d4070f746b495b04f4f90dec7 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Thu, 10 Oct 2024 09:34:42 +0100 Subject: [PATCH 43/62] fix: adds using statements to correctly dispose at end of the scope --- .../Operations/Receive/RevitHostObjectBuilder.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 1d6147dc1..355f6ffb9 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -131,7 +131,7 @@ CancellationToken cancellationToken List<(DirectShape res, string applicationId)> postBakePaintTargets ) conversionResults; { - _activityFactory.Start("Baking objects"); + using var _ = _activityFactory.Start("Baking objects"); _transactionManager.StartTransaction(true, "Baking objects"); conversionResults = BakeObjects(localToGlobalMaps, onOperationProgressed, cancellationToken); _transactionManager.CommitTransaction(); @@ -139,7 +139,7 @@ CancellationToken cancellationToken // 4 - Paint solids { - _activityFactory.Start("Painting solids"); + using var _ = _activityFactory.Start("Painting solids"); _transactionManager.StartTransaction(true, "Painting solids"); PostBakePaint(conversionResults.postBakePaintTargets); _transactionManager.CommitTransaction(); @@ -147,7 +147,7 @@ CancellationToken cancellationToken // 5 - Create group { - _activityFactory.Start("Grouping"); + using var _ = _activityFactory.Start("Grouping"); _transactionManager.StartTransaction(true, "Grouping"); _groupBaker.BakeGroupForTopLevel(baseGroupName); _transactionManager.CommitTransaction(); From 56d0eb0d0b63b353e96e7da80d7d2f80fd54fee4 Mon Sep 17 00:00:00 2001 From: KatKatKateryna <89912278+KatKatKateryna@users.noreply.github.com> Date: Thu, 10 Oct 2024 09:41:35 +0100 Subject: [PATCH 44/62] ArcGIS GroupLayers (#293) * treat all LayerContainers as Collections * account for all Symbols null exceptions * documenting the change --- .../Bindings/ArcGISSelectionBinding.cs | 15 ++++---- .../Bindings/ArcGISSendBinding.cs | 34 +++++-------------- .../HostApp/ArcGISColorManager.cs | 20 +++++++++++ .../Send/ArcGISRootObjectBuilder.cs | 6 ++-- .../Utils/MapMembersUtils.cs | 15 ++------ 5 files changed, 40 insertions(+), 50 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs index 44cb30e72..6ef531c23 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSelectionBinding.cs @@ -1,5 +1,6 @@ using ArcGIS.Desktop.Mapping; using ArcGIS.Desktop.Mapping.Events; +using Speckle.Connectors.ArcGIS.Utils; using Speckle.Connectors.DUI.Bindings; using Speckle.Connectors.DUI.Bridge; @@ -7,11 +8,13 @@ namespace Speckle.Connectors.ArcGIS.Bindings; public class ArcGISSelectionBinding : ISelectionBinding { + private readonly MapMembersUtils _mapMemberUtils; public string Name => "selectionBinding"; public IBrowserBridge Parent { get; } - public ArcGISSelectionBinding(IBrowserBridge parent) + public ArcGISSelectionBinding(IBrowserBridge parent, MapMembersUtils mapMemberUtils) { + _mapMemberUtils = mapMemberUtils; Parent = parent; var topLevelHandler = parent.TopLevelExceptionHandler; @@ -52,14 +55,8 @@ public SelectionInfo GetSelection() List allNestedMembers = new(); foreach (MapMember member in selectedMembers) { - if (member is GroupLayer group) - { - GetLayersFromGroup(group, allNestedMembers); - } - else - { - allNestedMembers.Add(member); - } + var layerMapMembers = _mapMemberUtils.UnpackMapLayers(selectedMembers); + allNestedMembers.AddRange(layerMapMembers); } List objectTypes = allNestedMembers diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs index 2e72ef14c..b7eb88c8f 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Bindings/ArcGISSendBinding.cs @@ -9,6 +9,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Speckle.Connectors.ArcGIS.Filters; +using Speckle.Connectors.ArcGIS.Utils; using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Cancellation; using Speckle.Connectors.Common.Operations; @@ -54,6 +55,7 @@ public sealed class ArcGISSendBinding : ISendBinding private List SubscribedLayers { get; set; } = new(); private List SubscribedTables { get; set; } = new(); + private readonly MapMembersUtils _mapMemberUtils; public ArcGISSendBinding( DocumentModelStore store, @@ -64,7 +66,8 @@ public ArcGISSendBinding( ISendConversionCache sendConversionCache, IOperationProgressManager operationProgressManager, ILogger logger, - IArcGISConversionSettingsFactory arcGisConversionSettingsFactory + IArcGISConversionSettingsFactory arcGisConversionSettingsFactory, + MapMembersUtils mapMemberUtils ) { _store = store; @@ -76,6 +79,7 @@ IArcGISConversionSettingsFactory arcGisConversionSettingsFactory _logger = logger; _topLevelExceptionHandler = parent.TopLevelExceptionHandler; _arcGISConversionSettingsFactory = arcGisConversionSettingsFactory; + _mapMemberUtils = mapMemberUtils; Parent = parent; Commands = new SendBindingUICommands(parent); @@ -275,36 +279,14 @@ private async Task GetIdsForStandaloneTablesRemovedEvent(StandaloneTableEventArg await RunExpirationChecks(true).ConfigureAwait(false); } - private void AddChangedNestedObjectIds(GroupLayer group) - { - ChangedObjectIds[group.URI] = 1; - foreach (var member in group.Layers) - { - if (member is GroupLayer subGroup) - { - AddChangedNestedObjectIds(subGroup); - } - else - { - ChangedObjectIds[member.URI] = 1; - } - } - } - private async Task GetIdsForMapPropertyChangedEvent(MapPropertyChangedEventArgs args) { foreach (Map map in args.Maps) { - foreach (MapMember member in map.Layers) + List allMapMembers = _mapMemberUtils.GetAllMapMembers(map); + foreach (MapMember member in allMapMembers) { - if (member is GroupLayer group) - { - AddChangedNestedObjectIds(group); - } - else - { - ChangedObjectIds[member.URI] = 1; - } + ChangedObjectIds[member.URI] = 1; } } await RunExpirationChecks(false).ConfigureAwait(false); diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs index bfa8db2f5..970feb224 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/HostApp/ArcGISColorManager.cs @@ -316,6 +316,11 @@ private void ProcessFeatureLayerColors(FeatureLayer layer, int displayPriority) int count = 1; using (RowCursor rowCursor = layer.Search()) { + // if layer doesn't have a valid data source (and the conversion likely failed), don't create a colorProxy + if (rowCursor is null) + { + return; + } while (rowCursor.MoveNext()) { string elementAppId = $"{layer.URI}_{count}"; @@ -451,6 +456,11 @@ private bool TryGetUniqueRendererColor( out int color ) { + if (uniqueRenderer.DefaultSymbol is null) + { + color = RbgToInt(255, 255, 255, 255); + return false; + } if (!TryGetSymbolColor(uniqueRenderer.DefaultSymbol.Symbol, out color)) // get default color { return false; @@ -493,6 +503,11 @@ out int color // set the group color to class symbol color if conditions are met if (groupConditionsMet) { + if (groupClass.Symbol is null) + { + color = RbgToInt(255, 255, 255, 255); + return false; + } if (!TryGetSymbolColor(groupClass.Symbol.Symbol, out color)) { return false; @@ -544,6 +559,11 @@ private bool TryGetGraduatedRendererColor( out int color ) { + if (graduatedRenderer.DefaultSymbol is null) + { + color = RbgToInt(255, 255, 255, 255); + return false; + } if (!TryGetSymbolColor(graduatedRenderer.DefaultSymbol.Symbol, out color)) // get default color { return false; diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs index 7384ae992..148d5ef99 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Operations/Send/ArcGISRootObjectBuilder.cs @@ -71,7 +71,7 @@ public async Task Build( List results = new(objects.Count); var cacheHitCount = 0; - List<(GroupLayer, Collection)> nestedGroups = new(); + List<(ILayerContainer, Collection)> nestedGroups = new(); // reorder selected layers by Table of Content (TOC) order List<(MapMember, int)> layersWithDisplayPriority = _mapMemberUtils.GetLayerDisplayPriority( @@ -112,7 +112,7 @@ public async Task Build( // don't use cache for group layers if ( - mapMember is not GroupLayer + mapMember is not ILayerContainer && _sendConversionCache.TryGetValue(sendInfo.ProjectId, applicationId, out ObjectReference? value) ) { @@ -121,7 +121,7 @@ mapMember is not GroupLayer } else { - if (mapMember is GroupLayer group) + if (mapMember is ILayerContainer group) { // group layer will always come before it's contained layers // keep active group last in the list diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/MapMembersUtils.cs b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/MapMembersUtils.cs index 95951cae3..f03092c5d 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/MapMembersUtils.cs +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/Utils/MapMembersUtils.cs @@ -1,4 +1,3 @@ -using ArcGIS.Desktop.Internal.Mapping; using ArcGIS.Desktop.Mapping; namespace Speckle.Connectors.ArcGIS.Utils; @@ -28,21 +27,13 @@ public List UnpackMapLayers(IEnumerable mapMembersToUnpack List mapMembers = new(); foreach (var layer in mapMembersToUnpack) { + mapMembers.Add(layer); switch (layer) { - case GroupLayer subGroup: - mapMembers.Add(layer); - var subGroupMapMembers = UnpackMapLayers(subGroup.Layers); - mapMembers.AddRange(subGroupMapMembers); - break; - case ILayerContainerInternal subLayerContainerInternal: - mapMembers.Add(layer); - var subLayerMapMembers = UnpackMapLayers(subLayerContainerInternal.InternalLayers); + case ILayerContainer subGroup: + var subLayerMapMembers = UnpackMapLayers(subGroup.Layers); mapMembers.AddRange(subLayerMapMembers); break; - default: - mapMembers.Add(layer); - break; } } From c251db709eb416f4e496be7558ef6192fff96cc5 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 10 Oct 2024 10:38:32 +0100 Subject: [PATCH 45/62] update sdk reference --- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 54 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 57 ++++----- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 54 +++++---- .../packages.lock.json | 108 ++++++++++-------- .../Speckle.Connectors.DUI/packages.lock.json | 52 +++++---- Directory.Packages.props | 4 +- .../packages.lock.json | 48 ++++---- .../packages.lock.json | 52 +++++---- .../packages.lock.json | 51 +++++---- .../packages.lock.json | 48 ++++---- 37 files changed, 1088 insertions(+), 895 deletions(-) diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index 842688d3d..e0e855e7d 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -244,8 +244,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -253,7 +253,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -278,29 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -330,6 +308,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index cda3c4e1a..c2fecfc1c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,29 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -366,6 +344,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index 9e40eb5af..e75ec4fdb 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,29 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -366,6 +344,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index dd9906a2d..82f90da39 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -309,29 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -367,6 +345,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 1572991a0..80fca9e9d 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -331,6 +309,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index d42e4343e..239cdee6e 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -318,29 +318,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -376,6 +354,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index f285f8cfd..67b0bb882 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,8 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.converters.revit2022": { @@ -333,27 +332,6 @@ "Speckle.Revit.API": "[2022.0.2.1, )" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -381,12 +359,39 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2022.0.2.1", "contentHash": "IrLN4WyI2ix+g3zCpo7sX8zNB3FrtrdQ3E2RpceGVPNG00v8OfD+Kei7o1bn1u/ML46iBYRAr/JcsLbwfUQsBw==" }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index 6c3c7c43f..f6453e352 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,8 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.converters.revit2023": { @@ -333,27 +332,6 @@ "Speckle.Revit.API": "[2023.0.0, )" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -381,12 +359,39 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2023.0.0", "contentHash": "tq40eD7psgTbV+epNouYyqfo6+hEi7FmXZqcxEOsAV7zfYyWhL6Rt3vmojkWGNuerGbH6oRI6KIIxrnlCNb8Hw==" }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 6522c2a7b..424a1a3c9 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,8 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.converters.revit2024": { @@ -333,27 +332,6 @@ "Speckle.Revit.API": "[2024.0.0, )" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -381,12 +359,39 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2024.0.0", "contentHash": "a4dsvZ00ocvzTgCD6dUdydf0jIZDVcDhs6dUX9cv+y3aTDbU8rmzhYXWt8sThedIG+IPSVa0vHmAH9pKiJL3SQ==" }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index d673e7089..6494b9ffa 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -287,8 +287,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.converters.revit2025": { @@ -298,27 +297,6 @@ "Speckle.Revit.API": "[2025.0.0, )" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -352,12 +330,39 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, "Speckle.Revit.API": { "type": "CentralTransitive", "requested": "[2023.0.0, )", "resolved": "2025.0.0", "contentHash": "Hwf/3Ydc7KxvjgD9pSZKLSJRsFTsxYg95YyTm6f43hcsGjmk49GsLFQt921Z9OcvUVewOggQHcmBgti+P2EPHw==" }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index a6a1b0c3f..a19080b9c 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,8 +310,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.converters.rhino7": { @@ -321,27 +320,6 @@ "Speckle.Converters.Common": "[1.0.0, )" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -375,6 +353,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index dfb81965d..1dd7c50a1 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,8 +310,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.converters.rhino8": { @@ -321,27 +320,6 @@ "Speckle.Converters.Common": "[1.0.0, )" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -375,6 +353,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index 7bee3a523..c9d9024e0 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -399,8 +399,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -408,7 +408,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -422,27 +422,6 @@ "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -476,6 +455,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index 6597f2299..fb7b412a2 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -237,29 +237,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -279,6 +257,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 36fc54507..65c4a6461 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 9c442742e..673be9880 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index 347cd9dbc..fc9dba428 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -301,29 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -359,6 +337,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 391a152cd..1127e99af 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -265,29 +265,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -323,6 +301,33 @@ "resolved": "1.0.1938.49", "contentHash": "z8KnFnaTYzhA/ZnyRX0qGfS1NU5ZBJeClAH64F0fVDvdDJTvME7xl6zTJ0Jlfe1BtL3C0NH9xTy64shg2baKdw==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 1a8754e78..15c45655d 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -282,29 +282,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -324,6 +302,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 2fdf1761f..7f53e73fd 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -363,29 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.testing": { @@ -412,6 +390,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 16d165c8b..7ffb759fa 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index cafa7d989..942509eef 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -363,29 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.testing": { @@ -412,6 +390,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index c4116465a..be3f37143 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index df637180e..baacff29b 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -363,29 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.testing": { @@ -412,6 +390,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index ac56fc44f..56021520e 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index 77836e431..f8bb5033a 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -237,29 +237,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -279,6 +257,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 73b97a2de..f84ae5960 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -363,29 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.testing": { @@ -412,6 +390,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 4759f4c81..22502c755 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 75a5fa1e1..4c9b238a6 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -273,29 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "Microsoft.Extensions.Logging": { @@ -315,6 +293,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 3b6422493..57e327307 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -351,34 +351,13 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "speckle.testing": { "type": "Project", "dependencies": { @@ -413,6 +392,33 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index f869b9d37..07d7ae116 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -283,34 +283,13 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -338,6 +317,33 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", @@ -582,8 +588,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.dui": { @@ -591,34 +597,13 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )", + "Speckle.Sdk": "[3.1.0-dev.160, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -646,6 +631,33 @@ "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "CentralTransitive", "requested": "[6.0.0, )", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index 5c68e275b..eb01389dd 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -48,6 +48,24 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, + "Speckle.Sdk": { + "type": "Direct", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "System.Threading.Tasks.Dataflow": { "type": "Direct", "requested": "[6.0.0, )", @@ -307,34 +325,13 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -355,6 +352,15 @@ "Microsoft.Extensions.Logging.Abstractions": "2.2.0", "Microsoft.Extensions.Options": "2.2.0" } + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index 937630511..a57c0dba5 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -35,8 +35,8 @@ - - + + diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 0b2553313..9b9acfea0 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -51,6 +51,33 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, + "Speckle.Objects": { + "type": "Direct", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "Direct", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } + }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -302,27 +329,6 @@ "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index af64e077a..890289043 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -342,34 +342,13 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" + "Speckle.Objects": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.160, )" } }, "speckle.connectors.logging": { "type": "Project" }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "speckle.testing": { "type": "Project", "dependencies": { @@ -403,6 +382,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index 0b58df78b..9702ea8af 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -350,29 +350,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[1.0.0, )", - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" + "Speckle.Objects": "[3.1.0-dev.160, )" } }, "speckle.testing": { @@ -399,6 +377,33 @@ "requested": "[2.2.0, )", "resolved": "2.2.0", "contentHash": "B2WqEox8o+4KUOpL7rZPyh6qYjik8tHi2tN8Z9jZkHzED8ElYgZa/h6K+xliB435SqUcWT290Fr2aa8BtZjn8A==" + }, + "Speckle.Objects": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 5c7659bcd..412bbe0df 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -48,6 +48,15 @@ "resolved": "0.9.6", "contentHash": "HKH7tYrYYlCK1ct483hgxERAdVdMtl7gUKW9ijWXxA1UsYR4Z+TrRHYmzZ9qmpu1NnTycSrp005NYM78GDKV1w==" }, + "Speckle.Objects": { + "type": "Direct", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "dependencies": { + "Speckle.Sdk": "3.1.0-dev.160" + } + }, "GraphQL.Client": { "type": "Transitive", "resolved": "6.0.0", @@ -296,27 +305,6 @@ "System.Runtime.CompilerServices.Unsafe": "4.5.3" } }, - "speckle.objects": { - "type": "Project", - "dependencies": { - "Speckle.Sdk": "[1.0.0, )" - } - }, - "speckle.sdk": { - "type": "Project", - "dependencies": { - "GraphQL.Client": "[6.0.0, )", - "Microsoft.CSharp": "[4.7.0, )", - "Microsoft.Data.Sqlite": "[7.0.7, )", - "Microsoft.Extensions.DependencyInjection.Abstractions": "[2.2.0, )", - "Microsoft.Extensions.Logging": "[2.2.0, )", - "Polly": "[7.2.3, )", - "Polly.Contrib.WaitAndRetry": "[1.1.1, )", - "Polly.Extensions.Http": "[3.0.0, )", - "Speckle.DoubleNumerics": "[4.0.1, )", - "Speckle.Newtonsoft.Json": "[13.0.2, )" - } - }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[2.2.0, )", @@ -328,6 +316,24 @@ "Microsoft.Extensions.Logging.Abstractions": "2.2.0", "Microsoft.Extensions.Options": "2.2.0" } + }, + "Speckle.Sdk": { + "type": "CentralTransitive", + "requested": "[3.1.0-dev.160, )", + "resolved": "3.1.0-dev.160", + "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "dependencies": { + "GraphQL.Client": "6.0.0", + "Microsoft.CSharp": "4.7.0", + "Microsoft.Data.Sqlite": "7.0.7", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.2.0", + "Microsoft.Extensions.Logging": "2.2.0", + "Polly": "7.2.3", + "Polly.Contrib.WaitAndRetry": "1.1.1", + "Polly.Extensions.Http": "3.0.0", + "Speckle.DoubleNumerics": "4.0.1", + "Speckle.Newtonsoft.Json": "13.0.2" + } } } } From d3f32288bfd791d85ee77eee0dfb15978c46864a Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Thu, 10 Oct 2024 10:41:08 +0100 Subject: [PATCH 46/62] fix test references --- .../Speckle.Converters.Revit2022.Tests.csproj | 2 +- .../Speckle.Converters.Revit2022.Tests/packages.lock.json | 6 +++--- .../Speckle.Converters.Revit2023.Tests.csproj | 2 +- .../Speckle.Converters.Revit2023.Tests/packages.lock.json | 6 +++--- .../Speckle.Converters.Revit2024.Tests.csproj | 2 +- .../Speckle.Converters.Revit2024.Tests/packages.lock.json | 6 +++--- .../Speckle.Converters.Rhino7.Tests.csproj | 2 +- .../Speckle.Converters.Rhino7.Tests/packages.lock.json | 6 +++--- Directory.Packages.props | 6 +++++- 9 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/Speckle.Converters.Revit2022.Tests.csproj b/Converters/Revit/Speckle.Converters.Revit2022.Tests/Speckle.Converters.Revit2022.Tests.csproj index 43338bfd8..2f4cc84f7 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/Speckle.Converters.Revit2022.Tests.csproj +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/Speckle.Converters.Revit2022.Tests.csproj @@ -25,6 +25,6 @@ - + diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 7f53e73fd..9dfb76777 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -87,9 +87,9 @@ }, "Speckle.Revit2022.Fakes": { "type": "Direct", - "requested": "[0.3.0, 1.0.0)", - "resolved": "0.3.0", - "contentHash": "aAy+bmuXn7oFyUyuvwe8Aw0SfuQoX23jTDI1v6ZrTDSVvRxsmJLBZVYcT9V0CuGiP3JwqM5gmy9CkVBfSm+DcA==", + "requested": "[0.3.1, )", + "resolved": "0.3.1", + "contentHash": "kz/taszZjEUEnqJM4qjRqEYdsrD6s9X1N56SXiB2fUiwc7MeM6H1LZaAdRYM/70tukq8OshL5fiWIQZrXrLaAg==", "dependencies": { "System.Drawing.Common": "8.0.6" } diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj b/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj index d6f5c8eaa..f2c9896b8 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj @@ -25,6 +25,6 @@ - + diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index 942509eef..a5471652b 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -87,9 +87,9 @@ }, "Speckle.Revit2023.Fakes": { "type": "Direct", - "requested": "[0.3.0, 1.0.0)", - "resolved": "0.3.0", - "contentHash": "kMNRHztk5lncfCJxaxM73UtYIq7f0ekT8Zq99CXrHSYDEKif4tUga8re1uNv2rT1x25CvVtnvyTiNOtrs1yd0g==", + "requested": "[0.3.1, )", + "resolved": "0.3.1", + "contentHash": "uHYAqg2ljL5WpYYAQujgiS6olkGD31lXToyc0yIugAi0cnHtP5z95hjzg3QBbmFizVYyD5n2IwFnR49UiSVfJg==", "dependencies": { "System.Drawing.Common": "8.0.6" } diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/Speckle.Converters.Revit2024.Tests.csproj b/Converters/Revit/Speckle.Converters.Revit2024.Tests/Speckle.Converters.Revit2024.Tests.csproj index 58a09acda..54573dcd1 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/Speckle.Converters.Revit2024.Tests.csproj +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/Speckle.Converters.Revit2024.Tests.csproj @@ -25,6 +25,6 @@ - + diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index baacff29b..e8f3ac41a 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -87,9 +87,9 @@ }, "Speckle.Revit2024.Fakes": { "type": "Direct", - "requested": "[0.3.0, 1.0.0)", - "resolved": "0.3.0", - "contentHash": "gBwoXQDphcbfexbNojI+9Isht8M3citP9j3cMMsnDJPlj7l1rXHzFmzZ7sn0OzuKzmcG92sGvyR1RvsGUtfqYw==", + "requested": "[0.3.1, )", + "resolved": "0.3.1", + "contentHash": "01T15eXABKlHKNBKMfehlnH+Ki5r/0Ozx6sFMCTSnFSF5u12g+Dkefo+GsEIiS1GxuMlEb+BKZbCrFmp8GLaHQ==", "dependencies": { "System.Drawing.Common": "8.0.6" } diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj index b2b3653be..a7c0bf00e 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj @@ -23,6 +23,6 @@ - + diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index f84ae5960..614ee9434 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -87,9 +87,9 @@ }, "Speckle.Rhino7.Fakes": { "type": "Direct", - "requested": "[0.3.0, 1.0.0)", - "resolved": "0.3.0", - "contentHash": "6nDQudPvrsaVgrGWicQ50fb3LzyEp8QMCltJZs6itzyYlHYC8xjmCHK1Z305f3y9QfK9QQa93sBrEtS7xIhcEQ==", + "requested": "[0.3.1, )", + "resolved": "0.3.1", + "contentHash": "II0zR/4QfPC/j44zfVTSqplZsd/GXHEa4eKRZFdjHuXnXBcd80uObWAb0C2Wm88KSlKOnSYAeQLEMmPjK5Kw3w==", "dependencies": { "System.Drawing.Common": "8.0.6" } diff --git a/Directory.Packages.props b/Directory.Packages.props index a57c0dba5..191b60cab 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -34,7 +34,11 @@ - + + + + + From 1074932eb553e71a6d1eb14adec636274256c997 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Thu, 10 Oct 2024 12:34:50 +0100 Subject: [PATCH 47/62] fix: review comments - split classes into separate files - fixed namespacing in revit - adds note on brep converter's repair call --- .../Receive/RevitHostObjectBuilder.cs | 2 +- .../Geometry/IRawEncodedObjectConverter.cs | 2 +- .../ToHost/Helpers/RawEncodingToHost.cs | 31 ++++++++++++++++ .../ToHost/Raw/BrepXToHostConverter.cs | 35 +------------------ .../ToHost/Raw/ExtrusionXToHostConverter.cs | 8 +++++ .../ToHost/Raw/SubDXToHostConverter.cs | 9 +++++ .../ToSpeckle/Raw/BrepToSpeckleConverter.cs | 2 +- 7 files changed, 52 insertions(+), 37 deletions(-) create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs create mode 100644 Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/SubDXToHostConverter.cs diff --git a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs index 355f6ffb9..d49a5ff20 100644 --- a/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs +++ b/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs @@ -117,7 +117,7 @@ CancellationToken cancellationToken { _transactionManager.StartTransaction(true, "Baking materials"); _materialBaker.MapLayersRenderMaterials(unpackedRoot); - var map = _materialBaker.BakeMaterials(unpackedRoot.RenderMaterialProxies, baseGroupName); // NOTE: do not set _contextStack.RenderMaterialProxyCache directly, things stop working. Ogu/Dim do not know why :) not a problem as we hopefully will refactor some of these hacks out. + var map = _materialBaker.BakeMaterials(unpackedRoot.RenderMaterialProxies, baseGroupName); foreach (var kvp in map) { _revitToHostCacheSingleton.MaterialsByObjectId.Add(kvp.Key, kvp.Value); diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs index f86dbf8fd..ac98b4d25 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/Geometry/IRawEncodedObjectConverter.cs @@ -7,7 +7,7 @@ using Speckle.Sdk.Models; using Speckle.Sdk.Models.Extensions; -namespace Speckle.Converters.Revit2023.ToHost.Raw.Geometry; +namespace Speckle.Converters.RevitShared.ToSpeckle; public class IRawEncodedObjectConverter : ITypedConverter> { diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs new file mode 100644 index 000000000..acb582bdd --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs @@ -0,0 +1,31 @@ +using Rhino.FileIO; +using Speckle.Converters.Common; + +namespace Speckle.Converters.Rhino.ToHost.Helpers; + +/// +/// Top level handler for raw encoded objects. +/// +public static class RawEncodingToHost +{ + public static List Convert(SOG.IRawEncodedObject target) + { + // note: I am not sure that we're going to have other encoding formats, but who knows. + switch (target.encodedValue.format) + { + case SO.RawEncodingFormats.RHINO_3DM: + return Handle3dm(target); + default: + throw new SpeckleConversionException($"Unsupported brep encoding format: {target.encodedValue.format}"); + } + } + + private static List Handle3dm(SOG.IRawEncodedObject target) + { + var bytes = System.Convert.FromBase64String(target.encodedValue.contents); + var file = File3dm.FromByteArray(bytes); + var brepObject = file.Objects.Select(o => o.Geometry); + return brepObject.ToList(); + } +} + diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs index 780086b26..b1f031566 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs @@ -1,6 +1,5 @@ -using Rhino.FileIO; -using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino.ToHost.Helpers; namespace Speckle.Converters.Rhino.ToHost.Raw; @@ -9,35 +8,3 @@ public class BrepXToHostConverter : ITypedConverter Convert(SOG.BrepX target) => RawEncodingToHost.Convert(target); } -public class SubDXToHostConverter : ITypedConverter> -{ - public List Convert(SOG.SubDX target) => RawEncodingToHost.Convert(target); -} - -public class ExtrusionElonMuskXToHostConverter : ITypedConverter> -{ - public List Convert(SOG.ExtrusionX target) => RawEncodingToHost.Convert(target); -} - -public static class RawEncodingToHost -{ - public static List Convert(SOG.IRawEncodedObject target) - { - // note: I am not sure that we're going to have other encoding formats, but who knows. - switch (target.encodedValue.format) - { - case SO.RawEncodingFormats.RHINO_3DM: - return Handle3dm(target); - default: - throw new SpeckleConversionException($"Unsupported brep encoding format: {target.encodedValue.format}"); - } - } - - private static List Handle3dm(SOG.IRawEncodedObject target) - { - var bytes = System.Convert.FromBase64String(target.encodedValue.contents); - var file = File3dm.FromByteArray(bytes); - var brepObject = file.Objects.Select(o => o.Geometry); - return brepObject.ToList(); - } -} diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs new file mode 100644 index 000000000..56eea779f --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs @@ -0,0 +1,8 @@ +using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino.ToHost.Helpers; + +namespace Speckle.Converters.Rhino.ToHost.Raw; +public class ExtrusionXToHostConverter : ITypedConverter> +{ + public List Convert(SOG.ExtrusionX target) => RawEncodingToHost.Convert(target); +} diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/SubDXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/SubDXToHostConverter.cs new file mode 100644 index 000000000..19f56337f --- /dev/null +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/SubDXToHostConverter.cs @@ -0,0 +1,9 @@ +using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino.ToHost.Helpers; + +namespace Speckle.Converters.Rhino.ToHost.Raw; + +public class SubDXToHostConverter : ITypedConverter> +{ + public List Convert(SOG.SubDX target) => RawEncodingToHost.Convert(target); +} diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs index 68a364281..aaa74c71d 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs @@ -43,7 +43,7 @@ IConverterSettingsStore settingsStore public SOG.Brep Convert(RG.Brep target) { var tol = _settingsStore.Current.Document.ModelAbsoluteTolerance; - //target.Repair(tol); + target.Repair(tol); // NOTE: for objects far-ish (not that far imho) from origin, this call nukes performance and takes ages. // POC: CNX-9276 This should come as part of the user settings in the context object. // if (PreprocessGeometry) From c2caeb59009a974ee5c5b858a4cf94da91c01172 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Thu, 10 Oct 2024 16:56:50 +0100 Subject: [PATCH 48/62] fix: CNX-567 --- .../TopLevel/FootPrintRoofToSpeckleTopLevelConverter.cs | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/TopLevel/FootPrintRoofToSpeckleTopLevelConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/TopLevel/FootPrintRoofToSpeckleTopLevelConverter.cs index 85e8f7dbb..3234b6c7f 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/TopLevel/FootPrintRoofToSpeckleTopLevelConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/TopLevel/FootPrintRoofToSpeckleTopLevelConverter.cs @@ -55,10 +55,6 @@ public override RevitFootprintRoof Convert(FootPrintRoof target) out var topLevel ); - //POC: CNX-9403 can be null if the sides have different slopes. - //We currently don't validate the success or failure of this TryGet as it's not necessary, but will be once we start the above ticket. - _parameterValueExtractor.TryGetValueAsDouble(target, DB.BuiltInParameter.ROOF_SLOPE, out var slope); - var elementType = (ElementType)target.Document.GetElement(target.GetTypeId()); List displayValue = _displayValueExtractor.GetDisplayValue(target); @@ -69,7 +65,6 @@ out var topLevel family = elementType.FamilyName, level = _levelConverter.Convert(baseLevel), cutOffLevel = topLevel is not null ? _levelConverter.Convert(topLevel) : null, - slope = slope, displayValue = displayValue, units = _converterSettings.Current.SpeckleUnits }; From a95e7cc225f4b5fab6d800ac7393f02816c166e1 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Thu, 10 Oct 2024 17:41:37 +0100 Subject: [PATCH 49/62] fix: CNX-556 --- .../Parameters/ParameterExtractor.cs | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index 15310fae7..17fa028ad 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -71,6 +71,12 @@ ILogger logger return CreateParameterDictionary(instanceParameterDictionary, typeParameterDictionary); } + /// + /// Internal utility to create the default parameter structure we expect all elements to have. + /// + /// + /// + /// private Dictionary CreateParameterDictionary( Dictionary> instanceParams, Dictionary>? typeParams @@ -90,16 +96,24 @@ ILogger logger { try { + var (internalDefinitionName, humanReadableName, groupName, units) = + _parameterDefinitionHandler.HandleDefinition(parameter); + + // NOTE: ids don't really have much meaning; if we discover the opposite, we can bring them back. See [CNX-556: All ID Parameters are send as Name](https://linear.app/speckle/issue/CNX-556/all-id-parameters-are-send-as-name) + if (internalDefinitionName.Contains("_ID")) + { + continue; + } + var value = GetValue(parameter); + var isNullOrEmpty = value == null || (value is string s && string.IsNullOrEmpty(s)); + if (!_settingsStore.Current.SendParameterNullOrEmptyStrings && isNullOrEmpty) { continue; } - var (internalDefinitionName, humanReadableName, groupName, units) = - _parameterDefinitionHandler.HandleDefinition(parameter); - var param = new Dictionary() { ["value"] = value, @@ -107,7 +121,7 @@ ILogger logger ["internalDefinitionName"] = internalDefinitionName }; - if (units is string paramUnits) + if (units is not null) { param["units"] = units; } From 0d584bb0ac7c806751cbaca460f398096594671f Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Thu, 10 Oct 2024 18:12:06 +0100 Subject: [PATCH 50/62] fix: CNX-559 --- .../ToSpeckle/Parameters/ParameterExtractor.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index 17fa028ad..09aada6a1 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -163,10 +163,16 @@ ILogger logger : parameter.AsValueString(); case DB.StorageType.ElementId: var elId = parameter.AsElementId()!; + if (elId == DB.ElementId.InvalidElementId) + { + return null; + } + if (_elementNameCache.TryGetValue(elId, out string? value)) { return value; } + var docElement = _settingsStore.Current.Document.GetElement(elId); var docElementName = docElement?.Name ?? elId.ToString(); _elementNameCache[parameter.AsElementId()] = docElementName; From ed2d3ed9313eb254abb11d7fd0b5d01a1b2f19c2 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Fri, 11 Oct 2024 09:28:59 +0100 Subject: [PATCH 51/62] AsyncLocal in activity scope needs proper initialization (#298) --- .../ActivityScopeExtensions.cs | 18 ++---------------- .../ActivityScopeProcessor.cs | 15 +++++++++++++++ .../ActivityScopeTests.cs | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs create mode 100644 Sdk/Speckle.Connectors.Tests/ActivityScopeTests.cs diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs index c01121542..b81d6379d 100644 --- a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs @@ -1,11 +1,8 @@ -using System.Diagnostics; -using OpenTelemetry; - -namespace Speckle.Connectors.Logging; +namespace Speckle.Connectors.Logging; public static class ActivityScope { - private static readonly AsyncLocal> s_tags = new(); + private static readonly AsyncLocal> s_tags = new() { Value = new() }; public static IReadOnlyDictionary Tags => s_tags.Value; @@ -20,14 +17,3 @@ private sealed class TagScope(string key) : IDisposable public void Dispose() => s_tags.Value.Remove(key); } } - -internal sealed class ActivityScopeProcessor : BaseProcessor -{ - public override void OnEnd(Activity data) - { - foreach (KeyValuePair keyValuePair in ActivityScope.Tags) - { - data.SetTag(keyValuePair.Key, keyValuePair.Value); - } - } -} diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs new file mode 100644 index 000000000..5645962b3 --- /dev/null +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs @@ -0,0 +1,15 @@ +using System.Diagnostics; +using OpenTelemetry; + +namespace Speckle.Connectors.Logging; + +internal sealed class ActivityScopeProcessor : BaseProcessor +{ + public override void OnEnd(Activity data) + { + foreach (KeyValuePair keyValuePair in ActivityScope.Tags) + { + data.SetTag(keyValuePair.Key, keyValuePair.Value); + } + } +} diff --git a/Sdk/Speckle.Connectors.Tests/ActivityScopeTests.cs b/Sdk/Speckle.Connectors.Tests/ActivityScopeTests.cs new file mode 100644 index 000000000..3305d84f4 --- /dev/null +++ b/Sdk/Speckle.Connectors.Tests/ActivityScopeTests.cs @@ -0,0 +1,16 @@ +using FluentAssertions; +using NUnit.Framework; + +namespace Speckle.Connectors.Tests; + +public class ActivityScopeTests +{ + [Test] + public async Task TestAsyncLocal() + { + Logging.ActivityScope.SetTag("test", "me"); + await Task.Delay(10).ConfigureAwait(false); + Logging.ActivityScope.Tags.ContainsKey("test").Should().BeTrue(); + Logging.ActivityScope.Tags["test"].Should().Be("me"); + } +} From 8c34416b1a58c961b12a156bc898a9ce462eb5f0 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Fri, 11 Oct 2024 11:10:52 +0100 Subject: [PATCH 52/62] feat(civil3d): adds property sets and parts data to all civil objects (#297) * adds parts data and better display mesh and base curve conversions * fixes di issues * removes arc pipes for now * Update BaseCurveExtractor.cs * Update PartDataExtractor.cs * adds property sets and defs * additional bug fixes * renames parameters folder to properties * Update Speckle.Converters.Civil3dShared.projitems --------- Co-authored-by: Adam Hathcock --- .../Send/AutocadRootObjectBaseBuilder.cs | 8 + .../Plugin/AutocadCommand.cs | 8 +- .../Bindings/Civil3dSendBinding.cs | 4 +- .../Civil3dConnectorModule.cs | 10 +- .../Send/Civil3dRootObjectBuilder.cs | 13 +- .../Geometry/SubDMeshToSpeckleConverter.cs | 4 +- .../Raw/DBCurveToSpeckleRawConverter.cs | 6 +- .../Civil3dConversionSettings.cs | 2 +- .../Civil3dConversionSettingsFactory.cs | 2 +- .../Civil3dRootToHostConverter.cs | 67 -------- .../Civil3dRootToSpeckleConverter.cs | 113 +++++++++++++ .../Civil3dToSpeckleUnitConverter.cs | 2 +- .../GlobalUsings.cs | 1 + .../Helpers/BaseCurveExtractor.cs | 56 +++++++ .../Helpers/DisplayValueExtractor.cs | 54 +++++++ .../ServiceRegistration.cs | 15 +- ...Speckle.Converters.Civil3dShared.projitems | 9 +- .../CivilEntityToSpeckleTopLevelConverter.cs | 38 ++--- .../ToSpeckle/Properties/PartDataExtractor.cs | 119 ++++++++++++++ .../PropertySetDefinitionHandler.cs | 67 ++++++++ .../Properties/PropertySetExtractor.cs | 151 ++++++++++++++++++ .../GridSurfaceToSpeckleMeshRawConverter.cs | 71 ++++++++ .../Raw/PropertySetToSpeckleRawConverter.cs | 2 +- .../TinSurfaceToSpeckleMeshRawConverter.cs | 67 ++++++++ .../Operations/ProxyKeys.cs | 3 +- 25 files changed, 784 insertions(+), 108 deletions(-) delete mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetDefinitionHandler.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetExtractor.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/GridSurfaceToSpeckleMeshRawConverter.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/TinSurfaceToSpeckleMeshRawConverter.cs diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs index 2973b50b2..3db8fe68f 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Operations/Send/AutocadRootObjectBaseBuilder.cs @@ -137,6 +137,9 @@ private RootObjectBuilderResult BuildSync( // 5 - Unpack the color proxies root[ProxyKeys.COLOR] = _colorUnpacker.UnpackColors(atomicObjects, usedAcadLayers); + // add any additional properties (most likely from verticals) + AddAdditionalProxiesToRoot(root); + return new RootObjectBuilderResult(root, results); } } @@ -146,6 +149,11 @@ public virtual (Collection, LayerTableRecord?) CreateObjectCollection(Entity ent return (new(), null); } + public virtual void AddAdditionalProxiesToRoot(Collection rootCollection) + { + return; + } + private SendConversionResult ConvertAutocadEntity( Entity entity, string applicationId, diff --git a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs index 94111eb41..f3c177540 100644 --- a/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs +++ b/Connectors/Autocad/Speckle.Connectors.AutocadShared/Plugin/AutocadCommand.cs @@ -9,8 +9,8 @@ using Speckle.Connectors.Autocad.DependencyInjection; using Speckle.Converters.Autocad; #elif CIVIL3D -using Speckle.Converters.Civil3d; -using Speckle.Connectors.Civil3d.DependencyInjection; +using Speckle.Converters.Civil3dShared; +using Speckle.Connectors.Civil3dShared.DependencyInjection; #endif namespace Speckle.Connectors.Autocad.Plugin; @@ -31,7 +31,7 @@ public void Command() return; } - PaletteSet = new PaletteSet($"Speckle (Beta) for {AppUtils.App}", s_id) + PaletteSet = new PaletteSet($"Speckle (Beta) for {AppUtils.App.Name}", s_id) { Size = new Size(400, 500), DockEnabled = (DockSides)((int)DockSides.Left + (int)DockSides.Right) @@ -52,7 +52,7 @@ public void Command() var panelWebView = Container.GetRequiredService(); - PaletteSet.AddVisual($"Speckle (Beta) for {AppUtils.App} WebView", panelWebView); + PaletteSet.AddVisual($"Speckle (Beta) for {AppUtils.App.Name} WebView", panelWebView); FocusPalette(); } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs index d697acf20..a1aa571b0 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Bindings/Civil3dSendBinding.cs @@ -9,11 +9,11 @@ using Speckle.Connectors.DUI.Models; using Speckle.Connectors.DUI.Models.Card.SendFilter; using Speckle.Converters.Autocad; -using Speckle.Converters.Civil3d; +using Speckle.Converters.Civil3dShared; using Speckle.Converters.Common; using Speckle.Sdk; -namespace Speckle.Connectors.Civil3d.Bindings; +namespace Speckle.Connectors.Civil3dShared.Bindings; public sealed class Civil3dSendBinding : AutocadSendBaseBinding { diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs index 7c141f18a..e43b04302 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs @@ -2,13 +2,14 @@ using Microsoft.Extensions.DependencyInjection; using Speckle.Connectors.Autocad.DependencyInjection; using Speckle.Connectors.Autocad.Operations.Send; -using Speckle.Connectors.Civil3d.Bindings; -using Speckle.Connectors.Civil3d.Operations.Send; +using Speckle.Connectors.Civil3dShared.Bindings; +using Speckle.Connectors.Civil3dShared.Operations.Send; using Speckle.Connectors.Common.Builders; using Speckle.Connectors.DUI.Bindings; +using Speckle.Converters.Civil3dShared.ToSpeckle; using Speckle.Sdk; -namespace Speckle.Connectors.Civil3d.DependencyInjection; +namespace Speckle.Connectors.Civil3dShared.DependencyInjection; public static class Civil3dConnectorModule { @@ -23,5 +24,8 @@ public static void AddCivil3d(this IServiceCollection serviceCollection) // automatically detects the Class:IClass interface pattern to register all generated interfaces serviceCollection.AddMatchingInterfacesAsTransient(Assembly.GetExecutingAssembly()); + + // additional classes + serviceCollection.AddScoped(); } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs index 679ae8e40..ee4ce4a27 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs @@ -3,18 +3,22 @@ using Speckle.Connectors.Autocad.HostApp; using Speckle.Connectors.Autocad.Operations.Send; using Speckle.Connectors.Common.Caching; +using Speckle.Connectors.Common.Operations; +using Speckle.Converters.Civil3dShared.ToSpeckle; using Speckle.Converters.Common; using Speckle.Sdk.Logging; using Speckle.Sdk.Models.Collections; -namespace Speckle.Connectors.Civil3d.Operations.Send; +namespace Speckle.Connectors.Civil3dShared.Operations.Send; public sealed class Civil3dRootObjectBuilder : AutocadRootObjectBaseBuilder { private readonly AutocadLayerUnpacker _layerUnpacker; + private readonly PropertySetDefinitionHandler _propertySetDefinitionHandler; public Civil3dRootObjectBuilder( AutocadLayerUnpacker layerUnpacker, + PropertySetDefinitionHandler propertySetDefinitionHandler, IRootToSpeckleConverter converter, ISendConversionCache sendConversionCache, AutocadInstanceUnpacker instanceObjectManager, @@ -36,6 +40,7 @@ ISdkActivityFactory activityFactory ) { _layerUnpacker = layerUnpacker; + _propertySetDefinitionHandler = propertySetDefinitionHandler; } public override (Collection, LayerTableRecord?) CreateObjectCollection(Entity entity, Transaction tr) @@ -44,4 +49,10 @@ public override (Collection, LayerTableRecord?) CreateObjectCollection(Entity en return (layer, autocadLayer); } + + // POC: probably will need to add Network definition proxies as well + public override void AddAdditionalProxiesToRoot(Collection rootObject) + { + rootObject[ProxyKeys.PROPERTYSET_DEFINITIONS] = _propertySetDefinitionHandler.Definitions; + } } diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SubDMeshToSpeckleConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SubDMeshToSpeckleConverter.cs index 212a9d93b..6e168f9a7 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SubDMeshToSpeckleConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Geometry/SubDMeshToSpeckleConverter.cs @@ -30,7 +30,9 @@ public SOG.Mesh RawConvert(ADB.SubDMesh target) var vertices = new List(target.Vertices.Count * 3); foreach (AG.Point3d vert in target.Vertices) { - vertices.AddRange(_pointConverter.Convert(vert).ToList()); + vertices.Add(vert.X); + vertices.Add(vert.Y); + vertices.Add(vert.Z); } // faces diff --git a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs index 789d6db00..d12177389 100644 --- a/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs +++ b/Converters/Autocad/Speckle.Converters.AutocadShared/ToSpeckle/Raw/DBCurveToSpeckleRawConverter.cs @@ -53,9 +53,9 @@ public Objects.ICurve Convert(ADB.Curve target) => target switch { ADB.Line line => _lineConverter.Convert(line), - //ADB.Polyline polyline => _polylineConverter.Convert(polyline), - //ADB.Polyline2d polyline2d => _polyline2dConverter.Convert(polyline2d), - //ADB.Polyline3d polyline3d => _polyline3dConverter.Convert(polyline3d), + ADB.Polyline polyline => _polylineConverter.Convert(polyline), + ADB.Polyline2d polyline2d => _polyline2dConverter.Convert(polyline2d), + ADB.Polyline3d polyline3d => _polyline3dConverter.Convert(polyline3d), ADB.Arc arc => _arcConverter.Convert(arc), ADB.Circle circle => _circleConverter.Convert(circle), ADB.Ellipse ellipse => _ellipseConverter.Convert(ellipse), diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs index 71835b3dd..e15a58213 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettings.cs @@ -1,3 +1,3 @@ -namespace Speckle.Converters.Civil3d; +namespace Speckle.Converters.Civil3dShared; public record Civil3dConversionSettings(Document Document, string SpeckleUnits); diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs index b22adb63a..47ebb0934 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dConversionSettingsFactory.cs @@ -1,7 +1,7 @@ using Speckle.Converters.Common; using Speckle.InterfaceGenerator; -namespace Speckle.Converters.Civil3d; +namespace Speckle.Converters.Civil3dShared; [GenerateAutoInterface] public class Civil3dConversionSettingsFactory(IHostToSpeckleUnitConverter unitsConverter) diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs deleted file mode 100644 index 858163ab9..000000000 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToHostConverter.cs +++ /dev/null @@ -1,67 +0,0 @@ -using Autodesk.AutoCAD.DatabaseServices; -using Speckle.Converters.Common; -using Speckle.Converters.Common.Objects; -using Speckle.Converters.Common.Registration; -using Speckle.Sdk.Models; - -namespace Speckle.Converters.Civil3d; - -public class Civil3dRootToHostConverter : IRootToSpeckleConverter -{ - private readonly IConverterManager _toSpeckle; - private readonly IConverterSettingsStore _settingsStore; - - public Civil3dRootToHostConverter( - IConverterManager toSpeckle, - IConverterSettingsStore settingsStore - ) - { - _toSpeckle = toSpeckle; - _settingsStore = settingsStore; - } - - public Base Convert(object target) - { - if (target is not DBObject dbObject) - { - throw new SpeckleConversionException( - $"Conversion of {target.GetType().Name} to Speckle is not supported. Only objects that inherit from DBObject are." - ); - } - - Type type = dbObject.GetType(); - object objectToConvert = dbObject; - - // check first for civil type objects - if (target is CDB.Entity civilEntity) - { - type = civilEntity.GetType(); - objectToConvert = civilEntity; - } - - var objectConverter = _toSpeckle.ResolveConverter(type); - - if (objectConverter == null) - { - throw new SpeckleConversionException($"No conversion found for {target.GetType().Name}"); - } - - try - { - using (var l = _settingsStore.Current.Document.LockDocument()) - { - using (var tr = _settingsStore.Current.Document.Database.TransactionManager.StartTransaction()) - { - var convertedObject = objectConverter.Convert(objectToConvert); - tr.Commit(); - return convertedObject; - } - } - } - catch (SpeckleConversionException e) - { - Console.WriteLine(e); - throw; // Just rethrowing for now, Logs may be needed here. - } - } -} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs new file mode 100644 index 000000000..ac07bf2db --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs @@ -0,0 +1,113 @@ +using Autodesk.AutoCAD.DatabaseServices; +using Speckle.Converters.Civil3dShared.ToSpeckle; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Converters.Common.Registration; +using Speckle.Sdk; +using Speckle.Sdk.Models; + +namespace Speckle.Converters.Civil3dShared; + +public class Civil3dRootToSpeckleConverter : IRootToSpeckleConverter +{ + private readonly IConverterManager _toSpeckle; + private readonly IConverterSettingsStore _settingsStore; + private readonly PartDataExtractor _partDataExtractor; + private readonly PropertySetExtractor _propertySetExtractor; + + public Civil3dRootToSpeckleConverter( + IConverterManager toSpeckle, + IConverterSettingsStore settingsStore, + PartDataExtractor partDataExtractor, + PropertySetExtractor propertySetExtractor + ) + { + _toSpeckle = toSpeckle; + _settingsStore = settingsStore; + _partDataExtractor = partDataExtractor; + _propertySetExtractor = propertySetExtractor; + } + + public Base Convert(object target) + { + if (target is not DBObject dbObject) + { + throw new SpeckleConversionException( + $"Conversion of {target.GetType().Name} to Speckle is not supported. Only objects that inherit from DBObject are." + ); + } + + Type type = dbObject.GetType(); + object objectToConvert = dbObject; + Dictionary properties = new(); + + // check first for civil type objects + if (target is CDB.Entity civilEntity) + { + type = civilEntity.GetType(); + objectToConvert = civilEntity; + + // TODO: refactor this into a property extractor class + // get part data + try + { + Dictionary? partData = _partDataExtractor.GetPartData(civilEntity); + if (partData is not null) + { + properties.Add("Part Data", partData); + } + } + catch (Exception e) when (!e.IsFatal()) + { + //TODO: logger here + } + + // get property set data + try + { + Dictionary? propertySets = _propertySetExtractor.GetPropertySets(civilEntity); + if (propertySets is not null) + { + properties.Add("Property Sets", propertySets); + } + } + catch (Exception e) when (!e.IsFatal()) + { + //TODO: logger here + } + + // TODO: add XDATA here + } + + var objectConverter = _toSpeckle.ResolveConverter(type, true); + + if (objectConverter == null) + { + throw new SpeckleConversionException($"No conversion found for {target.GetType().Name}"); + } + + try + { + using (var l = _settingsStore.Current.Document.LockDocument()) + { + using (var tr = _settingsStore.Current.Document.Database.TransactionManager.StartTransaction()) + { + var result = objectConverter.Convert(objectToConvert); + + if (properties.Count > 0) + { + result["properties"] = properties; + } + + tr.Commit(); + return result; + } + } + } + catch (SpeckleConversionException e) + { + Console.WriteLine(e); + throw; // Just rethrowing for now, Logs may be needed here. + } + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs index 1dc191f3a..bbcc6698d 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dToSpeckleUnitConverter.cs @@ -2,7 +2,7 @@ using Speckle.Sdk; using Speckle.Sdk.Common; -namespace Speckle.Converters.Civil3d; +namespace Speckle.Converters.Civil3dShared; public class Civil3dToSpeckleUnitConverter : IHostToSpeckleUnitConverter { diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs index 84ef53636..a4bc49b0f 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/GlobalUsings.cs @@ -1,2 +1,3 @@ global using AAEC = Autodesk.Aec; +global using AAECPDB = Autodesk.Aec.PropertyData.DatabaseServices; global using CDB = Autodesk.Civil.DatabaseServices; diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs new file mode 100644 index 000000000..c1f34c133 --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs @@ -0,0 +1,56 @@ +using Microsoft.Extensions.Logging; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Objects; + +namespace Speckle.Converters.Civil3dShared.Helpers; + +public sealed class BaseCurveExtractor +{ + private readonly ILogger _logger; + private readonly IConverterSettingsStore _converterSettings; + private readonly ITypedConverter _lineConverter; + + //private readonly ITypedConverter _arcConverter; + private readonly ITypedConverter _curveConverter; + + public BaseCurveExtractor( + ITypedConverter lineConverter, + //ITypedConverter arcConverter, + ITypedConverter curveConverter, + ILogger logger, + IConverterSettingsStore converterSettings + ) + { + _lineConverter = lineConverter; + //_arcConverter = arcConverter; + _curveConverter = curveConverter; + _logger = logger; + _converterSettings = converterSettings; + } + + public List GetBaseCurve(CDB.Entity entity) + { + List result = new(); + + switch (entity) + { + // rant: if this is a pipe, the BaseCurve prop is fake news && will return a DB.line with start and endpoints set to [0,0,0] & [0,0,1] + // do not use basecurve for pipes 😡 + // currently not handling arc pipes due to lack of CircularArc2D converter, and also way to properly retrieve 2d arc curve + case CDB.Pipe pipe: + ICurve pipeCurve = + //pipe.SubEntityType == PipeSubEntityType.Straight ? + _lineConverter.Convert(new AG.LineSegment3d(pipe.StartPoint, pipe.EndPoint)); + //: _arcConverter.Convert(pipe.Curve2d); + result.Add(pipeCurve); + break; + default: + ICurve baseCurve = _curveConverter.Convert(entity.BaseCurve); + result.Add(baseCurve); + break; + } + + return result; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs new file mode 100644 index 000000000..0ab46cbb4 --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/DisplayValueExtractor.cs @@ -0,0 +1,54 @@ +using Microsoft.Extensions.Logging; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; + +namespace Speckle.Converters.Civil3dShared.Helpers; + +public sealed class DisplayValueExtractor +{ + private readonly ITypedConverter _solidConverter; + private readonly ITypedConverter _tinSurfaceConverter; + private readonly ITypedConverter _gridSurfaceConverter; + private readonly ILogger _logger; + private readonly IConverterSettingsStore _converterSettings; + + public DisplayValueExtractor( + ITypedConverter solidConverter, + ITypedConverter tinSurfaceConverter, + ITypedConverter gridSurfaceConverter, + ILogger logger, + IConverterSettingsStore converterSettings + ) + { + _solidConverter = solidConverter; + _tinSurfaceConverter = tinSurfaceConverter; + _gridSurfaceConverter = gridSurfaceConverter; + _logger = logger; + _converterSettings = converterSettings; + } + + public List GetDisplayValue(CDB.Entity entity) + { + List result = new(); + switch (entity) + { + // pipe networks: https://help.autodesk.com/view/CIV3D/2025/ENU/?guid=ade47b62-debf-f899-9b94-5645a620ab4f + case CDB.Part part: + SOG.Mesh partMesh = _solidConverter.Convert(part.Solid3dBody); + result.Add(partMesh); + break; + + // surfaces: https://help.autodesk.com/view/CIV3D/2025/ENU/?guid=d741aa49-e7da-9513-6b0b-226ebe3fa43f + // POC: volume surfaces not supported + case CDB.TinSurface tinSurface: + SOG.Mesh tinSurfaceMesh = _tinSurfaceConverter.Convert(tinSurface); + result.Add(tinSurfaceMesh); + break; + case CDB.GridSurface gridSurface: + SOG.Mesh gridSurfaceMesh = _gridSurfaceConverter.Convert(gridSurface); + result.Add(gridSurfaceMesh); + break; + } + return result; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs index 0b001f819..063280a5f 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs @@ -1,10 +1,12 @@ -using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; using Speckle.Converters.Autocad; +using Speckle.Converters.Civil3dShared.Helpers; +using Speckle.Converters.Civil3dShared.ToSpeckle; using Speckle.Converters.Common; using Speckle.Converters.Common.Registration; using Speckle.Sdk; -namespace Speckle.Converters.Civil3d; +namespace Speckle.Converters.Civil3dShared; public static class ServiceRegistration { @@ -16,7 +18,7 @@ public static void AddCivil3dConverters(this IServiceCollection serviceCollectio serviceCollection.AddMatchingInterfacesAsTransient(civil3dAssembly); serviceCollection.AddMatchingInterfacesAsTransient(autocadAssembly); // Register single root - serviceCollection.AddRootCommon(civil3dAssembly); + serviceCollection.AddRootCommon(civil3dAssembly); // register all application converters serviceCollection.AddApplicationConverters( @@ -31,5 +33,12 @@ public static void AddCivil3dConverters(this IServiceCollection serviceCollectio IConverterSettingsStore, ConverterSettingsStore >(); + + // add other classes + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems index fdde977ce..6d7ec1d66 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems @@ -11,11 +11,18 @@ - + + + + + + + + \ No newline at end of file diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs index 5f1807128..453b7a4b1 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs @@ -1,3 +1,4 @@ +using Speckle.Converters.Civil3dShared.Helpers; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Objects; @@ -5,53 +6,54 @@ using Speckle.Sdk.Models; using AECPropDB = Autodesk.Aec.PropertyData.DatabaseServices; -namespace Speckle.Converters.Civil3d.ToSpeckle.BuiltElements; +namespace Speckle.Converters.Civil3dShared.ToSpeckle.BuiltElements; [NameAndRankValue(nameof(CDB.Entity), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class CivilEntityToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter { private readonly ITypedConverter _pointConverter; - private readonly ITypedConverter _curveConverter; - private readonly ITypedConverter _solidConverter; private readonly ITypedConverter> _propertySetConverter; private readonly IConverterSettingsStore _settingsStore; + private readonly DisplayValueExtractor _displayValueExtractor; + private readonly BaseCurveExtractor _baseCurveExtractor; public CivilEntityToSpeckleTopLevelConverter( ITypedConverter pointConverter, - ITypedConverter curveConverter, - ITypedConverter solidConverter, ITypedConverter> propertySetConverter, - IConverterSettingsStore settingsStore + IConverterSettingsStore settingsStore, + DisplayValueExtractor displayValueExtractor, + BaseCurveExtractor baseCurveExtractor ) { _pointConverter = pointConverter; - _curveConverter = curveConverter; - _solidConverter = solidConverter; _propertySetConverter = propertySetConverter; _settingsStore = settingsStore; + _displayValueExtractor = displayValueExtractor; + _baseCurveExtractor = baseCurveExtractor; } public Base Convert(object target) => Convert((CDB.Entity)target); public Base Convert(CDB.Entity target) { - ICurve curve = _curveConverter.Convert(target.BaseCurve); - Base civilObject = new(); - civilObject["category"] = target.GetRXClass().AppName; + civilObject["type"] = target.GetType().ToString(); civilObject["name"] = target.Name; - civilObject["baseCurve"] = curve; civilObject["units"] = _settingsStore.Current.SpeckleUnits; - if (target is CDB.Part part) + // get basecurve + List baseCurves = _baseCurveExtractor.GetBaseCurve(target); + if (baseCurves.Count > 0) { - // can get solid body info from part for display value - SOG.Mesh display = _solidConverter.Convert(part.Solid3dBody); - civilObject["displayValue"] = display; + civilObject["baseCurves"] = baseCurves; } - // POC: not setting property sets yet, need to determine connector parameter interoperability - // POC: not setting part data yet, same reason as above + // extract display value + List display = _displayValueExtractor.GetDisplayValue(target); + if (display.Count > 0) + { + civilObject["displayValue"] = display; + } return civilObject; } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs new file mode 100644 index 000000000..f3b1f2fe7 --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs @@ -0,0 +1,119 @@ +namespace Speckle.Converters.Civil3dShared.ToSpeckle; + +/// +/// Extracts parameters out from an element. Expects to be scoped per operation. +/// +public class PartDataExtractor +{ + /// POC: Note that we're abusing dictionaries in here because we've yet to have a simple way to serialize non-base derived classes (or structs?) + + public PartDataExtractor() { } + + /// + /// Extracts part data out from an entity. Expects to be scoped per operation. + /// + /// + /// + public Dictionary? GetPartData(CDB.Entity entity) + { + if (entity is CDB.Part part) + { + return ParsePartData(part.PartData); + } + + return null; + } + + private Dictionary ParsePartData(CDB.PartDataRecord partData) + { + var result = new Dictionary(); + + foreach (CDB.PartDataField field in partData.GetAllDataFields()) + { + var value = GetValue(field); + //var isNullOrEmpty = value == null || (value is string s && string.IsNullOrEmpty(s)); + + var fieldDictionary = new Dictionary() + { + ["value"] = value, + ["name"] = field.Name, + ["context"] = field.Context.ToString(), + ["isFromRange"] = field.IsFromRange, + ["isReadOnly"] = field.IsReadOnly, + ["units"] = field.Units + }; + + if (!result.ContainsKey(field.Name)) + { + result.Add(field.Name, fieldDictionary); + } + } + + return result; + } + + private object? GetValue(CDB.PartDataField field) + { + switch (field.DataType) + { + case CDB.PartCatalogDataType.Double: + return field.IsFromList + ? GetValueListGeneric(field.ValueList) + : field.IsFromRange + ? GetValueRangeGeneric(field.ValueRange) + : field.Value as double?; + case CDB.PartCatalogDataType.Int: + return field.IsFromList + ? GetValueListGeneric(field.ValueList) + : field.IsFromRange + ? GetValueRangeGeneric(field.ValueRange) + : field.Value as int?; + case CDB.PartCatalogDataType.Bool: + return field.IsFromList + ? GetValueListGeneric(field.ValueList) + : field.IsFromRange + ? GetValueRangeGeneric(field.ValueRange) + : field.Value as bool?; + default: + return field.IsFromList + ? GetValueListGeneric(field.ValueList) + : field.IsFromRange + ? GetValueRangeGeneric(field.ValueRange) + : field.Value.ToString(); + } + } + + private List? GetValueListGeneric(CDB.PartDataList list) + { + if (list == null || list.Count == 0) + { + return default; + } + + List result = new(); + for (int i = 0; i < list.Count; i++) + { + if (list[i] is TResult item) + { + result.Add(item); + } + } + + return result; + } + + private List? GetValueRangeGeneric(CDB.PartDataRange range) + { + if (range == null) + { + return default; + } + + if (range.RangeMin is TResult min && range.RangeMax is TResult max) + { + return new() { min, max }; + } + + return default; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetDefinitionHandler.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetDefinitionHandler.cs new file mode 100644 index 000000000..73f210461 --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetDefinitionHandler.cs @@ -0,0 +1,67 @@ +using Speckle.Sdk; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle; + +/// +/// Keeps track during a send conversion operation of the property set definitions used. +/// +public class PropertySetDefinitionHandler +{ + /// + /// Keeps track of all property set definitions used in the current send operation. This should be added to the properties dict on the root commit object post conversion. + /// + /// POC: Note that we're abusing dictionaries in here because we've yet to have a simple way to serialize non-base derived classes (or structs?) + /// POC: We're storing these by property set def name atm. There is a decent change different property sets can have the same name, need to validate this. + public Dictionary> Definitions { get; } = new(); + + /// + /// Extracts out and stores in the property set definition. + /// + /// The property set definition. Assumes this is opened for Read already. + /// + public (Dictionary propertyDefinitionNames, string name) HandleDefinition( + AAECPDB.PropertySetDefinition setDefinition + ) + { + Dictionary propertyDefinitionsDict = new(); // this is used to store on the property set definition + Dictionary propertyDefinitionNames = new(); // this is used to pass to the instance for property value retrieval + foreach (AAECPDB.PropertyDefinition propertyDefinition in setDefinition.Definitions) + { + string propertyName = propertyDefinition.Name; + propertyDefinitionNames[propertyDefinition.Id] = propertyName; + var propertyDict = new Dictionary() + { + ["name"] = propertyName, + ["description"] = propertyDefinition.Description, + ["id"] = propertyDefinition.Id, + ["isReadOnly"] = propertyDefinition.IsReadOnly, + ["dataType"] = propertyDefinition.DataType.ToString(), + ["defaultValue"] = propertyDefinition.DefaultData + }; + + try + { + // accessing unit type prop can be expected to throw if it's not applicable to the definition + propertyDict["units"] = propertyDefinition.UnitType.GetTypeDisplayName(true); + } + catch (Exception e) when (!e.IsFatal()) { } + + propertyDefinitionsDict[propertyName] = propertyDict; + } + + var name = setDefinition.Name; + + if (Definitions.ContainsKey(name)) + { + return (propertyDefinitionNames, name); + } + + Definitions[name] = new Dictionary() + { + ["name"] = name, + ["propertyDefinitions"] = propertyDefinitionsDict + }; + + return (propertyDefinitionNames, name); + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetExtractor.cs new file mode 100644 index 000000000..6c56bae7b --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PropertySetExtractor.cs @@ -0,0 +1,151 @@ +using Microsoft.Extensions.Logging; +using Speckle.Converters.Common; +using Speckle.Sdk; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle; + +/// +/// Extracts property sets out from a dbobject. Expects to be scoped per operation. +/// +public class PropertySetExtractor +{ + /// POC: Note that we're abusing dictionaries in here because we've yet to have a simple way to serialize non-base derived classes (or structs?) + private readonly PropertySetDefinitionHandler _propertySetDefinitionHandler; + private readonly IConverterSettingsStore _settingsStore; + private readonly ILogger _logger; + + public PropertySetExtractor( + PropertySetDefinitionHandler propertySetDefinitionHandler, + IConverterSettingsStore settingsStore, + ILogger logger + ) + { + _propertySetDefinitionHandler = propertySetDefinitionHandler; + _settingsStore = settingsStore; + _logger = logger; + } + + /// + /// Extracts property sets out from a dbObject. Expects to be scoped per operation. + /// + /// + /// + public Dictionary? GetPropertySets(ADB.DBObject dbObject) + { + ADB.ObjectIdCollection? propertySetIds = null; + + try + { + propertySetIds = AAECPDB.PropertyDataServices.GetPropertySets(dbObject); + } + catch (Exception e) when (!e.IsFatal()) + { + _logger.LogWarning(e, $"Failed to retrieve property sets on object {dbObject.Handle.Value}"); + } + + if (propertySetIds is null || propertySetIds.Count == 0) + { + return null; + } + + using (var tr = _settingsStore.Current.Document.Database.TransactionManager.StartTransaction()) + { + Dictionary propertySets = new(); + foreach (ADB.ObjectId id in propertySetIds) + { + AAECPDB.PropertySet propertySet = (AAECPDB.PropertySet)tr.GetObject(id, ADB.OpenMode.ForRead); + + // parse property sets within this transaction, since we'll need it for retrieving the definition as well + if (ParsePropertySet(propertySet, tr) is (string propertySetName, Dictionary propertySetValue)) + { + propertySets[propertySetName] = propertySetValue; + } + } + + tr.Commit(); + return propertySets; + } + } + + private (string, Dictionary)? ParsePropertySet(AAECPDB.PropertySet propertySet, ADB.Transaction tr) + { + try + { + // var isNullOrEmpty = value == null || (value is string s && string.IsNullOrEmpty(s)); + // POC: should add same check as in revit for sending null or empty values + + var setDefinition = (AAECPDB.PropertySetDefinition) + tr.GetObject(propertySet.PropertySetDefinition, ADB.OpenMode.ForRead); + + (Dictionary propertyDefinitionNames, string name) = _propertySetDefinitionHandler.HandleDefinition( + setDefinition + ); + + // get all property values in the propertyset + Dictionary properties = new(); + foreach (AAECPDB.PropertySetData data in propertySet.PropertySetData) + { + string dataName = propertyDefinitionNames.TryGetValue(data.Id, out string propertyDefinitionName) + ? propertyDefinitionName + : data.FieldBucketId; + + var value = GetValue(data); + + var propertyValueDict = new Dictionary() { ["value"] = value, ["name"] = dataName }; + + try + { + // accessing unit type prop can be expected to throw if it's not applicable to the definition + propertyValueDict["units"] = data.UnitType.GetTypeDisplayName(true); + } + catch (Exception e) when (!e.IsFatal()) { } + + properties[dataName] = propertyValueDict; + } + + // add property set to dict + Dictionary propertySetDict = + new() + { + ["name"] = name, + ["properties"] = properties, + ["definitionName"] = name + }; + + return (name, propertySetDict); + } + catch (Exception e) when (!e.IsFatal()) + { + _logger.LogWarning(e, $"Failed to convert property set {propertySet.Name}"); + } + + return null; + } + + private object? GetValue(AAECPDB.PropertySetData data) + { + object fieldData = data.GetData(data.UnitType); + + switch (data.DataType) + { + case AAEC.PropertyData.DataType.Integer: + return fieldData as int?; + case AAEC.PropertyData.DataType.Real: + return fieldData as double?; + case AAEC.PropertyData.DataType.TrueFalse: + return fieldData as bool?; + case AAEC.PropertyData.DataType.Graphic: // POC: not sure how to support atm + return null; + case AAEC.PropertyData.DataType.List: + return fieldData as List; + case AAEC.PropertyData.DataType.AutoIncrement: + return fieldData as int?; + case AAEC.PropertyData.DataType.AlphaIncrement: // POC: not sure what this is + return fieldData; + case AAEC.PropertyData.DataType.Text: + return fieldData as string; + default: + return fieldData; + } + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/GridSurfaceToSpeckleMeshRawConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/GridSurfaceToSpeckleMeshRawConverter.cs new file mode 100644 index 000000000..1c874940a --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/GridSurfaceToSpeckleMeshRawConverter.cs @@ -0,0 +1,71 @@ +using Autodesk.AutoCAD.Geometry; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle.Raw; + +public class GridSurfaceToSpeckleMeshRawConverter : ITypedConverter +{ + private readonly IConverterSettingsStore _settingsStore; + + public GridSurfaceToSpeckleMeshRawConverter(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + public SOG.Mesh Convert(object target) => Convert((CDB.GridSurface)target); + + public SOG.Mesh Convert(CDB.GridSurface target) + { + List vertices = new(); + List faces = new(); + Dictionary indices = new(); + + int indexCounter = 0; + foreach (var cell in target.GetCells(false)) + { + try + { + Point3d[] cellVertices = + { + cell.BottomLeftVertex.Location, + cell.BottomRightVertex.Location, + cell.TopLeftVertex.Location, + cell.TopRightVertex.Location + }; + + foreach (Point3d p in cellVertices) + { + if (!indices.ContainsKey(p)) + { + vertices.Add(p.X); + vertices.Add(p.Y); + vertices.Add(p.Z); + indices.Add(p, indexCounter); + indexCounter++; + } + } + + faces.Add(4); + faces.Add(indices[cellVertices[0]]); + faces.Add(indices[cellVertices[1]]); + faces.Add(indices[cellVertices[2]]); + faces.Add(indices[cellVertices[3]]); + } + finally + { + cell.Dispose(); + } + } + + SOG.Mesh mesh = + new() + { + vertices = vertices, + faces = faces, + units = _settingsStore.Current.SpeckleUnits + }; + + return mesh; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs index c2517f70b..2317a00d9 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs @@ -3,7 +3,7 @@ using Speckle.Objects.Other; using AECPropDB = Autodesk.Aec.PropertyData.DatabaseServices; -namespace Speckle.Converters.Civil3d.ToSpeckle.Raw; +namespace Speckle.Converters.Civil3dShared.ToSpeckle.Raw; public class PropertySetToSpeckleRawConverter : ITypedConverter> { diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/TinSurfaceToSpeckleMeshRawConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/TinSurfaceToSpeckleMeshRawConverter.cs new file mode 100644 index 000000000..aaf607bd9 --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/TinSurfaceToSpeckleMeshRawConverter.cs @@ -0,0 +1,67 @@ +using Autodesk.AutoCAD.Geometry; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle.Raw; + +public class TinSurfaceToSpeckleMeshRawConverter : ITypedConverter +{ + private readonly IConverterSettingsStore _settingsStore; + + public TinSurfaceToSpeckleMeshRawConverter(IConverterSettingsStore settingsStore) + { + _settingsStore = settingsStore; + } + + public SOG.Mesh Convert(object target) => Convert((CDB.TinSurface)target); + + public SOG.Mesh Convert(CDB.TinSurface target) + { + List vertices = new(); + List faces = new(); + Dictionary indices = new(); + + int indexCounter = 0; + foreach (var triangle in target.GetTriangles(false)) + { + try + { + Point3d[] triangleVertices = + { + triangle.Vertex1.Location, + triangle.Vertex2.Location, + triangle.Vertex3.Location + }; + foreach (Point3d p in triangleVertices) + { + if (!indices.ContainsKey(p)) + { + vertices.Add(p.X); + vertices.Add(p.Y); + vertices.Add(p.Z); + indices.Add(p, indexCounter); + indexCounter++; + } + } + faces.Add(3); + faces.Add(indices[triangleVertices[0]]); + faces.Add(indices[triangleVertices[1]]); + faces.Add(indices[triangleVertices[2]]); + } + finally + { + triangle.Dispose(); + } + } + + SOG.Mesh mesh = + new() + { + faces = faces, + vertices = vertices, + units = _settingsStore.Current.SpeckleUnits + }; + + return mesh; + } +} diff --git a/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs b/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs index f5ad1b9d3..a0abff694 100644 --- a/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs +++ b/Sdk/Speckle.Connectors.Common/Operations/ProxyKeys.cs @@ -1,4 +1,4 @@ -namespace Speckle.Connectors.Common.Operations; +namespace Speckle.Connectors.Common.Operations; public static class ProxyKeys { @@ -7,4 +7,5 @@ public static class ProxyKeys public const string INSTANCE_DEFINITION = "instanceDefinitionProxies"; public const string GROUP = "groupProxies"; public const string PARAMETER_DEFINITIONS = "parameterDefinitions"; + public const string PROPERTYSET_DEFINITIONS = "propertySetDefinitions"; } From 102a7cbd9e7099572c13c2332843c832999125d6 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 11 Oct 2024 11:53:02 +0100 Subject: [PATCH 53/62] fix: fmt --- .../ToHost/Helpers/RawEncodingToHost.cs | 1 - .../ToHost/Raw/BrepXToHostConverter.cs | 1 - .../ToHost/Raw/ExtrusionXToHostConverter.cs | 1 + .../ToSpeckle/Raw/BrepToSpeckleConverter.cs | 2 +- 4 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs index acb582bdd..ca59d5b23 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Helpers/RawEncodingToHost.cs @@ -28,4 +28,3 @@ public static class RawEncodingToHost return brepObject.ToList(); } } - diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs index b1f031566..d4d39b3f5 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/BrepXToHostConverter.cs @@ -7,4 +7,3 @@ public class BrepXToHostConverter : ITypedConverter Convert(SOG.BrepX target) => RawEncodingToHost.Convert(target); } - diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs index 56eea779f..713c697b1 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToHost/Raw/ExtrusionXToHostConverter.cs @@ -2,6 +2,7 @@ using Speckle.Converters.Rhino.ToHost.Helpers; namespace Speckle.Converters.Rhino.ToHost.Raw; + public class ExtrusionXToHostConverter : ITypedConverter> { public List Convert(SOG.ExtrusionX target) => RawEncodingToHost.Convert(target); diff --git a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs index aaa74c71d..e17527044 100644 --- a/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs +++ b/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BrepToSpeckleConverter.cs @@ -43,7 +43,7 @@ IConverterSettingsStore settingsStore public SOG.Brep Convert(RG.Brep target) { var tol = _settingsStore.Current.Document.ModelAbsoluteTolerance; - target.Repair(tol); // NOTE: for objects far-ish (not that far imho) from origin, this call nukes performance and takes ages. + target.Repair(tol); // NOTE: for objects far-ish (not that far imho) from origin, this call nukes performance and takes ages. // POC: CNX-9276 This should come as part of the user settings in the context object. // if (PreprocessGeometry) From bd4b5657993e9aa3d798e00c27de84a70855b300 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Fri, 11 Oct 2024 11:53:28 +0100 Subject: [PATCH 54/62] Fix activity scope (#299) * AsyncLocal in activity scope needs proper initialization * add tests * Fix Scope for real --- Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs index b81d6379d..dc503a476 100644 --- a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs @@ -4,10 +4,11 @@ public static class ActivityScope { private static readonly AsyncLocal> s_tags = new() { Value = new() }; - public static IReadOnlyDictionary Tags => s_tags.Value; + public static IReadOnlyDictionary Tags => s_tags.Value ?? []; public static IDisposable SetTag(string key, string value) { + s_tags.Value ??= new(); s_tags.Value[key] = value; return new TagScope(key); } From 491490c559bfc8b68690d4e97363279c8eb0710a Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 11 Oct 2024 13:14:21 +0100 Subject: [PATCH 55/62] fix: CNX-565 and CNX-564 --- .../Parameters/ParameterExtractor.cs | 31 +++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index 09aada6a1..0c2451e0d 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -114,6 +114,22 @@ ILogger logger continue; } + if (value is (string typeName, string familyName)) // element type dilemma + { + if (internalDefinitionName == "ELEM_FAMILY_PARAM") + { + value = familyName; + } + else if (internalDefinitionName == "ELEM_TYPE_PARAM") + { + value = typeName; + } + else + { + value = familyName + " " + typeName; + } + } + var param = new Dictionary() { ["value"] = value, @@ -149,7 +165,7 @@ ILogger logger return dict; } - private readonly Dictionary _elementNameCache = new(); + private readonly Dictionary _elementNameCache = new(); private object? GetValue(DB.Parameter parameter) { @@ -168,13 +184,22 @@ ILogger logger return null; } - if (_elementNameCache.TryGetValue(elId, out string? value)) + if (_elementNameCache.TryGetValue(elId, out object? value)) { return value; } var docElement = _settingsStore.Current.Document.GetElement(elId); - var docElementName = docElement?.Name ?? elId.ToString(); + object? docElementName; + if (docElement is DB.ElementType elementType) + { + docElementName = (elementType.Name, elementType.FamilyName); // new[] { elementType.Name, elementType.FamilyName }; + } + else + { + docElementName = docElement?.Name ?? null; + } + _elementNameCache[parameter.AsElementId()] = docElementName; return docElementName; case DB.StorageType.String: From 51550c96a6dbb3b151f2b9f2056e6e77266f2508 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 11 Oct 2024 13:59:44 +0100 Subject: [PATCH 56/62] feat: adds support for assembly structure (CNX-570) (extracting material thickness and composition) --- .../Parameters/ParameterExtractor.cs | 35 ++++++++++++++++--- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index 0c2451e0d..b15cbb165 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -65,7 +65,31 @@ ILogger logger return CreateParameterDictionary(instanceParameterDictionary, null); } - typeParameterDictionary = ParseParameterSet(type.Parameters); + typeParameterDictionary = ParseParameterSet(type.Parameters); // NOTE: type parameters should be ideally proxied out for a better data layout. + if (type is DB.HostObjAttributes hostObjectAttr) + { + var factor = _scalingServiceToSpeckle.ScaleLength(1); + + var structureDictionary = new Dictionary(); + var structure = hostObjectAttr.GetCompoundStructure(); + var layers = structure.GetLayers(); + foreach (var layer in layers) + { + if (_settingsStore.Current.Document.GetElement(layer.MaterialId) is DB.Material material) + { + structureDictionary[material.Name] = new Dictionary() + { + ["material"] = material.Name, + ["function"] = layer.Function.ToString(), + ["thickness"] = layer.Width * factor, + ["units"] = _settingsStore.Current.SpeckleUnits + }; + } + } + + typeParameterDictionary["Structure"] = structureDictionary; + } + _typeParameterCache[typeId] = typeParameterDictionary; return CreateParameterDictionary(instanceParameterDictionary, typeParameterDictionary); @@ -114,9 +138,9 @@ ILogger logger continue; } - if (value is (string typeName, string familyName)) // element type dilemma + if (value is (string typeName, string familyName)) // element type: same element, different expected values depending on the param definition { - if (internalDefinitionName == "ELEM_FAMILY_PARAM") + if (internalDefinitionName == "ELEM_FAMILY_PARAM") // Probably should be using the BUILTINPARAM whatever { value = familyName; } @@ -191,9 +215,12 @@ ILogger logger var docElement = _settingsStore.Current.Document.GetElement(elId); object? docElementName; + + // Note: for element types, different params point at the same element. We're getting the right value out in the parent function + // based on what the actual built in param name is. if (docElement is DB.ElementType elementType) { - docElementName = (elementType.Name, elementType.FamilyName); // new[] { elementType.Name, elementType.FamilyName }; + docElementName = (elementType.Name, elementType.FamilyName); } else { From 9804acd10c6b00260f3bcbe5dace96e60720bfbd Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 11 Oct 2024 14:14:23 +0100 Subject: [PATCH 57/62] feat: makes material quantities a map (used to a be a list) tbh, this just makes it easier to show in the frontend - but worthwhile for now --- .../RevitRootToSpeckleConverter.cs | 4 ++-- .../ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs index 120f81c37..71e0772af 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs @@ -13,7 +13,7 @@ namespace Speckle.Converters.RevitShared; public class RevitRootToSpeckleConverter : IRootToSpeckleConverter { private readonly IConverterManager _toSpeckle; - private readonly ITypedConverter>> _materialQuantityConverter; + private readonly ITypedConverter> _materialQuantityConverter; private readonly IConverterSettingsStore _converterSettings; private readonly ParameterExtractor _parameterExtractor; private readonly ILogger _logger; @@ -22,7 +22,7 @@ public class RevitRootToSpeckleConverter : IRootToSpeckleConverter public RevitRootToSpeckleConverter( IConverterManager toSpeckle, - ITypedConverter>> materialQuantityConverter, + ITypedConverter> materialQuantityConverter, IConverterSettingsStore converterSettings, ParameterExtractor parameterExtractor, ILogger logger diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs index 0953be5a0..6defa25b0 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Raw/MaterialQuantitiesToSpeckle.cs @@ -11,7 +11,7 @@ namespace Speckle.Converters.RevitShared.ToSpeckle; /// Lighter converter for material quantities. It basically returns a For each material quantity available on the target element, it will return a dictionary containing: area, volume, units, material name, material class and material category. /// POC: we need to validate this with user needs. It currently does not include material parameters or any other more complex props to ensure speedy sending of data and a lighter payload. We're though keen to re-add more data provided we can validate it. /// -public class MaterialQuantitiesToSpeckleLite : ITypedConverter>> +public class MaterialQuantitiesToSpeckleLite : ITypedConverter> { private readonly ScalingServiceToSpeckle _scalingService; private readonly IConverterSettingsStore _converterSettings; @@ -30,10 +30,9 @@ IConverterSettingsStore converterSettings /// /// /// - public List> Convert(DB.Element target) + public Dictionary Convert(DB.Element target) { - List> quantities = new(); - + Dictionary quantities = new(); if (target.Category.HasMaterialQuantities) { foreach (DB.ElementId matId in target.GetMaterialIds(false)) @@ -55,7 +54,7 @@ public List> Convert(DB.Element target) materialQuantity["materialName"] = material.Name; materialQuantity["materialCategory"] = material.MaterialCategory; materialQuantity["materialClass"] = material.MaterialClass; - quantities.Add(materialQuantity); + quantities[material.Name] = materialQuantity; } } } From 650022ee10c511bc490579261cd1f80639f15cbd Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 11 Oct 2024 14:27:00 +0100 Subject: [PATCH 58/62] chore: adds comment --- .../ToSpeckle/Parameters/ParameterExtractor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs index b15cbb165..6f93643b4 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/ToSpeckle/Parameters/ParameterExtractor.cs @@ -68,8 +68,8 @@ ILogger logger typeParameterDictionary = ParseParameterSet(type.Parameters); // NOTE: type parameters should be ideally proxied out for a better data layout. if (type is DB.HostObjAttributes hostObjectAttr) { + // NOTE: this could be paired up and merged with material quantities - they're pretty much the same :/ var factor = _scalingServiceToSpeckle.ScaleLength(1); - var structureDictionary = new Dictionary(); var structure = hostObjectAttr.GetCompoundStructure(); var layers = structure.GetLayers(); From dca243825a499072be6e08a798133764d4a5f136 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Fri, 11 Oct 2024 14:27:34 +0100 Subject: [PATCH 59/62] chore: fmt --- .../RevitRootToSpeckleConverter.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs index 413bd65b6..0e6bddd68 100644 --- a/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs +++ b/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToSpeckleConverter.cs @@ -54,7 +54,7 @@ public Base Convert(object target) ?? throw new SpeckleConversionException($"Conversion of object with type {target.GetType()} returned null"); result.applicationId = element.UniqueId; - + // Add ElementID to the converted objects result["elementId"] = element.Id.ToString()!; From 4f04e9e1b560043d11e43e2da8a4a16c77797893 Mon Sep 17 00:00:00 2001 From: Adam Hathcock Date: Mon, 14 Oct 2024 14:36:07 +0100 Subject: [PATCH 60/62] Use Metrics in Connectors (#296) * add metrics to host apps * merge fixes and compiles * Use ME.Console and OTel for logging to correlate * clean up * clean up for metrics * fix self-review comments * fix seq initialization * clean up for http traces and rhino 8 * use latest SDK * formatting --- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../Bindings/RhinoSendBinding.cs | 7 +- .../packages.lock.json | 20 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 22 ++-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 20 +-- .../packages.lock.json | 40 +++--- .../Speckle.Connectors.DUI/packages.lock.json | 18 +-- Directory.Packages.props | 5 +- Sdk/Speckle.Connectors.Common/Connector.cs | 48 +++++-- .../ConnectorActivityFactory.cs | 7 +- .../ConnectorMetricsFactory.cs | 34 +++++ .../packages.lock.json | 14 +- ...r.cs => ActivityScopeActivityProcessor.cs} | 4 +- .../ActivityScopeExtensions.cs | 9 +- .../ActivityScopeLogProcessor.cs | 22 ++++ Sdk/Speckle.Connectors.Logging/Consts.cs | 25 ++++ .../Internal/LogBuilder.cs | 122 +++++++++++------- .../Internal/MetricsBuilder.cs | 42 ++++++ .../Internal/ResourceCreator.cs | 2 +- .../Internal/TracingBuilder.cs | 29 ++--- .../LoggerProvider.cs | 12 +- .../LoggingActivity.cs | 13 ++ .../LoggingActivityFactory.cs | 36 +----- .../LoggingMetricsFactory.cs | 42 ++++++ .../Observability.cs | 5 +- .../Speckle.Connectors.Logging.csproj | 1 - .../SpeckleObservability.cs | 43 +++++- .../packages.lock.json | 37 +----- .../packages.lock.json | 18 +-- .../packages.lock.json | 16 +-- .../packages.lock.json | 14 +- 57 files changed, 723 insertions(+), 514 deletions(-) create mode 100644 Sdk/Speckle.Connectors.Common/ConnectorMetricsFactory.cs rename Sdk/Speckle.Connectors.Logging/{ActivityScopeProcessor.cs => ActivityScopeActivityProcessor.cs} (57%) create mode 100644 Sdk/Speckle.Connectors.Logging/ActivityScopeLogProcessor.cs create mode 100644 Sdk/Speckle.Connectors.Logging/Internal/MetricsBuilder.cs create mode 100644 Sdk/Speckle.Connectors.Logging/LoggingMetricsFactory.cs diff --git a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json index e0e855e7d..3d43e5fd2 100644 --- a/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json +++ b/Connectors/ArcGIS/Speckle.Connectors.ArcGIS3/packages.lock.json @@ -244,8 +244,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -253,7 +253,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -278,7 +278,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -310,18 +310,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json index c2fecfc1c..1cd4a4adc 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2022/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json index e75ec4fdb..c760a6a8c 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2023/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -308,7 +308,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -346,18 +346,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json index 82f90da39..49a789a5b 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -309,7 +309,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -347,18 +347,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json index 80fca9e9d..4a022d9e4 100644 --- a/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -311,18 +311,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json index 239cdee6e..8e875b34f 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json +++ b/Connectors/Autocad/Speckle.Connectors.Civil3d2024/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -318,7 +318,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -356,18 +356,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json index 67b0bb882..8e56f9e6b 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2022/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.converters.revit2022": { @@ -361,11 +361,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Revit.API": { @@ -376,9 +376,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json index f6453e352..ccab26bf5 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2023/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.converters.revit2023": { @@ -361,11 +361,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Revit.API": { @@ -376,9 +376,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json index 424a1a3c9..12629c3d1 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2024/packages.lock.json @@ -302,8 +302,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -311,7 +311,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -322,7 +322,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.converters.revit2024": { @@ -361,11 +361,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Revit.API": { @@ -376,9 +376,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json index 6494b9ffa..bef844ca0 100644 --- a/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json +++ b/Connectors/Revit/Speckle.Connectors.Revit2025/packages.lock.json @@ -260,8 +260,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -269,7 +269,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -287,7 +287,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.converters.revit2025": { @@ -332,11 +332,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Revit.API": { @@ -347,9 +347,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json index a19080b9c..8964caa3e 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino7/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,7 +310,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.converters.rhino7": { @@ -355,18 +355,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json index 1dd7c50a1..e46e36d3e 100644 --- a/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json +++ b/Connectors/Rhino/Speckle.Connectors.Rhino8/packages.lock.json @@ -283,8 +283,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -292,7 +292,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -310,7 +310,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.converters.rhino8": { @@ -355,18 +355,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs index f225e2924..0670789a2 100644 --- a/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs +++ b/Connectors/Rhino/Speckle.Connectors.RhinoShared/Bindings/RhinoSendBinding.cs @@ -19,6 +19,7 @@ using Speckle.Converters.Rhino; using Speckle.Sdk; using Speckle.Sdk.Common; +using Speckle.Sdk.Logging; namespace Speckle.Connectors.Rhino.Bindings; @@ -39,6 +40,7 @@ public sealed class RhinoSendBinding : ISendBinding private readonly ITopLevelExceptionHandler _topLevelExceptionHandler; private readonly IRhinoConversionSettingsFactory _rhinoConversionSettingsFactory; private readonly ISpeckleApplication _speckleApplication; + private readonly ISdkActivityFactory _activityFactory; /// /// Used internally to aggregate the changed objects' id. Note we're using a concurrent dictionary here as the expiry check method is not thread safe, and this was causing problems. See: @@ -59,7 +61,8 @@ public RhinoSendBinding( IOperationProgressManager operationProgressManager, ILogger logger, IRhinoConversionSettingsFactory rhinoConversionSettingsFactory, - ISpeckleApplication speckleApplication + ISpeckleApplication speckleApplication, + ISdkActivityFactory activityFactory ) { _store = store; @@ -75,6 +78,7 @@ ISpeckleApplication speckleApplication _topLevelExceptionHandler = parent.TopLevelExceptionHandler.Parent.TopLevelExceptionHandler; Parent = parent; Commands = new SendBindingUICommands(parent); // POC: Commands are tightly coupled with their bindings, at least for now, saves us injecting a factory. + _activityFactory = activityFactory; SubscribeToRhinoEvents(); } @@ -153,6 +157,7 @@ private void SubscribeToRhinoEvents() public async Task Send(string modelCardId) { + using var activity = _activityFactory.Start(); using var scope = _serviceProvider.CreateScope(); scope .ServiceProvider.GetRequiredService>() diff --git a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json index c9d9024e0..a827a4946 100644 --- a/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json +++ b/Connectors/Tekla/Speckle.Connector.Tekla2024/packages.lock.json @@ -399,8 +399,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -408,7 +408,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -457,18 +457,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json index fb7b412a2..ce5d5d0a4 100644 --- a/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json +++ b/Converters/ArcGIS/Speckle.Converters.ArcGIS3/packages.lock.json @@ -237,7 +237,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -260,18 +260,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json index 65c4a6461..d793366bf 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2022/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json index 673be9880..06502516a 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2023/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json index fc9dba428..ae3c4c29f 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2024/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -301,7 +301,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -339,18 +339,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json index 1127e99af..aad3d3cc6 100644 --- a/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json +++ b/Converters/Autocad/Speckle.Converters.Autocad2025/packages.lock.json @@ -238,8 +238,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -247,7 +247,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -265,7 +265,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.DependencyInjection": { @@ -303,18 +303,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json index 15c45655d..1d5682905 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json +++ b/Converters/Civil3d/Speckle.Converters.Civil3d2024/packages.lock.json @@ -282,7 +282,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -305,18 +305,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json index 9dfb76777..693ece02c 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json index 7ffb759fa..4f91063c7 100644 --- a/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2022/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index a5471652b..70c7e011c 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json index be3f37143..22fd4ef63 100644 --- a/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2023/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json index e8f3ac41a..2112e0a11 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json index 56021520e..2b3064cd4 100644 --- a/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2024/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json index f8bb5033a..0c3e5dbe5 100644 --- a/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json +++ b/Converters/Revit/Speckle.Converters.Revit2025/packages.lock.json @@ -237,7 +237,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -260,18 +260,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index 614ee9434..f160cf303 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -363,7 +363,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.testing": { @@ -393,18 +393,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json index 22502c755..36eff02fd 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino7/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json index 4c9b238a6..5fa802b9a 100644 --- a/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json +++ b/Converters/Rhino/Speckle.Converters.Rhino8/packages.lock.json @@ -273,7 +273,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "Microsoft.Extensions.Logging": { @@ -296,18 +296,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json index 57e327307..e2c78991c 100644 --- a/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.Tests/packages.lock.json @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -351,7 +351,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -394,18 +394,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json index 07d7ae116..914064d33 100644 --- a/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI.WebView/packages.lock.json @@ -274,8 +274,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -283,7 +283,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -319,18 +319,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -588,8 +588,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.dui": { @@ -597,7 +597,7 @@ "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", "Speckle.Connectors.Common": "[1.0.0, )", - "Speckle.Sdk": "[3.1.0-dev.160, )", + "Speckle.Sdk": "[3.1.0-dev.162, )", "System.Threading.Tasks.Dataflow": "[6.0.0, )" } }, @@ -633,18 +633,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/DUI3/Speckle.Connectors.DUI/packages.lock.json b/DUI3/Speckle.Connectors.DUI/packages.lock.json index eb01389dd..b88c79359 100644 --- a/DUI3/Speckle.Connectors.DUI/packages.lock.json +++ b/DUI3/Speckle.Connectors.DUI/packages.lock.json @@ -50,9 +50,9 @@ }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", @@ -325,8 +325,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.logging": { @@ -355,11 +355,11 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } } } diff --git a/Directory.Packages.props b/Directory.Packages.props index 20fe69345..88a142aae 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -31,7 +31,6 @@ - @@ -39,8 +38,8 @@ - - + + diff --git a/Sdk/Speckle.Connectors.Common/Connector.cs b/Sdk/Speckle.Connectors.Common/Connector.cs index 7b7b314b5..40c1fefc7 100644 --- a/Sdk/Speckle.Connectors.Common/Connector.cs +++ b/Sdk/Speckle.Connectors.Common/Connector.cs @@ -12,10 +12,19 @@ namespace Speckle.Connectors.Common; public static class Connector { + private sealed record LoggingDisposable(IDisposable Tracing, IDisposable Metrics) : IDisposable + { + public void Dispose() + { + Tracing.Dispose(); + Metrics.Dispose(); + } + } + public static readonly string TabName = "Speckle"; public static readonly string TabTitle = "Speckle (Beta)"; - public static IDisposable? Initialize( + public static IDisposable Initialize( this IServiceCollection serviceCollection, HostApplication application, HostAppVersion version @@ -23,36 +32,47 @@ HostAppVersion version { TypeLoader.Initialize(typeof(Base).Assembly, typeof(Point).Assembly); - var (logging, tracing) = Observability.Initialize( + var (logging, tracing, metrics) = Observability.Initialize( application.Name + " " + HostApplications.GetVersion(version), application.Slug, Assembly.GetExecutingAssembly().GetVersion(), - new( #if DEBUG || LOCAL - new SpeckleLogging(Console: true, MinimumLevel: SpeckleLogLevel.Debug), new SpeckleTracing(Console: false) + new( + new SpeckleLogging(Console: true, File: new(), MinimumLevel: SpeckleLogLevel.Debug), + new SpeckleTracing(Console: false), + new SpeckleMetrics(Console: false) + ) #else + new( new SpeckleLogging( Console: true, - Otel: new( - Endpoint: "https://seq-dev.speckle.systems/ingest/otlp/v1/logs", - Headers: new() { { "X-Seq-ApiKey", "y5YnBp12ZE1Czh4tzZWn" } } - ), + File: new(), + Otel: + [ + new( + Endpoint: "https://seq-dev.speckle.systems/ingest/otlp/v1/logs", + Headers: new() { { "X-Seq-ApiKey", "y5YnBp12ZE1Czh4tzZWn" } } + ) + ], MinimumLevel: SpeckleLogLevel.Warning ), new SpeckleTracing( Console: false, - Otel: new( - Endpoint: "https://seq-dev.speckle.systems/ingest/otlp/v1/traces", - Headers: new() { { "X-Seq-ApiKey", "y5YnBp12ZE1Czh4tzZWn" } } - ) + Otel: + [ + new( + Endpoint: "https://seq-dev.speckle.systems/ingest/otlp/v1/traces", + Headers: new() { { "X-Seq-ApiKey", "y5YnBp12ZE1Czh4tzZWn" } } + ) + ] ) -#endif ) +#endif ); serviceCollection.AddLogging(x => x.AddProvider(new SpeckleLogProvider(logging))); serviceCollection.AddSpeckleSdk(application, version, Assembly.GetExecutingAssembly().GetVersion()); serviceCollection.AddSingleton(); - return tracing; + return new LoggingDisposable(tracing, metrics); } } diff --git a/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs b/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs index b69ec0f2d..417361f59 100644 --- a/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs +++ b/Sdk/Speckle.Connectors.Common/ConnectorActivityFactory.cs @@ -1,11 +1,12 @@ using System.Runtime.CompilerServices; using Speckle.Connectors.Logging; +using Speckle.Sdk; using Speckle.Sdk.Common; using Speckle.Sdk.Logging; namespace Speckle.Connectors.Common; -public sealed class ConnectorActivityFactory : ISdkActivityFactory, IDisposable +public sealed class ConnectorActivityFactory(ISpeckleApplication application) : ISdkActivityFactory, IDisposable { private readonly LoggingActivityFactory _loggingActivityFactory = new(); @@ -15,7 +16,7 @@ public sealed class ConnectorActivityFactory : ISdkActivityFactory, IDisposable public ISdkActivity? Start(string? name = default, [CallerMemberName] string source = "") { - var activity = _loggingActivityFactory.Start(name, source); + var activity = _loggingActivityFactory.Start(application.ApplicationAndVersion + " " + (name ?? source)); if (activity is null) { return null; @@ -43,5 +44,7 @@ public void SetStatus(SdkActivityStatusCode code) => _ => throw new ArgumentOutOfRangeException(nameof(code), code, null) } ); + + public void InjectHeaders(Action header) => activity.InjectHeaders(header); } } diff --git a/Sdk/Speckle.Connectors.Common/ConnectorMetricsFactory.cs b/Sdk/Speckle.Connectors.Common/ConnectorMetricsFactory.cs new file mode 100644 index 000000000..c85a8ef37 --- /dev/null +++ b/Sdk/Speckle.Connectors.Common/ConnectorMetricsFactory.cs @@ -0,0 +1,34 @@ +using Speckle.Connectors.Logging; +using Speckle.Sdk.Logging; + +namespace Speckle.Connectors.Common; + +public sealed class ConnectorMetricsFactory : ISdkMetricsFactory, IDisposable +{ + private readonly LoggingMetricsFactory _loggingMetricsFactory = new(); + + public void Dispose() => _loggingMetricsFactory.Dispose(); + + public ISdkCounter CreateCounter(string name, string? unit = default, string? description = default) + where T : struct => new ConnectorCounter(_loggingMetricsFactory.CreateCounter(name, unit, description)); + + private readonly struct ConnectorCounter(LoggingCounter counter) : ISdkCounter + where T : struct + { + public void Add(T value) => counter.Add(value); + + public void Add(T value, KeyValuePair tag) => counter.Add(value, tag); + + public void Add(T value, KeyValuePair tag1, KeyValuePair tag2) => + counter.Add(value, tag1, tag2); + + public void Add( + T value, + KeyValuePair tag1, + KeyValuePair tag2, + KeyValuePair tag3 + ) => counter.Add(value, tag1, tag2, tag3); + + public void Add(T value, params KeyValuePair[] tags) => counter.Add(value, tags); + } +} diff --git a/Sdk/Speckle.Connectors.Common/packages.lock.json b/Sdk/Speckle.Connectors.Common/packages.lock.json index 9b9acfea0..5b10bc71e 100644 --- a/Sdk/Speckle.Connectors.Common/packages.lock.json +++ b/Sdk/Speckle.Connectors.Common/packages.lock.json @@ -53,18 +53,18 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "Direct", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeActivityProcessor.cs similarity index 57% rename from Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs rename to Sdk/Speckle.Connectors.Logging/ActivityScopeActivityProcessor.cs index 5645962b3..33d205bd1 100644 --- a/Sdk/Speckle.Connectors.Logging/ActivityScopeProcessor.cs +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeActivityProcessor.cs @@ -3,11 +3,11 @@ namespace Speckle.Connectors.Logging; -internal sealed class ActivityScopeProcessor : BaseProcessor +internal sealed class ActivityScopeActivityProcessor : BaseProcessor { public override void OnEnd(Activity data) { - foreach (KeyValuePair keyValuePair in ActivityScope.Tags) + foreach (KeyValuePair keyValuePair in ActivityScope.Tags) { data.SetTag(keyValuePair.Key, keyValuePair.Value); } diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs index dc503a476..2cb549fef 100644 --- a/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeExtensions.cs @@ -1,10 +1,11 @@ -namespace Speckle.Connectors.Logging; +namespace Speckle.Connectors.Logging; public static class ActivityScope { - private static readonly AsyncLocal> s_tags = new() { Value = new() }; - - public static IReadOnlyDictionary Tags => s_tags.Value ?? []; + private static readonly AsyncLocal> s_tags = new() { Value = new() }; + public static IReadOnlyDictionary Tags => s_tags.Value ?? []; + public static IReadOnlyList> TagsList { get; } = + new List>(s_tags.Value); public static IDisposable SetTag(string key, string value) { diff --git a/Sdk/Speckle.Connectors.Logging/ActivityScopeLogProcessor.cs b/Sdk/Speckle.Connectors.Logging/ActivityScopeLogProcessor.cs new file mode 100644 index 000000000..857785a43 --- /dev/null +++ b/Sdk/Speckle.Connectors.Logging/ActivityScopeLogProcessor.cs @@ -0,0 +1,22 @@ +using OpenTelemetry; +using OpenTelemetry.Logs; + +namespace Speckle.Connectors.Logging; + +internal sealed class ActivityScopeLogProcessor : BaseProcessor +{ + public override void OnEnd(LogRecord data) + { + if (ActivityScope.Tags.Count > 0) + { + if (data.Attributes is null) + { + data.Attributes = ActivityScope.TagsList; + } + else if (data.Attributes.Count > 0) + { + data.Attributes = data.Attributes.Concat(ActivityScope.Tags).ToList(); + } + } + } +} diff --git a/Sdk/Speckle.Connectors.Logging/Consts.cs b/Sdk/Speckle.Connectors.Logging/Consts.cs index 2101db9e8..53d9bda08 100644 --- a/Sdk/Speckle.Connectors.Logging/Consts.cs +++ b/Sdk/Speckle.Connectors.Logging/Consts.cs @@ -1,3 +1,5 @@ +using System.Reflection; + namespace Speckle.Connectors.Logging; public static class Consts @@ -9,4 +11,27 @@ public static class Consts public const string OS_SLUG = "os.slug"; public const string RUNTIME_NAME = "runtime.name"; public const string USER_ID = "user.id"; + public const string TRACING_SOURCE = "speckle"; + + public static string GetPackageVersion(Assembly assembly) + { + // MinVer https://github.com/adamralph/minver?tab=readme-ov-file#version-numbers + // together with Microsoft.SourceLink.GitHub https://github.com/dotnet/sourcelink + // fills AssemblyInformationalVersionAttribute by + // {majorVersion}.{minorVersion}.{patchVersion}.{pre-release label}.{pre-release version}.{gitHeight}+{Git SHA of current commit} + // Ex: 1.5.0-alpha.1.40+807f703e1b4d9874a92bd86d9f2d4ebe5b5d52e4 + // The following parts are optional: pre-release label, pre-release version, git height, Git SHA of current commit + // For package version, value of AssemblyInformationalVersionAttribute without commit hash is returned. + + var informationalVersion = assembly + .GetCustomAttribute() + ?.InformationalVersion; + if (informationalVersion is null) + { + return string.Empty; + } + + var indexOfPlusSign = informationalVersion.IndexOf('+'); + return indexOfPlusSign > 0 ? informationalVersion[..indexOfPlusSign] : informationalVersion; + } } diff --git a/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs b/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs index 24b5aed65..cb7fd96fd 100644 --- a/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs +++ b/Sdk/Speckle.Connectors.Logging/Internal/LogBuilder.cs @@ -1,8 +1,10 @@ -using OpenTelemetry.Resources; +using System.Text; +using Microsoft.Extensions.Logging; +using OpenTelemetry.Exporter; +using OpenTelemetry.Logs; +using OpenTelemetry.Resources; using Serilog; using Serilog.Exceptions; -using Serilog.Extensions.Logging; -using Serilog.Sinks.OpenTelemetry; namespace Speckle.Connectors.Logging.Internal; @@ -15,61 +17,85 @@ public static LoggerProvider Initialize( ResourceBuilder resourceBuilder ) { - var serilogLogConfiguration = new LoggerConfiguration() - .MinimumLevel.Is(SpeckleLogLevelUtility.GetLevel(speckleLogging?.MinimumLevel ?? SpeckleLogLevel.Warning)) - .Enrich.FromLogContext() - .Enrich.WithExceptionDetails(); - - if (speckleLogging?.File is not null) + var factory = LoggerFactory.Create(loggingBuilder => { - // TODO: check if we have write permissions to the file. - var logFilePath = SpecklePathProvider.LogFolderPath(applicationAndVersion); - logFilePath = Path.Combine(logFilePath, speckleLogging.File.Path ?? "SpeckleCoreLog.txt"); - serilogLogConfiguration = serilogLogConfiguration.WriteTo.File( - logFilePath, - rollingInterval: RollingInterval.Day, - retainedFileCountLimit: 10 - ); - } + if (speckleLogging?.File is not null || speckleLogging?.Console is not null) + { + var serilogLogConfiguration = new LoggerConfiguration() + .MinimumLevel.Is(SpeckleLogLevelUtility.GetLevel(speckleLogging.MinimumLevel)) + .Enrich.FromLogContext() + .Enrich.WithExceptionDetails(); - if (speckleLogging?.Console ?? false) - { - serilogLogConfiguration = serilogLogConfiguration.WriteTo.Console(); - } + if (speckleLogging.File is not null) + { + // TODO: check if we have write permissions to the file. + var logFilePath = SpecklePathProvider.LogFolderPath(applicationAndVersion); + logFilePath = Path.Combine(logFilePath, speckleLogging.File.Path ?? "SpeckleCoreLog.txt"); + serilogLogConfiguration = serilogLogConfiguration.WriteTo.File( + logFilePath, + rollingInterval: RollingInterval.Day, + retainedFileCountLimit: 10 + ); + } - if (speckleLogging?.Otel is not null) - { - serilogLogConfiguration = InitializeOtelLogging(serilogLogConfiguration, speckleLogging.Otel, resourceBuilder); - } - var logger = serilogLogConfiguration.CreateLogger(); + if (speckleLogging.Console) + { + serilogLogConfiguration.WriteTo.Console(); + } - logger - .ForContext("applicationAndVersion", applicationAndVersion) - .ForContext("connectorVersion", connectorVersion) - .ForContext("userApplicationDataPath", SpecklePathProvider.UserApplicationDataPath()) - .ForContext("installApplicationDataPath", SpecklePathProvider.InstallApplicationDataPath) - .Information( - "Initialized logger inside {applicationAndVersion}/{connectorVersion}. Path info {userApplicationDataPath} {installApplicationDataPath}." - ); + var serilogLogger = serilogLogConfiguration.CreateLogger(); + if (speckleLogging.File is not null) + { + serilogLogger + .ForContext("applicationAndVersion", applicationAndVersion) + .ForContext("connectorVersion", connectorVersion) + .ForContext("userApplicationDataPath", SpecklePathProvider.UserApplicationDataPath()) + .ForContext("installApplicationDataPath", SpecklePathProvider.InstallApplicationDataPath) + .Information( + "Initialized logger inside {applicationAndVersion}/{connectorVersion}. Path info {userApplicationDataPath} {installApplicationDataPath}." + ); + } + + loggingBuilder.AddSerilog(serilogLogger); + } + + foreach (var otel in speckleLogging?.Otel ?? []) + { + InitializeOtelLogging(loggingBuilder, otel, resourceBuilder); + } + }); -#pragma warning disable CA2000 - return new LoggerProvider(new SerilogLoggerProvider(logger)); -#pragma warning restore CA2000 + return new LoggerProvider(factory); } - private static LoggerConfiguration InitializeOtelLogging( - LoggerConfiguration serilogLogConfiguration, + private static void InitializeOtelLogging( + ILoggingBuilder loggingBuilder, SpeckleOtelLogging speckleOtelLogging, ResourceBuilder resourceBuilder ) => - serilogLogConfiguration.WriteTo.OpenTelemetry(o => + loggingBuilder.AddOpenTelemetry(x => { - o.Protocol = OtlpProtocol.HttpProtobuf; - o.LogsEndpoint = speckleOtelLogging.Endpoint; - o.Headers = speckleOtelLogging.Headers ?? o.Headers; - o.ResourceAttributes = resourceBuilder - .Build() - .Attributes.Concat(ActivityScope.Tags) - .ToDictionary(x => x.Key, x => x.Value); + x.AddOtlpExporter(y => + { + y.Protocol = OtlpExportProtocol.HttpProtobuf; + y.Endpoint = new Uri(speckleOtelLogging.Endpoint); + var sb = new StringBuilder(); + bool appendSemicolon = false; + foreach (var kvp in speckleOtelLogging.Headers ?? []) + { + sb.Append(kvp.Key).Append('=').Append(kvp.Value); + if (appendSemicolon) + { + sb.Append(','); + } + else + { + appendSemicolon = true; + } + } + y.Headers = sb.ToString(); + }) + .AddProcessor(new ActivityScopeLogProcessor()) + .SetResourceBuilder(resourceBuilder); }); } diff --git a/Sdk/Speckle.Connectors.Logging/Internal/MetricsBuilder.cs b/Sdk/Speckle.Connectors.Logging/Internal/MetricsBuilder.cs new file mode 100644 index 000000000..daf109aaa --- /dev/null +++ b/Sdk/Speckle.Connectors.Logging/Internal/MetricsBuilder.cs @@ -0,0 +1,42 @@ +using OpenTelemetry.Exporter; +using OpenTelemetry.Metrics; +using OpenTelemetry.Resources; +using OpenTelemetry.Trace; + +namespace Speckle.Connectors.Logging.Internal; + +internal static class MetricsBuilder +{ + public static IDisposable Initialize(SpeckleMetrics? metricsConfiguration, ResourceBuilder resourceBuilder) + { + var metricsProviderBuilder = OpenTelemetry.Sdk.CreateMeterProviderBuilder().AddMeter(Consts.TRACING_SOURCE); + foreach (var metrics in metricsConfiguration?.Otel ?? []) + { + metricsProviderBuilder = metricsProviderBuilder.AddOtlpExporter(x => ProcessOptions(metrics, x)); + } + + if (metricsConfiguration?.Console ?? false) + { + metricsProviderBuilder = metricsProviderBuilder.AddConsoleExporter(); + } + + metricsProviderBuilder = metricsProviderBuilder.AddHttpClientInstrumentation().SetResourceBuilder(resourceBuilder); + + return metricsProviderBuilder.Build(); + } + + private static void ProcessOptions(SpeckleOtelMetrics metrics, OtlpExporterOptions options) + { + options.Protocol = OtlpExportProtocol.HttpProtobuf; + var headers = string.Join(",", metrics.Headers?.Select(x => x.Key + "=" + x.Value) ?? []); + if (headers.Length != 0) + { + options.Headers = headers; + } + + if (metrics.Endpoint is not null) + { + options.Endpoint = new Uri(metrics.Endpoint); + } + } +} diff --git a/Sdk/Speckle.Connectors.Logging/Internal/ResourceCreator.cs b/Sdk/Speckle.Connectors.Logging/Internal/ResourceCreator.cs index 7de798c48..22f2ab9b7 100644 --- a/Sdk/Speckle.Connectors.Logging/Internal/ResourceCreator.cs +++ b/Sdk/Speckle.Connectors.Logging/Internal/ResourceCreator.cs @@ -8,7 +8,7 @@ internal static class ResourceCreator internal static ResourceBuilder Create(string applicationAndVersion, string slug, string connectorVersion) => ResourceBuilder .CreateEmpty() - .AddService(serviceName: LoggingActivityFactory.TRACING_SOURCE, serviceVersion: connectorVersion) + .AddService(serviceName: Consts.TRACING_SOURCE, serviceVersion: connectorVersion) .AddAttributes( new List> { diff --git a/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs b/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs index be67b65a6..42eeb2655 100644 --- a/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs +++ b/Sdk/Speckle.Connectors.Logging/Internal/TracingBuilder.cs @@ -6,25 +6,18 @@ namespace Speckle.Connectors.Logging.Internal; internal static class TracingBuilder { - public static IDisposable? Initialize(SpeckleTracing? logConfiguration, ResourceBuilder resourceBuilder) + public static IDisposable Initialize(SpeckleTracing? logConfiguration, ResourceBuilder resourceBuilder) { - var consoleEnabled = logConfiguration?.Console ?? false; - var otelEnabled = logConfiguration?.Otel?.Enabled ?? false; - if (!consoleEnabled && !otelEnabled) - { - return null; - } - var tracerProviderBuilder = OpenTelemetry .Sdk.CreateTracerProviderBuilder() - .AddSource(LoggingActivityFactory.TRACING_SOURCE); - tracerProviderBuilder = tracerProviderBuilder.AddHttpClientInstrumentation(); - if (otelEnabled) + .AddSource(Consts.TRACING_SOURCE) + .AddHttpClientInstrumentation(); + foreach (var tracing in logConfiguration?.Otel ?? []) { - tracerProviderBuilder = tracerProviderBuilder.AddOtlpExporter(x => ProcessOptions(logConfiguration!, x)); + tracerProviderBuilder = tracerProviderBuilder.AddOtlpExporter(x => ProcessOptions(tracing, x)); } - if (consoleEnabled) + if (logConfiguration?.Console ?? false) { tracerProviderBuilder = tracerProviderBuilder.AddConsoleExporter(); } @@ -32,23 +25,23 @@ internal static class TracingBuilder tracerProviderBuilder = tracerProviderBuilder .SetResourceBuilder(resourceBuilder) .SetSampler() - .AddProcessor(new ActivityScopeProcessor()); + .AddProcessor(new ActivityScopeActivityProcessor()); return tracerProviderBuilder.Build(); } - private static void ProcessOptions(SpeckleTracing logConfiguration, OtlpExporterOptions options) + private static void ProcessOptions(SpeckleOtelTracing tracing, OtlpExporterOptions options) { options.Protocol = OtlpExportProtocol.HttpProtobuf; - var headers = string.Join(",", logConfiguration.Otel?.Headers?.Select(x => x.Key + "=" + x.Value) ?? []); + var headers = string.Join(",", tracing.Headers?.Select(x => x.Key + "=" + x.Value) ?? []); if (headers.Length != 0) { options.Headers = headers; } - if (logConfiguration.Otel?.Endpoint is not null) + if (tracing.Endpoint is not null) { - options.Endpoint = new Uri(logConfiguration.Otel.Endpoint); + options.Endpoint = new Uri(tracing.Endpoint); } } } diff --git a/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs b/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs index 5f16f8821..bf037bf46 100644 --- a/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs +++ b/Sdk/Speckle.Connectors.Logging/LoggerProvider.cs @@ -1,10 +1,14 @@ -using Serilog.Extensions.Logging; +using Microsoft.Extensions.Logging; namespace Speckle.Connectors.Logging; -public sealed class LoggerProvider(SerilogLoggerProvider provider) : IDisposable +public sealed class LoggerProvider : IDisposable { - public Logger CreateLogger(string categoryName) => new(provider.CreateLogger(categoryName)); + private readonly ILoggerFactory _provider; - public void Dispose() => provider.Dispose(); + internal LoggerProvider(ILoggerFactory provider) => _provider = provider; + + public Logger CreateLogger(string categoryName) => new(_provider.CreateLogger(categoryName)); + + public void Dispose() => _provider.Dispose(); } diff --git a/Sdk/Speckle.Connectors.Logging/LoggingActivity.cs b/Sdk/Speckle.Connectors.Logging/LoggingActivity.cs index 7fbe82a2e..d8e6073bf 100644 --- a/Sdk/Speckle.Connectors.Logging/LoggingActivity.cs +++ b/Sdk/Speckle.Connectors.Logging/LoggingActivity.cs @@ -30,4 +30,17 @@ public void SetStatus(LoggingActivityStatusCode code) => _ => throw new ArgumentOutOfRangeException(nameof(code), code, null) } ); + + public void InjectHeaders(Action header) => + DistributedContextPropagator.Current.Inject( + _activity, + header, + static (carrier, key, value) => + { + if (carrier is Action request) + { + request.Invoke(key, value); + } + } + ); } diff --git a/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs b/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs index cf99bffdd..82223f5b8 100644 --- a/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs +++ b/Sdk/Speckle.Connectors.Logging/LoggingActivityFactory.cs @@ -1,23 +1,21 @@ -using System.Diagnostics; +using System.Diagnostics; using System.Reflection; -using System.Runtime.CompilerServices; namespace Speckle.Connectors.Logging; public sealed class LoggingActivityFactory : IDisposable { - public const string TRACING_SOURCE = "speckle-connectors"; - private readonly ActivitySource? _activitySource = - new(TRACING_SOURCE, GetPackageVersion(Assembly.GetExecutingAssembly())); + private readonly ActivitySource _activitySource = + new(Consts.TRACING_SOURCE, Consts.GetPackageVersion(Assembly.GetExecutingAssembly())); private readonly Dictionary _tags = new(); public void SetTag(string key, object? value) => _tags[key] = value; - public LoggingActivity? Start(string? name = null, [CallerMemberName] string source = "") + public LoggingActivity? Start(string name) { //If you get a MissingManifestResourceException, Likely source or name is empty string, which is no good. - var activity = _activitySource?.StartActivity(name: name ?? source, kind: ActivityKind.Client, tags: _tags); + var activity = _activitySource.StartActivity(name: name, kind: ActivityKind.Client, tags: _tags); if (activity is null) { return null; @@ -25,27 +23,5 @@ public sealed class LoggingActivityFactory : IDisposable return new LoggingActivity(activity); } - public void Dispose() => _activitySource?.Dispose(); - - private static string GetPackageVersion(Assembly assembly) - { - // MinVer https://github.com/adamralph/minver?tab=readme-ov-file#version-numbers - // together with Microsoft.SourceLink.GitHub https://github.com/dotnet/sourcelink - // fills AssemblyInformationalVersionAttribute by - // {majorVersion}.{minorVersion}.{patchVersion}.{pre-release label}.{pre-release version}.{gitHeight}+{Git SHA of current commit} - // Ex: 1.5.0-alpha.1.40+807f703e1b4d9874a92bd86d9f2d4ebe5b5d52e4 - // The following parts are optional: pre-release label, pre-release version, git height, Git SHA of current commit - // For package version, value of AssemblyInformationalVersionAttribute without commit hash is returned. - - var informationalVersion = assembly - .GetCustomAttribute() - ?.InformationalVersion; - if (informationalVersion is null) - { - return String.Empty; - } - - var indexOfPlusSign = informationalVersion.IndexOf('+'); - return indexOfPlusSign > 0 ? informationalVersion[..indexOfPlusSign] : informationalVersion; - } + public void Dispose() => _activitySource.Dispose(); } diff --git a/Sdk/Speckle.Connectors.Logging/LoggingMetricsFactory.cs b/Sdk/Speckle.Connectors.Logging/LoggingMetricsFactory.cs new file mode 100644 index 000000000..0e66e11bc --- /dev/null +++ b/Sdk/Speckle.Connectors.Logging/LoggingMetricsFactory.cs @@ -0,0 +1,42 @@ +using System.Diagnostics.Metrics; +using System.Reflection; + +namespace Speckle.Connectors.Logging; + +public sealed class LoggingMetricsFactory : IDisposable +{ + private readonly Meter _meterSource = + new(Consts.TRACING_SOURCE, Consts.GetPackageVersion(Assembly.GetExecutingAssembly())); + + public LoggingCounter CreateCounter(string name, string? unit = null, string? description = null) + where T : struct => new(_meterSource.CreateCounter(name, unit, description)); + + public void Dispose() => _meterSource.Dispose(); +} + +public readonly struct LoggingCounter + where T : struct +{ + private readonly Counter _counter; + + internal LoggingCounter(Counter counter) + { + _counter = counter; + } + + public void Add(T value) => _counter.Add(value); + + public void Add(T value, KeyValuePair tag) => _counter.Add(value, tag); + + public void Add(T value, KeyValuePair tag1, KeyValuePair tag2) => + _counter.Add(value, tag1, tag2); + + public void Add( + T value, + KeyValuePair tag1, + KeyValuePair tag2, + KeyValuePair tag3 + ) => _counter.Add(value, tag1, tag2, tag3); + + public void Add(T value, params KeyValuePair[] tags) => _counter.Add(value, tags); +} diff --git a/Sdk/Speckle.Connectors.Logging/Observability.cs b/Sdk/Speckle.Connectors.Logging/Observability.cs index 420e6798c..59405aed4 100644 --- a/Sdk/Speckle.Connectors.Logging/Observability.cs +++ b/Sdk/Speckle.Connectors.Logging/Observability.cs @@ -4,7 +4,7 @@ namespace Speckle.Connectors.Logging; public static class Observability { - public static (LoggerProvider, IDisposable?) Initialize( + public static (LoggerProvider, IDisposable, IDisposable) Initialize( string applicationAndVersion, string slug, string connectorVersion, @@ -19,6 +19,7 @@ SpeckleObservability observability resourceBuilder ); var tracing = TracingBuilder.Initialize(observability.Tracing, resourceBuilder); - return (logging, tracing); + var metrics = MetricsBuilder.Initialize(observability.Metrics, resourceBuilder); + return (logging, tracing, metrics); } } diff --git a/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj b/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj index 2b5a3b2bb..e3100f21b 100644 --- a/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj +++ b/Sdk/Speckle.Connectors.Logging/Speckle.Connectors.Logging.csproj @@ -21,6 +21,5 @@ - diff --git a/Sdk/Speckle.Connectors.Logging/SpeckleObservability.cs b/Sdk/Speckle.Connectors.Logging/SpeckleObservability.cs index 9f98f5ebc..ba14a59ec 100644 --- a/Sdk/Speckle.Connectors.Logging/SpeckleObservability.cs +++ b/Sdk/Speckle.Connectors.Logging/SpeckleObservability.cs @@ -4,23 +4,56 @@ namespace Speckle.Connectors.Logging; /// Configuration object for the Speckle logging system. /// -public record SpeckleObservability(SpeckleLogging? Logging = null, SpeckleTracing? Tracing = null); +public record SpeckleObservability( + SpeckleLogging? Logging = null, + SpeckleTracing? Tracing = null, + SpeckleMetrics? Metrics = null +); public record SpeckleLogging( SpeckleLogLevel MinimumLevel = SpeckleLogLevel.Warning, bool Console = true, SpeckleFileLogging? File = null, - SpeckleOtelLogging? Otel = null -); + IEnumerable? Otel = null +) +{ + public SpeckleLogging( + SpeckleLogLevel minimumLevel = SpeckleLogLevel.Warning, + bool console = true, + SpeckleFileLogging? file = null, + SpeckleOtelLogging? otel = null + ) + : this(minimumLevel, console, file, otel is null ? null : [otel]) { } +} public record SpeckleFileLogging(string? Path = null, bool Enabled = true); -public record SpeckleOtelLogging(string Endpoint, bool Enabled = true, Dictionary? Headers = null); +public record SpeckleOtelLogging( + string? Endpoint = null, + bool Enabled = true, + Dictionary? Headers = null +); -public record SpeckleTracing(bool Console = false, SpeckleOtelTracing? Otel = null); +public record SpeckleTracing(bool Console = false, IEnumerable? Otel = null) +{ + public SpeckleTracing(bool console = true, SpeckleOtelTracing? otel = null) + : this(console, otel is null ? null : [otel]) { } +} public record SpeckleOtelTracing( string? Endpoint = null, bool Enabled = true, Dictionary? Headers = null ); + +public record SpeckleMetrics(bool Console = false, IEnumerable? Otel = null) +{ + public SpeckleMetrics(bool console = true, SpeckleOtelMetrics? otel = null) + : this(console, otel is null ? null : [otel]) { } +} + +public record SpeckleOtelMetrics( + string? Endpoint = null, + bool Enabled = true, + Dictionary? Headers = null +); diff --git a/Sdk/Speckle.Connectors.Logging/packages.lock.json b/Sdk/Speckle.Connectors.Logging/packages.lock.json index e54d19b96..21def2c52 100644 --- a/Sdk/Speckle.Connectors.Logging/packages.lock.json +++ b/Sdk/Speckle.Connectors.Logging/packages.lock.json @@ -127,17 +127,6 @@ "Serilog": "4.0.0" } }, - "Serilog.Sinks.OpenTelemetry": { - "type": "Direct", - "requested": "[4.0.0, )", - "resolved": "4.0.0", - "contentHash": "M4WKDojg8a+msY5qhNGg5PYZ9ZVelcqipkP/CrfDAOvGCZ3MYj+cGXgnTanffYyIoC2onabaOtydqW6lqT/P/w==", - "dependencies": { - "Google.Protobuf": "3.26.1", - "Grpc.Net.Client": "2.62.0", - "Serilog": "4.0.0" - } - }, "Speckle.InterfaceGenerator": { "type": "Direct", "requested": "[0.9.6, )", @@ -146,8 +135,8 @@ }, "Google.Protobuf": { "type": "Transitive", - "resolved": "3.26.1", - "contentHash": "CHZX8zXqhF/fdUtd+AYzew8T2HFkAoe5c7lbGxZY/qryAlQXckDvM5BfOJjXlMS7kyICqQTMszj4w1bX5uBJ/w==", + "resolved": "3.22.5", + "contentHash": "tTMtDZPbLxJew8pk7NBdqhLqC4OipfkZdwPuCEUNr2AoDo1siUGcxFqJK0wDewTL8ge5Cjrb16CToMPxBUHMGA==", "dependencies": { "System.Memory": "4.5.3", "System.Runtime.CompilerServices.Unsafe": "4.5.2" @@ -172,30 +161,12 @@ }, "Grpc.Core.Api": { "type": "Transitive", - "resolved": "2.62.0", - "contentHash": "q4Jj6bRZHNnE4CMLqgjiBUCKLit+tRr0simZsS2W6U++akd7CzXByeKy2tddqT68hFzP2XzceXA2YtBTfWtixA==", + "resolved": "2.44.0", + "contentHash": "FBfPMvKwT8q98T8lWa5z6nBMLdH/Mmo5g4yyYYMvbXLWDzo4beqa7CUU5QH3PKvo2X6/b+UAZ2IymXlrYG3IXg==", "dependencies": { "System.Memory": "4.5.3" } }, - "Grpc.Net.Client": { - "type": "Transitive", - "resolved": "2.62.0", - "contentHash": "C7HxLt+wWPTpPFORRHkxxtDLL+K/jXSmZBaPLhFM8AEkN0bYjklIfCwnzajn1gcbRcEETBb0WnRgHJdVzpwbCg==", - "dependencies": { - "Grpc.Net.Common": "2.62.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0", - "System.Diagnostics.DiagnosticSource": "6.0.1" - } - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.62.0", - "contentHash": "eBv5I4RPWfdezGXqooU5hs3+XcfVMLk5XDlA4G/Nd9TMX78ZGrFl/lM1Ad187zgBLmH7WPAgfjKRWLBwaa1Wbw==", - "dependencies": { - "Grpc.Core.Api": "2.62.0" - } - }, "ILRepack": { "type": "Transitive", "resolved": "2.0.33", diff --git a/Sdk/Speckle.Connectors.Tests/packages.lock.json b/Sdk/Speckle.Connectors.Tests/packages.lock.json index 890289043..89be98716 100644 --- a/Sdk/Speckle.Connectors.Tests/packages.lock.json +++ b/Sdk/Speckle.Connectors.Tests/packages.lock.json @@ -342,8 +342,8 @@ "dependencies": { "Microsoft.Extensions.DependencyInjection": "[2.2.0, )", "Speckle.Connectors.Logging": "[1.0.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )", - "Speckle.Sdk": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )", + "Speckle.Sdk": "[3.1.0-dev.162, )" } }, "speckle.connectors.logging": { @@ -385,18 +385,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json index 9702ea8af..f87ed6f29 100644 --- a/Sdk/Speckle.Converters.Common.Tests/packages.lock.json +++ b/Sdk/Speckle.Converters.Common.Tests/packages.lock.json @@ -350,7 +350,7 @@ "type": "Project", "dependencies": { "Microsoft.Extensions.Logging.Abstractions": "[2.2.0, )", - "Speckle.Objects": "[3.1.0-dev.160, )" + "Speckle.Objects": "[3.1.0-dev.162, )" } }, "speckle.testing": { @@ -380,18 +380,18 @@ }, "Speckle.Objects": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", diff --git a/Sdk/Speckle.Converters.Common/packages.lock.json b/Sdk/Speckle.Converters.Common/packages.lock.json index 412bbe0df..04a7d94ad 100644 --- a/Sdk/Speckle.Converters.Common/packages.lock.json +++ b/Sdk/Speckle.Converters.Common/packages.lock.json @@ -50,11 +50,11 @@ }, "Speckle.Objects": { "type": "Direct", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "wU8YcZ3NtLnB3uJ9qvWw/j0pZ2FeDMh/eGsX3uqgBPD46G4Yksaeom7SucGxtsAsVNaeDvtd23F8sGzNei/i4w==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "1fyaPjC1kVtroKfoXI7edJX0Uho/TNRWG9mtmIQ7jKhX1zElrJPSoH8zEIMqckZhGmwUrYjlQFPssASNCP721Q==", "dependencies": { - "Speckle.Sdk": "3.1.0-dev.160" + "Speckle.Sdk": "3.1.0-dev.162" } }, "GraphQL.Client": { @@ -319,9 +319,9 @@ }, "Speckle.Sdk": { "type": "CentralTransitive", - "requested": "[3.1.0-dev.160, )", - "resolved": "3.1.0-dev.160", - "contentHash": "Gqsp2y9s8QzUSa0iPnTVay9xdXxUkPy0F5lJ6L+DY9HcnII9FQZrCRXYfz05xdcB+M/E6Yg9qeDLx7KwKoD7kw==", + "requested": "[3.1.0-dev.162, )", + "resolved": "3.1.0-dev.162", + "contentHash": "ulT3XNgqIQSmpQFK5YEEwRq4RA6emXBKQHnZxtCz37SJin1PnVpH9m8vOAF9FmaWsgSAfjhhjIZDruMu1oKxSg==", "dependencies": { "GraphQL.Client": "6.0.0", "Microsoft.CSharp": "4.7.0", From 5fb3616c1a04a4894a9644d9029b69e87462bb65 Mon Sep 17 00:00:00 2001 From: Claire Kuang Date: Mon, 14 Oct 2024 18:19:01 +0100 Subject: [PATCH 61/62] feat(civil3d): adds all properties for sites, catchments, surfaces, and network parts (#301) * adds general and class properties extractors * Update Speckle.Converters.Civil3dShared.projitems * adds class properties for catchments * adds catchment group proxies * catchment proxy bug fix * adds site props * Update ClassPropertiesExtractor.cs * Update ClassPropertiesExtractor.cs * adds network, structure, and pipes * registers pipe network * renamed proxy handlers with cache property * updates part dictionary props --- .../Civil3dConnectorModule.cs | 3 + .../Send/Civil3dRootObjectBuilder.cs | 11 +- .../Civil3dRootToSpeckleConverter.cs | 68 +++--- .../SpeckleApplicationIdExtensions.cs | 17 ++ .../Helpers/BaseCurveExtractor.cs | 19 +- .../Helpers/CatchmentGroupHandler.cs | 61 +++++ .../Helpers/PipeNetworkHandler.cs | 60 +++++ .../ServiceRegistration.cs | 4 + ...Speckle.Converters.Civil3dShared.projitems | 7 +- .../CivilEntityToSpeckleTopLevelConverter.cs | 29 ++- .../Properties/ClassPropertiesExtractor.cs | 208 ++++++++++++++++++ .../Properties/GeneralPropertiesExtractor.cs | 76 +++++++ .../ToSpeckle/Properties/PartDataExtractor.cs | 10 +- .../Point3dCollectionToSpeckleRawConverter.cs | 47 ++++ .../Raw/PropertySetToSpeckleRawConverter.cs | 56 ----- 15 files changed, 558 insertions(+), 118 deletions(-) create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Extensions/SpeckleApplicationIdExtensions.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CatchmentGroupHandler.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/PipeNetworkHandler.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/ClassPropertiesExtractor.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs create mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/Point3dCollectionToSpeckleRawConverter.cs delete mode 100644 Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs index e43b04302..7dcb841d2 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/DependencyInjection/Civil3dConnectorModule.cs @@ -6,6 +6,7 @@ using Speckle.Connectors.Civil3dShared.Operations.Send; using Speckle.Connectors.Common.Builders; using Speckle.Connectors.DUI.Bindings; +using Speckle.Converters.Civil3dShared.Helpers; using Speckle.Converters.Civil3dShared.ToSpeckle; using Speckle.Sdk; @@ -27,5 +28,7 @@ public static void AddCivil3d(this IServiceCollection serviceCollection) // additional classes serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); } } diff --git a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs index ee4ce4a27..db9850f07 100644 --- a/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs +++ b/Connectors/Autocad/Speckle.Connectors.Civil3dShared/Operations/Send/Civil3dRootObjectBuilder.cs @@ -4,6 +4,7 @@ using Speckle.Connectors.Autocad.Operations.Send; using Speckle.Connectors.Common.Caching; using Speckle.Connectors.Common.Operations; +using Speckle.Converters.Civil3dShared.Helpers; using Speckle.Converters.Civil3dShared.ToSpeckle; using Speckle.Converters.Common; using Speckle.Sdk.Logging; @@ -15,10 +16,14 @@ public sealed class Civil3dRootObjectBuilder : AutocadRootObjectBaseBuilder { private readonly AutocadLayerUnpacker _layerUnpacker; private readonly PropertySetDefinitionHandler _propertySetDefinitionHandler; + private readonly CatchmentGroupHandler _catchmentGroupHandler; + private readonly PipeNetworkHandler _pipeNetworkHandler; public Civil3dRootObjectBuilder( AutocadLayerUnpacker layerUnpacker, PropertySetDefinitionHandler propertySetDefinitionHandler, + CatchmentGroupHandler catchmentGroupHandler, + PipeNetworkHandler pipeNetworkHandler, IRootToSpeckleConverter converter, ISendConversionCache sendConversionCache, AutocadInstanceUnpacker instanceObjectManager, @@ -41,6 +46,8 @@ ISdkActivityFactory activityFactory { _layerUnpacker = layerUnpacker; _propertySetDefinitionHandler = propertySetDefinitionHandler; + _catchmentGroupHandler = catchmentGroupHandler; + _pipeNetworkHandler = pipeNetworkHandler; } public override (Collection, LayerTableRecord?) CreateObjectCollection(Entity entity, Transaction tr) @@ -50,9 +57,11 @@ public override (Collection, LayerTableRecord?) CreateObjectCollection(Entity en return (layer, autocadLayer); } - // POC: probably will need to add Network definition proxies as well + // POC: probably will need to add Network proxies as well public override void AddAdditionalProxiesToRoot(Collection rootObject) { rootObject[ProxyKeys.PROPERTYSET_DEFINITIONS] = _propertySetDefinitionHandler.Definitions; + rootObject["catchmentGroupProxies"] = _catchmentGroupHandler.CatchmentGroupProxiesCache.Values.ToList(); + rootObject["pipeNetworkProxies"] = _pipeNetworkHandler.PipeNetworkProxiesCache.Values.ToList(); } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs index ac07bf2db..812c438bb 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Civil3dRootToSpeckleConverter.cs @@ -3,7 +3,6 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Converters.Common.Registration; -using Speckle.Sdk; using Speckle.Sdk.Models; namespace Speckle.Converters.Civil3dShared; @@ -14,18 +13,21 @@ public class Civil3dRootToSpeckleConverter : IRootToSpeckleConverter private readonly IConverterSettingsStore _settingsStore; private readonly PartDataExtractor _partDataExtractor; private readonly PropertySetExtractor _propertySetExtractor; + private readonly GeneralPropertiesExtractor _generalPropertiesExtractor; public Civil3dRootToSpeckleConverter( IConverterManager toSpeckle, IConverterSettingsStore settingsStore, PartDataExtractor partDataExtractor, - PropertySetExtractor propertySetExtractor + PropertySetExtractor propertySetExtractor, + GeneralPropertiesExtractor generalPropertiesExtractor ) { _toSpeckle = toSpeckle; _settingsStore = settingsStore; _partDataExtractor = partDataExtractor; _propertySetExtractor = propertySetExtractor; + _generalPropertiesExtractor = generalPropertiesExtractor; } public Base Convert(object target) @@ -47,36 +49,8 @@ public Base Convert(object target) type = civilEntity.GetType(); objectToConvert = civilEntity; - // TODO: refactor this into a property extractor class - // get part data - try - { - Dictionary? partData = _partDataExtractor.GetPartData(civilEntity); - if (partData is not null) - { - properties.Add("Part Data", partData); - } - } - catch (Exception e) when (!e.IsFatal()) - { - //TODO: logger here - } - - // get property set data - try - { - Dictionary? propertySets = _propertySetExtractor.GetPropertySets(civilEntity); - if (propertySets is not null) - { - properties.Add("Property Sets", propertySets); - } - } - catch (Exception e) when (!e.IsFatal()) - { - //TODO: logger here - } - - // TODO: add XDATA here + // get properties like partdata, property sets, general properties + properties = GetCivilEntityProperties(civilEntity); } var objectConverter = _toSpeckle.ResolveConverter(type, true); @@ -110,4 +84,34 @@ public Base Convert(object target) throw; // Just rethrowing for now, Logs may be needed here. } } + + private Dictionary GetCivilEntityProperties(CDB.Entity entity) + { + Dictionary properties = new(); + + // get general properties + Dictionary? generalProperties = _generalPropertiesExtractor.GetGeneralProperties(entity); + if (generalProperties is not null) + { + properties.Add("Properties", generalProperties); + } + + // get part data + Dictionary? partData = _partDataExtractor.GetPartData(entity); + if (partData is not null) + { + properties.Add("Part Data", partData); + } + + // get property set data + Dictionary? propertySets = _propertySetExtractor.GetPropertySets(entity); + if (propertySets is not null) + { + properties.Add("Property Sets", propertySets); + } + + // TODO: add XDATA here + + return properties; + } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Extensions/SpeckleApplicationIdExtensions.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Extensions/SpeckleApplicationIdExtensions.cs new file mode 100644 index 000000000..82a1cf49e --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Extensions/SpeckleApplicationIdExtensions.cs @@ -0,0 +1,17 @@ +namespace Speckle.Converters.Civil3dShared.Extensions; + +public static class SpeckleApplicationIdExtensions +{ + /// + /// Retrieves the Speckle object application id + /// + public static string GetSpeckleApplicationId(this CDB.Entity entity) => entity.Handle.Value.ToString(); + + /// + /// Retrieves the Speckle application id from an ObjectId. + /// This is used primarily when storing civil entity relationships, eg alignments used for sites and corridors + /// + /// + /// + public static string GetSpeckleApplicationId(this ADB.ObjectId objectId) => objectId.Handle.Value.ToString(); +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs index c1f34c133..02acc8130 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/BaseCurveExtractor.cs @@ -29,10 +29,8 @@ IConverterSettingsStore converterSettings _converterSettings = converterSettings; } - public List GetBaseCurve(CDB.Entity entity) + public List? GetBaseCurve(CDB.Entity entity) { - List result = new(); - switch (entity) { // rant: if this is a pipe, the BaseCurve prop is fake news && will return a DB.line with start and endpoints set to [0,0,0] & [0,0,1] @@ -43,14 +41,15 @@ IConverterSettingsStore converterSettings //pipe.SubEntityType == PipeSubEntityType.Straight ? _lineConverter.Convert(new AG.LineSegment3d(pipe.StartPoint, pipe.EndPoint)); //: _arcConverter.Convert(pipe.Curve2d); - result.Add(pipeCurve); - break; - default: + return new() { pipeCurve }; + + case CDB.Alignment: ICurve baseCurve = _curveConverter.Convert(entity.BaseCurve); - result.Add(baseCurve); - break; - } + return new() { baseCurve }; - return result; + // for any entities that don't use their basecurve prop + default: + return null; + } } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CatchmentGroupHandler.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CatchmentGroupHandler.cs new file mode 100644 index 000000000..fd0fbf76c --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/CatchmentGroupHandler.cs @@ -0,0 +1,61 @@ +using Speckle.Converters.Civil3dShared.Extensions; +using Speckle.Converters.Common; +using Speckle.Sdk.Models.Proxies; + +namespace Speckle.Converters.Civil3dShared.Helpers; + +public sealed class CatchmentGroupHandler +{ + /// + /// Keeps track of all catchment groups used by catchments in the current send operation. + /// (catchmentGroup objectId, catchmentGroupProxy). + /// This should be added to the root commit object post conversion. + /// + /// POC: Using group proxies for now + public Dictionary CatchmentGroupProxiesCache { get; } = new(); + + private readonly IConverterSettingsStore _converterSettings; + + public CatchmentGroupHandler(IConverterSettingsStore converterSettings) + { + _converterSettings = converterSettings; + } + + /// + /// Extracts the Catchment group from a catchment and stores in the appId of the catchment. + /// + /// + /// + public void HandleCatchmentGroup(CDB.Catchment catchment) + { + ADB.ObjectId catchmentGroupId = catchment.ContainingGroupId; + + if (catchmentGroupId == ADB.ObjectId.Null) + { + return; + } + + string catchmentApplicationId = catchment.GetSpeckleApplicationId(); + if (CatchmentGroupProxiesCache.TryGetValue(catchmentGroupId, out GroupProxy? value)) + { + value.objects.Add(catchmentApplicationId); + } + else + { + using (var tr = _converterSettings.Current.Document.Database.TransactionManager.StartTransaction()) + { + var catchmentGroup = (CDB.CatchmentGroup)tr.GetObject(catchmentGroupId, ADB.OpenMode.ForRead); + + CatchmentGroupProxiesCache[catchmentGroupId] = new() + { + name = catchmentGroup.Name, + objects = new() { catchmentApplicationId }, + applicationId = catchmentGroup.Handle.Value.ToString() + }; + + tr.Commit(); + } + } + return; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/PipeNetworkHandler.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/PipeNetworkHandler.cs new file mode 100644 index 000000000..8ed0f2a9c --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Helpers/PipeNetworkHandler.cs @@ -0,0 +1,60 @@ +using Speckle.Converters.Civil3dShared.Extensions; +using Speckle.Converters.Common; +using Speckle.Sdk.Models.Proxies; + +namespace Speckle.Converters.Civil3dShared.Helpers; + +public sealed class PipeNetworkHandler +{ + /// + /// Keeps track of all networks used by parts in the current send operation. + /// (network app id, network Proxy). + /// This should be added to the root commit object post conversion. + /// + /// POC: Using group proxies for now + public Dictionary PipeNetworkProxiesCache { get; } = new(); + + private readonly IConverterSettingsStore _converterSettings; + + public PipeNetworkHandler(IConverterSettingsStore converterSettings) + { + _converterSettings = converterSettings; + } + + /// + /// Extracts the pipe network from a part and stores in the appId of the part. + /// + /// + /// + public void HandlePipeNetwork(CDB.Part part) + { + if (part.NetworkId == ADB.ObjectId.Null) + { + return; + } + + string networkApplicationId = part.NetworkId.GetSpeckleApplicationId(); + string partApplicationId = part.GetSpeckleApplicationId(); + if (PipeNetworkProxiesCache.TryGetValue(networkApplicationId, out GroupProxy? value)) + { + value.objects.Add(partApplicationId); + } + else + { + using (var tr = _converterSettings.Current.Document.Database.TransactionManager.StartTransaction()) + { + var network = (CDB.Network)tr.GetObject(part.NetworkId, ADB.OpenMode.ForRead); + + PipeNetworkProxiesCache[networkApplicationId] = new() + { + name = network.Name, + objects = new() { partApplicationId }, + applicationId = networkApplicationId + }; + + tr.Commit(); + } + } + return; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs index 063280a5f..e65e403f1 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ServiceRegistration.cs @@ -40,5 +40,9 @@ public static void AddCivil3dConverters(this IServiceCollection serviceCollectio serviceCollection.AddScoped(); serviceCollection.AddScoped(); serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); + serviceCollection.AddScoped(); } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems index 6d7ec1d66..eb1c74523 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/Speckle.Converters.Civil3dShared.projitems @@ -13,16 +13,21 @@ + + + + + - + \ No newline at end of file diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs index 453b7a4b1..f2433fa62 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/BuiltElements/CivilEntityToSpeckleTopLevelConverter.cs @@ -2,34 +2,29 @@ using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; using Speckle.Objects; -using Speckle.Objects.Other; using Speckle.Sdk.Models; -using AECPropDB = Autodesk.Aec.PropertyData.DatabaseServices; namespace Speckle.Converters.Civil3dShared.ToSpeckle.BuiltElements; [NameAndRankValue(nameof(CDB.Entity), NameAndRankValueAttribute.SPECKLE_DEFAULT_RANK)] public class CivilEntityToSpeckleTopLevelConverter : IToSpeckleTopLevelConverter { - private readonly ITypedConverter _pointConverter; - private readonly ITypedConverter> _propertySetConverter; private readonly IConverterSettingsStore _settingsStore; private readonly DisplayValueExtractor _displayValueExtractor; private readonly BaseCurveExtractor _baseCurveExtractor; + private readonly ClassPropertiesExtractor _classPropertiesExtractor; public CivilEntityToSpeckleTopLevelConverter( - ITypedConverter pointConverter, - ITypedConverter> propertySetConverter, IConverterSettingsStore settingsStore, DisplayValueExtractor displayValueExtractor, - BaseCurveExtractor baseCurveExtractor + BaseCurveExtractor baseCurveExtractor, + ClassPropertiesExtractor classPropertiesExtractor ) { - _pointConverter = pointConverter; - _propertySetConverter = propertySetConverter; _settingsStore = settingsStore; _displayValueExtractor = displayValueExtractor; _baseCurveExtractor = baseCurveExtractor; + _classPropertiesExtractor = classPropertiesExtractor; } public Base Convert(object target) => Convert((CDB.Entity)target); @@ -37,13 +32,13 @@ BaseCurveExtractor baseCurveExtractor public Base Convert(CDB.Entity target) { Base civilObject = new(); - civilObject["type"] = target.GetType().ToString(); + civilObject["type"] = target.GetType().ToString().Split('.').Last(); civilObject["name"] = target.Name; civilObject["units"] = _settingsStore.Current.SpeckleUnits; // get basecurve - List baseCurves = _baseCurveExtractor.GetBaseCurve(target); - if (baseCurves.Count > 0) + List? baseCurves = _baseCurveExtractor.GetBaseCurve(target); + if (baseCurves is not null) { civilObject["baseCurves"] = baseCurves; } @@ -55,6 +50,16 @@ public Base Convert(CDB.Entity target) civilObject["displayValue"] = display; } + // add any additional class properties + Dictionary? classProperties = _classPropertiesExtractor.GetClassProperties(target); + if (classProperties is not null) + { + foreach (string key in classProperties.Keys) + { + civilObject[$"{key}"] = classProperties[key]; + } + } + return civilObject; } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/ClassPropertiesExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/ClassPropertiesExtractor.cs new file mode 100644 index 000000000..f7ce2f20f --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/ClassPropertiesExtractor.cs @@ -0,0 +1,208 @@ +using Autodesk.Civil.DatabaseServices; +using Speckle.Converters.Civil3dShared.Extensions; +using Speckle.Converters.Civil3dShared.Helpers; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle; + +/// +/// Extracts class properties deemed important from a civil entity. +/// Should not repeat any data that would be included on property sets and general properties on the object. +/// Expects to be scoped per operation. +/// +public class ClassPropertiesExtractor +{ + private readonly IConverterSettingsStore _settingsStore; + private readonly ITypedConverter _point3dCollectionConverter; + private readonly ITypedConverter _pointConverter; + private readonly CatchmentGroupHandler _catchmentGroupHandler; + private readonly PipeNetworkHandler _pipeNetworkHandler; + + public ClassPropertiesExtractor( + IConverterSettingsStore settingsStore, + ITypedConverter point3dCollectionConverter, + ITypedConverter pointConverter, + CatchmentGroupHandler catchmentGroupHandler, + PipeNetworkHandler pipeNetworkHandler + ) + { + _point3dCollectionConverter = point3dCollectionConverter; + _pointConverter = pointConverter; + _settingsStore = settingsStore; + _catchmentGroupHandler = catchmentGroupHandler; + _pipeNetworkHandler = pipeNetworkHandler; + } + + /// + /// Extracts general properties from a civil entity. Expects to be scoped per operation. + /// + /// + /// + public Dictionary? GetClassProperties(CDB.Entity entity) + { + switch (entity) + { + case CDB.Catchment catchment: + return ExtractCatchmentProperties(catchment); + case CDB.Site site: + return ExtractSiteProperties(site); + case CDB.Pipe pipe: + return ExtractPipeProperties(pipe); + case CDB.Structure structure: + return ExtractStructureProperties(structure); + + default: + return null; + } + } + + // For more info on how points are used: https://help.autodesk.com/view/CIV3D/2024/ENU/?guid=GUID-CBABE972-D690-49AE-A7DE-60F2E1B0675D + private Dictionary ExtractPointProperties(CDB.Point point) + { + Dictionary pointProperties = + new() + { + ["elevation"] = point.Elevation, + ["station"] = point.Station, + ["isLoopPoint"] = point.IsLoopPoint + }; + + if (point.Codes.Count > 0) + { + pointProperties["codes"] = point.Codes.ToList(); + } + + return pointProperties; + } + + private Dictionary ExtractPipeProperties(CDB.Pipe pipe) + { + Dictionary pipeProperties = + new() + { + ["innerDiameterOrWidth"] = pipe.InnerDiameterOrWidth, + ["innerHeight"] = pipe.InnerHeight, + ["slope"] = pipe.Slope, + ["shape"] = pipe.CrossSectionalShape.ToString(), + ["length2d"] = pipe.Length2D, + ["minimumCover"] = pipe.MinimumCover, + ["maximumCover"] = pipe.MaximumCover, + ["junctionLoss"] = pipe.JunctionLoss, + ["flowDirection"] = pipe.FlowDirection.ToString(), + ["flowRate"] = pipe.FlowRate + }; + + if (pipe.StartStructureId != ADB.ObjectId.Null) + { + pipeProperties["startStructureId"] = pipe.StartStructureId.GetSpeckleApplicationId(); + } + + if (pipe.EndStructureId != ADB.ObjectId.Null) + { + pipeProperties["endStructureId"] = pipe.EndStructureId.GetSpeckleApplicationId(); + } + + ExtractPartProperties(pipe, pipeProperties); + + return pipeProperties; + } + + private Dictionary ExtractStructureProperties(CDB.Structure structure) + { + var location = _pointConverter.Convert(structure.Location); + + Dictionary structureProperties = + new() + { + ["location"] = location, + ["northing"] = structure.Northing, + ["rotation"] = structure.Rotation, + ["sumpDepth"] = structure.SumpDepth, + ["sumpElevation"] = structure.SumpElevation, + ["innerDiameterOrWidth"] = structure.InnerDiameterOrWidth + }; + + if (structure.BoundingShape == BoundingShapeType.Box) + { + structureProperties["innerLength"] = structure.InnerLength; + structureProperties["length"] = structure.Length; + } + + ExtractPartProperties(structure, structureProperties); + + return structureProperties; + } + + private void ExtractPartProperties(CDB.Part part, Dictionary dict) + { + // process the part's pipe network with the pipe network handler + _pipeNetworkHandler.HandlePipeNetwork(part); + + dict["domain"] = part.Domain.ToString(); + dict["partType"] = part.PartType.ToString(); + if (part.RefSurfaceId != ADB.ObjectId.Null) + { + dict["surfaceId"] = part.RefSurfaceId.GetSpeckleApplicationId(); + } + + return; + } + + private Dictionary ExtractSiteProperties(CDB.Site site) + { + Dictionary catchmentProperties = new(); + + if (site.GetAlignmentIds().Count > 0) + { + catchmentProperties["alignmentIds"] = GetSpeckleApplicationIdsFromCollection(site.GetAlignmentIds()); + } + + if (site.GetFeatureLineIds().Count > 0) + { + catchmentProperties["featureLineIds"] = GetSpeckleApplicationIdsFromCollection(site.GetFeatureLineIds()); + } + + if (site.GetParcelIds().Count > 0) + { + catchmentProperties["parcelIds"] = GetSpeckleApplicationIdsFromCollection(site.GetParcelIds()); + } + + return catchmentProperties; + } + + private Dictionary ExtractCatchmentProperties(CDB.Catchment catchment) + { + // get the bounding curve of the catchment + SOG.Polyline boundary = _point3dCollectionConverter.Convert(catchment.BoundaryPolyline3d); + + // use the catchment group handler to process the catchment's group + _catchmentGroupHandler.HandleCatchmentGroup(catchment); + + return new() + { + ["antecedentWetness"] = catchment.AntecedentWetness, + ["area"] = catchment.Area, + ["area2d"] = catchment.Area2d, + ["boundary"] = boundary, + ["exclusionary"] = catchment.Exclusionary, + ["hydrologicalSoilGroup"] = catchment.HydrologicalSoilGroup.ToString(), + ["imperviousArea"] = catchment.ImperviousArea, + ["manningsCoefficient"] = catchment.ManningsCoefficient, + ["perimeter2d"] = catchment.Perimeter2d, + ["runoffCoefficient"] = catchment.RunoffCoefficient, + ["timeOfConcentration"] = catchment.TimeOfConcentration + }; + } + + private List GetSpeckleApplicationIdsFromCollection(ADB.ObjectIdCollection collection) + { + List speckleAppIds = new(collection.Count); + foreach (ADB.ObjectId parcelId in collection) + { + speckleAppIds.Add(parcelId.GetSpeckleApplicationId()); + } + + return speckleAppIds; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs new file mode 100644 index 000000000..fd8ed7a3e --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/GeneralPropertiesExtractor.cs @@ -0,0 +1,76 @@ +using System.Reflection; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle; + +/// +/// Extracts general properties related to analysis, statistics, and calculations out from a civil entity. Expects to be scoped per operation. +/// +public class GeneralPropertiesExtractor +{ + public GeneralPropertiesExtractor() { } + + /// + /// Extracts general properties from a civil entity. Expects to be scoped per operation. + /// + /// + /// + public Dictionary? GetGeneralProperties(CDB.Entity entity) + { + Dictionary? generalPropertiesDict = null; + switch (entity) + { + // surface -> properties -> statistics -> general, extended, and tin/grid properties + case CDB.Surface surface: + generalPropertiesDict = ExtractSurfaceProperties(surface); + break; + } + + return generalPropertiesDict; + } + + private Dictionary ExtractSurfaceProperties(CDB.Surface surface) + { + Dictionary generalPropertiesDict = new(); + + // get statistics props + Dictionary statisticsDict = new(); + statisticsDict["General"] = ExtractPropertiesGeneric(surface.GetGeneralProperties()); + switch (surface) + { + case CDB.TinSurface tinSurface: + statisticsDict["TIN"] = ExtractPropertiesGeneric(tinSurface.GetTinProperties()); + break; + case CDB.TinVolumeSurface tinVolumeSurface: + statisticsDict["TIN"] = ExtractPropertiesGeneric(tinVolumeSurface.GetTinProperties()); + break; + case CDB.GridSurface gridSurface: + statisticsDict["Grid"] = ExtractPropertiesGeneric(gridSurface.GetGridProperties()); + break; + case CDB.GridVolumeSurface gridVolumeSurface: + statisticsDict["Grid"] = ExtractPropertiesGeneric( + gridVolumeSurface.GetGridProperties() + ); + break; + } + + // set all general props + generalPropertiesDict["Statistics"] = statisticsDict; + return generalPropertiesDict; + } + + // A generic method to create a dictionary from an object types's properties + private Dictionary ExtractPropertiesGeneric(T obj) + { + Dictionary propertiesDict = new(); + + var type = typeof(T); + PropertyInfo[] properties = type.GetProperties(); + foreach (PropertyInfo? property in properties) + { + var value = property.GetValue(obj); + propertiesDict[property.Name] = value; + } + + return propertiesDict; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs index f3b1f2fe7..338ca6650 100644 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Properties/PartDataExtractor.cs @@ -31,21 +31,19 @@ public PartDataExtractor() { } foreach (CDB.PartDataField field in partData.GetAllDataFields()) { var value = GetValue(field); - //var isNullOrEmpty = value == null || (value is string s && string.IsNullOrEmpty(s)); + string fieldName = field.Context.ToString(); // we're using the context for the field name because it is more human-readable than the name prop var fieldDictionary = new Dictionary() { ["value"] = value, ["name"] = field.Name, - ["context"] = field.Context.ToString(), - ["isFromRange"] = field.IsFromRange, - ["isReadOnly"] = field.IsReadOnly, + ["context"] = fieldName, ["units"] = field.Units }; - if (!result.ContainsKey(field.Name)) + if (!result.ContainsKey(fieldName)) { - result.Add(field.Name, fieldDictionary); + result.Add(fieldName, fieldDictionary); } } diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/Point3dCollectionToSpeckleRawConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/Point3dCollectionToSpeckleRawConverter.cs new file mode 100644 index 000000000..8cb13973a --- /dev/null +++ b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/Point3dCollectionToSpeckleRawConverter.cs @@ -0,0 +1,47 @@ +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; + +namespace Speckle.Converters.Civil3dShared.ToSpeckle.Raw; + +public class Point3dCollectionToSpeckleRawConverter : ITypedConverter +{ + private readonly ITypedConverter _pointConverter; + private readonly IConverterSettingsStore _settingsStore; + + public Point3dCollectionToSpeckleRawConverter( + ITypedConverter pointConverter, + IConverterSettingsStore settingsStore + ) + { + _pointConverter = pointConverter; + _settingsStore = settingsStore; + } + + public SOG.Polyline Convert(object target) => Convert((AG.Point3dCollection)target); + + public SOG.Polyline Convert(AG.Point3dCollection target) + { + List value = new(); + double length = 0; + AG.Point3d? previousPoint = null; + foreach (AG.Point3d point in target) + { + value.Add(point.X); + value.Add(point.Y); + value.Add(point.Z); + if (previousPoint is AG.Point3d p) + { + length += point.DistanceTo(p); + } + previousPoint = point; + } + + return new() + { + value = value, + units = _settingsStore.Current.SpeckleUnits, + closed = true, + length = length + }; + } +} diff --git a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs b/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs deleted file mode 100644 index 2317a00d9..000000000 --- a/Converters/Civil3d/Speckle.Converters.Civil3dShared/ToSpeckle/Raw/PropertySetToSpeckleRawConverter.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Speckle.Converters.Common; -using Speckle.Converters.Common.Objects; -using Speckle.Objects.Other; -using AECPropDB = Autodesk.Aec.PropertyData.DatabaseServices; - -namespace Speckle.Converters.Civil3dShared.ToSpeckle.Raw; - -public class PropertySetToSpeckleRawConverter : ITypedConverter> -{ - private readonly ITypedConverter _vectorConverter; - private readonly ITypedConverter _pointConverter; - private readonly IConverterSettingsStore _settingsStore; - - public PropertySetToSpeckleRawConverter( - ITypedConverter vectorConverter, - ITypedConverter pointConverter, - IConverterSettingsStore settingsStore - ) - { - _vectorConverter = vectorConverter; - _pointConverter = pointConverter; - _settingsStore = settingsStore; - } - - public List Convert(object target) => Convert((AECPropDB.PropertySet)target); - - public List Convert(AECPropDB.PropertySet target) - { - List properties = new(); - - //TODO using? - ADB.Transaction tr = _settingsStore.Current.Document.TransactionManager.TopTransaction; - AECPropDB.PropertySetDefinition setDef = (AECPropDB.PropertySetDefinition) - tr.GetObject(target.PropertySetDefinition, ADB.OpenMode.ForRead); - - // get property definitions - var propDefs = new Dictionary(); - foreach (AECPropDB.PropertyDefinition def in setDef.Definitions) - { - propDefs.Add(def.Id, def); - } - - foreach (AECPropDB.PropertySetData data in target.PropertySetData) - { - string fieldName = propDefs.TryGetValue(data.Id, out AECPropDB.PropertyDefinition value) - ? value.Name - : data.FieldBucketId; - - object fieldData = data.GetData(); - DataField field = new(fieldName, fieldData.GetType().Name, fieldData, data.UnitType.PluralName(false)); - properties.Add(field); - } - - return properties; - } -} From da0a35a5d1b504e60166c0b019a5a880f10e73be Mon Sep 17 00:00:00 2001 From: Alan Rynne Date: Tue, 15 Oct 2024 10:49:13 +0200 Subject: [PATCH 62/62] added `store_artifacts` input to build installers trigger (#303) --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 40f1c30ec..55ebab01e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -49,6 +49,7 @@ jobs: needs: build env: IS_TAG_BUILD: ${{ github.ref_type == 'tag' }} + IS_RELEASE_BRANCH: ${{ startsWith(github.ref_name, 'release/') || github.ref_name == 'main'}} steps: - name: 🔫 Trigger Build Installers uses: ALEEF02/workflow-dispatch@v3.0.0 @@ -57,7 +58,7 @@ jobs: workflow: Build Installers repo: specklesystems/connector-installers token: ${{ secrets.CONNECTORS_GH_TOKEN }} - inputs: '{ "run_id": "${{ github.run_id }}", "version": "${{ needs.build.outputs.version }}", "public_release": ${{ env.IS_TAG_BUILD }} }' + inputs: '{ "run_id": "${{ github.run_id }}", "version": "${{ needs.build.outputs.version }}", "public_release": ${{ env.IS_TAG_BUILD }}, "store_artifacts": ${{ env.IS_RELEASE_BRANCH }} }' ref: main wait-for-completion: true wait-for-completion-interval: 10s