diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..d28b033
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,42 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
+{
+ "name": "C# (.NET)",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "mcr.microsoft.com/devcontainers/dotnet:0-7.0",
+
+ // Features to add to the dev container. More info: https://containers.dev/features.
+ // "features": {},
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [5000, 5001],
+ // "portsAttributes": {
+ // "5001": {
+ // "protocol": "https"
+ // }
+ // }
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ "postCreateCommand": "dotnet restore",
+ "features": {
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {},
+ "ghcr.io/devcontainers/features/dotnet:2": {}
+ },
+
+ // Configure tool-specific properties.
+ "customizations": {
+ // Configure properties specific to VS Code.
+ "vscode": {
+ // Add the IDs of extensions you want installed when the container is created.
+ "extensions": [
+ "csharpier.csharpier-vscode",
+ "ms-dotnettools.csharp",
+ "ms-dotnettools.csdevkit",
+ "ms-azuretools.vscode-docker"
+ ]
+ }
+ }
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 8105617..395f208 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,4 +1,4 @@
-name: 'build and deploy Speckle functions'
+name: "build and deploy Speckle functions"
on:
push:
branches:
@@ -7,7 +7,8 @@ on:
jobs:
publish-automate-function-version: # make sure the action works on a clean machine without building
env:
- FUNCTION_SCHEMA_PATH: ${HOME}/functionSchema.json
+ FUNCTION_SCHEMA_FILE_NAME: functionSchema.json
+ SPECKLE_AUTOMATE_URL: https://automate.speckle.dev
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.4.0
@@ -15,21 +16,20 @@ jobs:
uses: actions/setup-dotnet@v3.2.0
with:
dotnet-version: 7.x
- cache: true
-
- name: Restore dependencies
- run: dotnet restore --locked-mode
+ run: dotnet restore
- name: Extract functionInputSchema
id: extract_schema
+ working-directory: "SpeckleAutomateDotnetExample"
run: |
dotnet build
- echo $(dotnet run generate-schema) > ${HOME}/functionSchema.json
+ dotnet run generate-schema ${HOME}/functionSchema.json
cat ${HOME}/functionSchema.json
- name: Speckle Automate Function - Build and Publish
- uses: specklesystems/speckle-automate-github-composite-action@0.4.2
+ uses: specklesystems/speckle-automate-github-composite-action@0.6.7
with:
- speckle_automate_url: 'https://automate.speckle.dev'
+ speckle_function_command: "dotnet SpeckleAutomateDotnetExample.dll"
+ speckle_automate_url: ${{ env.SPECKLE_AUTOMATE_URL }}
speckle_token: ${{ secrets.SPECKLE_FUNCTION_TOKEN }}
speckle_function_id: ${{ secrets.SPECKLE_FUNCTION_ID }}
- speckle_function_input_schema_file_path: functionSchema.json
- speckle_function_command: 'dotnet SpeckleAutomateDotnetExample.dll'
+ speckle_function_input_schema_file_path: ${{ env.FUNCTION_SCHEMA_FILE_NAME }}
diff --git a/.gitignore b/.gitignore
index d16919a..2b7e4fb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -65,6 +65,7 @@ Temporary Items
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+.idea
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
diff --git a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/.gitignore b/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/.gitignore
deleted file mode 100644
index e47d1f4..0000000
--- a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Rider ignored files
-/contentModel.xml
-/projectSettingsUpdater.xml
-/modules.xml
-/.idea.SpeckleAutomateDotnetExample.iml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/encodings.xml b/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/encodings.xml
deleted file mode 100644
index df87cf9..0000000
--- a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/encodings.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/indexLayout.xml b/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/indexLayout.xml
deleted file mode 100644
index 7b08163..0000000
--- a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/indexLayout.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/vcs.xml b/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/.idea.SpeckleAutomateDotnetExample.dir/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.tool-versions b/.tool-versions
deleted file mode 100644
index aac82d7..0000000
--- a/.tool-versions
+++ /dev/null
@@ -1 +0,0 @@
-dotnet 7.0.306
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..b7d39d2
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,8 @@
+{
+ "recommendations": [
+ "csharpier.csharpier-vscode",
+ "ms-dotnettools.csharp",
+ "ms-dotnettools.csdevkit",
+ "ms-azuretools.vscode-docker"
+ ]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 35d0800..59d7e75 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,3 +1,7 @@
{
- "dotnet.server.useOmnisharp": false
+ "dotnet.server.useOmnisharp": false,
+ "[csharp]": {
+ "editor.defaultFormatter": "csharpier.csharpier-vscode",
+ "editor.formatOnSave": true
+ }
}
diff --git a/AutomateFunction.cs b/AutomateFunction.cs
deleted file mode 100644
index e2a72ce..0000000
--- a/AutomateFunction.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using Objects.Geometry;
-using Speckle.Core.Api;
-using Speckle.Core.Credentials;
-using Speckle.Core.Models.Extensions;
-using Speckle.Core.Transports;
-
-///
-/// This class describes the user specified variables that the function wants to work with.
-///
-/// This class is used to generate a JSON Schema to ensure that the user provided values
-/// are valid and match the required schema.
-class FunctionInputs
-{
- [Required]
- public string SpeckleTypeToCount;
-}
-
-class AutomateFunction
-{
- public static async Task Run(
- SpeckleProjectData speckleProjectData,
- FunctionInputs functionInputs,
- string speckleToken
- )
- {
- var account = new Account
- {
- token = speckleToken,
- serverInfo = new ServerInfo() { url = speckleProjectData.SpeckleServerUrl }
- };
- var client = new Client(account);
-
-
- // HACK needed for the objects kit to initialize
- var p = new Point();
-
- var commit = await client.CommitGet(
- speckleProjectData.ProjectId,
- speckleProjectData.VersionId
- );
-
- var serverTransport = new ServerTransport(account, speckleProjectData.ProjectId);
- var rootObject = await Operations.Receive(
- commit.referencedObject,
- serverTransport,
- new MemoryTransport()
- );
-
- return rootObject.Flatten().Count( b => b.speckle_type == functionInputs.SpeckleTypeToCount);
- }
-}
diff --git a/Dockerfile b/Dockerfile
index d98fb57..70cc0c2 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,8 @@
FROM mcr.microsoft.com/dotnet/sdk:7.0 as build-env
WORKDIR /src
-COPY *.csproj .
+COPY SpeckleAutomateDotnetExample/ .
RUN dotnet restore --use-current-runtime
-COPY . .
RUN dotnet publish --use-current-runtime --self-contained false --no-restore -o /publish
FROM mcr.microsoft.com/dotnet/runtime:7.0 as runtime
diff --git a/Program.cs b/Program.cs
deleted file mode 100644
index 0c5dca6..0000000
--- a/Program.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System.CommandLine;
-using Newtonsoft.Json.Schema.Generation;
-using Newtonsoft.Json.Serialization;
-using Speckle.Newtonsoft.Json;
-
-
-internal static class Program
-{
- internal static async Task Main(string[] args)
- {
- var speckleProjectDataArg = new Argument(
- name: "Speckle project data",
- description: "The values of the project / model / version that triggered this function"
- );
- var functionInputsArg = new Argument(
- name: "Function inputs",
- description: "The values provided by the function user, matching the function input schema"
- );
- var speckleTokenArg = new Argument(
- name: "Speckle token",
- description: "A token to talk to the Speckle server with"
- );
- var rootCommand = new RootCommand("Count objects matching the given speckle_type");
- rootCommand.AddArgument(speckleProjectDataArg);
- rootCommand.AddArgument(functionInputsArg);
- rootCommand.AddArgument(speckleTokenArg);
- rootCommand.SetHandler(
- async (speckleProjectData, functionInputs, speckleToken) =>
- {
- await RunFunction(speckleProjectData, functionInputs, speckleToken);
- },
- speckleProjectDataArg,
- functionInputsArg,
- speckleTokenArg
- );
-
- var generateSchemaCommand = new Command(
- "generate-schema",
- "Generate JSON schema for the function inputs"
- );
- generateSchemaCommand.SetHandler(() =>
- {
- var schema = GenerateFunctionInputSchema();
- Console.WriteLine(schema);
- });
- rootCommand.Add(generateSchemaCommand);
-
- await rootCommand.InvokeAsync(args);
- }
-
- static async Task RunFunction(
- string rawSpeckleProjectData,
- string rawFunctionInputs,
- string speckleToken
- )
- {
- var speckleProjectData = JsonConvert.DeserializeObject(
- rawSpeckleProjectData
- );
- var functionInputs = JsonConvert.DeserializeObject(
- rawFunctionInputs
- );
- var count = await AutomateFunction.Run(
- speckleProjectData,
- functionInputs,
- speckleToken
- );
- Console.WriteLine(
- $"Found {count} elements that have the type {functionInputs.SpeckleTypeToCount}"
- );
- }
-
- static string GenerateFunctionInputSchema()
- {
- var generator = new JSchemaGenerator
- {
- ContractResolver = new CamelCasePropertyNamesContractResolver()
- };
- var schema = generator.Generate(typeof(FunctionInputs));
- return schema.ToString(Newtonsoft.Json.Schema.SchemaVersion.Draft2019_09);
- }
-}
-
-
-internal class SpeckleProjectData
-{
- public string ProjectId;
- public string ModelId;
- public string VersionId;
- public string SpeckleServerUrl;
-}
diff --git a/SpeckleAutomateDotnetExample.csproj b/SpeckleAutomateDotnetExample.csproj
deleted file mode 100644
index 180896a..0000000
--- a/SpeckleAutomateDotnetExample.csproj
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
- Exe
- net7.0
- enable
- enable
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SpeckleAutomateDotnetExample.sln b/SpeckleAutomateDotnetExample.sln
new file mode 100644
index 0000000..6aebe93
--- /dev/null
+++ b/SpeckleAutomateDotnetExample.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.5.002.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SpeckleAutomateDotnetExample", "SpeckleAutomateDotnetExample/SpeckleAutomateDotnetExample.csproj", "{E1DE5809-1111-4817-9B7D-7ADCA087FA1C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {E1DE5809-1111-4817-9B7D-7ADCA087FA1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E1DE5809-1111-4817-9B7D-7ADCA087FA1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E1DE5809-1111-4817-9B7D-7ADCA087FA1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E1DE5809-1111-4817-9B7D-7ADCA087FA1C}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {6487EAE6-FBD5-4884-BCA1-1E8C082EC370}
+ EndGlobalSection
+EndGlobal
diff --git a/SpeckleAutomateDotnetExample/AutomateFunction.cs b/SpeckleAutomateDotnetExample/AutomateFunction.cs
new file mode 100644
index 0000000..ea6f92a
--- /dev/null
+++ b/SpeckleAutomateDotnetExample/AutomateFunction.cs
@@ -0,0 +1,28 @@
+using Objects;
+using Objects.Geometry;
+using Speckle.Automate.Sdk;
+using Speckle.Core.Logging;
+using Speckle.Core.Models.Extensions;
+
+static class AutomateFunction
+{
+ public static async Task Run(
+ AutomationContext automationContext,
+ FunctionInputs functionInputs
+ )
+ {
+ Console.WriteLine("Starting execution");
+ _ = typeof(ObjectsKit).Assembly; // INFO: Force objects kit to initialize
+
+
+ Console.WriteLine("Receiving version");
+ var commitObject = await automationContext.ReceiveVersion();
+
+ Console.WriteLine("Received version: " + commitObject);
+
+ var count = commitObject
+ .Flatten()
+ .Count(b => b.speckle_type == functionInputs.SpeckleTypeToCount);
+ automationContext.MarkRunSuccess($"Counted {count} objects");
+ }
+}
diff --git a/SpeckleAutomateDotnetExample/FunctionInputs.cs b/SpeckleAutomateDotnetExample/FunctionInputs.cs
new file mode 100644
index 0000000..f37a05a
--- /dev/null
+++ b/SpeckleAutomateDotnetExample/FunctionInputs.cs
@@ -0,0 +1,12 @@
+using System.ComponentModel.DataAnnotations;
+
+///
+/// This class describes the user specified variables that the function wants to work with.
+///
+/// This class is used to generate a JSON Schema to ensure that the user provided values
+/// are valid and match the required schema.
+struct FunctionInputs
+{
+ [Required]
+ public string SpeckleTypeToCount;
+}
diff --git a/SpeckleAutomateDotnetExample/Program.cs b/SpeckleAutomateDotnetExample/Program.cs
new file mode 100644
index 0000000..552eff9
--- /dev/null
+++ b/SpeckleAutomateDotnetExample/Program.cs
@@ -0,0 +1,6 @@
+using Speckle.Automate.Sdk;
+
+// WARNING do not delete this call, this is the actual execution of your function
+await AutomationRunner
+ .Main(args, AutomateFunction.Run)
+ .ConfigureAwait(false);
diff --git a/SpeckleAutomateDotnetExample/SpeckleAutomateDotnetExample.csproj b/SpeckleAutomateDotnetExample/SpeckleAutomateDotnetExample.csproj
new file mode 100644
index 0000000..197ca6d
--- /dev/null
+++ b/SpeckleAutomateDotnetExample/SpeckleAutomateDotnetExample.csproj
@@ -0,0 +1,14 @@
+
+
+
+ Exe
+ net7.0
+ enable
+ enable
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages.lock.json b/packages.lock.json
deleted file mode 100644
index 71f0d35..0000000
--- a/packages.lock.json
+++ /dev/null
@@ -1,374 +0,0 @@
-{
- "version": 1,
- "dependencies": {
- "net7.0": {
- "Newtonsoft.Json.Schema": {
- "type": "Direct",
- "requested": "[3.0.15, )",
- "resolved": "3.0.15",
- "contentHash": "O/RBoXYm93pJy/JF3vRJxISALxup8CxKrBGXAyd/pFGrCa9hnSeHq/rQqkTnnpOcvtQwcEDfMZ+R5h871XEO5A==",
- "dependencies": {
- "Newtonsoft.Json": "13.0.3"
- }
- },
- "Speckle.Core": {
- "type": "Direct",
- "requested": "[2.15.3, )",
- "resolved": "2.15.3",
- "contentHash": "rL4g3mBgL2TYWw55wC9QqVe0mR1MUISfcuDhiDNfVoPiWMmvGD1UQ6PjU5MncQRvLXYow48KGrUMDl7nntlIAQ==",
- "dependencies": {
- "GraphQL.Client": "6.0.0",
- "Microsoft.CSharp": "4.7.0",
- "Microsoft.Data.Sqlite": "7.0.5",
- "Polly": "7.2.3",
- "Polly.Contrib.WaitAndRetry": "1.1.1",
- "Polly.Extensions.Http": "3.0.0",
- "Sentry": "3.33.0",
- "Sentry.Serilog": "3.33.0",
- "Serilog": "2.12.0",
- "Serilog.Enrichers.ClientInfo": "1.3.0",
- "Serilog.Enrichers.GlobalLogContext": "3.0.0",
- "Serilog.Exceptions": "8.4.0",
- "Serilog.Sinks.Console": "4.1.0",
- "Serilog.Sinks.Seq": "5.2.2",
- "SerilogTimings": "3.0.1",
- "Speckle.Newtonsoft.Json": "13.0.2"
- }
- },
- "Speckle.Newtonsoft.Json": {
- "type": "Direct",
- "requested": "[13.0.2, )",
- "resolved": "13.0.2",
- "contentHash": "g1BejUZwax5PRfL6xHgLEK23sqHWOgOj9hE7RvfRRlN00AGt8GnPYt8HedSK7UB3HiRW8zCA9Pn0iiYxCK24BA=="
- },
- "Speckle.Objects": {
- "type": "Direct",
- "requested": "[2.15.3, )",
- "resolved": "2.15.3",
- "contentHash": "oj822fIHKIzevwZRYYZXmed/RNhf/WUX1DtKIxNQyGAhsPrMg6veke2Z5RuY6N3NtzC8NSJz4AyKhu/ESjVh2w==",
- "dependencies": {
- "Speckle.Core": "2.15.3"
- }
- },
- "System.CommandLine": {
- "type": "Direct",
- "requested": "[2.0.0-beta4.22272.1, )",
- "resolved": "2.0.0-beta4.22272.1",
- "contentHash": "1uqED/q2H0kKoLJ4+hI2iPSBSEdTuhfCYADeJrAqERmiGQ2NNacYKRNEQ+gFbU4glgVyK8rxI+ZOe1onEtr/Pg=="
- },
- "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.AspNetCore.Http": {
- "type": "Transitive",
- "resolved": "2.2.2",
- "contentHash": "BAibpoItxI5puk7YJbIGj95arZueM8B8M5xT1fXBn3hb3L2G3ucrZcYXv1gXdaroLbntUs8qeV8iuBrpjQsrKw==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Abstractions": "2.2.0",
- "Microsoft.AspNetCore.WebUtilities": "2.2.0",
- "Microsoft.Extensions.ObjectPool": "2.2.0",
- "Microsoft.Extensions.Options": "2.2.0",
- "Microsoft.Net.Http.Headers": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.Http.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "Nxs7Z1q3f1STfLYKJSVXCs1iBl+Ya6E8o4Oy1bCxJ/rNI44E/0f6tbsrVqAWfB7jlnJfyaAtIalBVxPKUPQb4Q==",
- "dependencies": {
- "Microsoft.AspNetCore.Http.Features": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.AspNetCore.Http.Features": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "ziFz5zH8f33En4dX81LW84I6XrYXKf9jg6aM39cM+LffN9KJahViKZ61dGMSO2gd3e+qe5yBRwsesvyqlZaSMg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0"
- }
- },
- "Microsoft.AspNetCore.WebUtilities": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "9ErxAAKaDzxXASB/b5uLEkLgUWv1QbeVxyJYEHQwMaxXOeFFVkQxiq8RyfVcifLU7NR0QY0p3acqx4ZpYfhHDg==",
- "dependencies": {
- "Microsoft.Net.Http.Headers": "2.2.0",
- "System.Text.Encodings.Web": "4.5.0"
- }
- },
- "Microsoft.CSharp": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA=="
- },
- "Microsoft.Data.Sqlite": {
- "type": "Transitive",
- "resolved": "7.0.5",
- "contentHash": "KGxbPeWsQMnmQy43DSBxAFtHz3l2JX8EWBSGUCvT3CuZ8KsuzbkqMIJMDOxWtG8eZSoCDI04aiVQjWuuV8HmSw==",
- "dependencies": {
- "Microsoft.Data.Sqlite.Core": "7.0.5",
- "SQLitePCLRaw.bundle_e_sqlite3": "2.1.4"
- }
- },
- "Microsoft.Data.Sqlite.Core": {
- "type": "Transitive",
- "resolved": "7.0.5",
- "contentHash": "FTerRmQPqHrCrnoUzhBu+E+1DNGwyrAMLqHkAqOOOu5pGfyMOj8qQUBxI/gDtWtG11p49UxSfWmBzRNlwZqfUg==",
- "dependencies": {
- "SQLitePCLRaw.core": "2.1.4"
- }
- },
- "Microsoft.Extensions.DependencyInjection.Abstractions": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "f9hstgjVmr6rmrfGSpfsVOl2irKAgr1QjrSi3FgnS7kulxband50f2brRLwySAQTADPZeTdow0mpSMcoAdadCw=="
- },
- "Microsoft.Extensions.ObjectPool": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g=="
- },
- "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.Net.Http.Headers": {
- "type": "Transitive",
- "resolved": "2.2.0",
- "contentHash": "iZNkjYqlo8sIOI0bQfpsSoMTmB/kyvmV2h225ihyZT33aTp48ZpF6qYnXxzSXmHt8DpBAwBTX+1s1UFLbYfZKg==",
- "dependencies": {
- "Microsoft.Extensions.Primitives": "2.2.0",
- "System.Buffers": "4.5.0"
- }
- },
- "Newtonsoft.Json": {
- "type": "Transitive",
- "resolved": "13.0.3",
- "contentHash": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ=="
- },
- "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"
- }
- },
- "Sentry": {
- "type": "Transitive",
- "resolved": "3.33.0",
- "contentHash": "8vbD2o6IR2wrRrkSiRbnodWGWUOqIlwYtzpjvPNOb5raJdOf+zxMwfS8f6nx9bmrTTfDj7KrCB8C/5OuicAc8A=="
- },
- "Sentry.Serilog": {
- "type": "Transitive",
- "resolved": "3.33.0",
- "contentHash": "V8BU7QGWg2qLYfNPqtuTBhC1opysny5l+Ifp6J6PhOeAxU0FssR7nYfbJVetrnLIoh2rd3DlJ6hHYYQosQYcUQ==",
- "dependencies": {
- "Sentry": "3.33.0",
- "Serilog": "2.10.0"
- }
- },
- "Serilog": {
- "type": "Transitive",
- "resolved": "2.12.0",
- "contentHash": "xaiJLIdu6rYMKfQMYUZgTy8YK7SMZjB4Yk50C/u//Z4OsvxkUfSPJy4nknfvwAC34yr13q7kcyh4grbwhSxyZg=="
- },
- "Serilog.Enrichers.ClientInfo": {
- "type": "Transitive",
- "resolved": "1.3.0",
- "contentHash": "mTc7PM+wC9Hr7LWSwqt5mmnlAr7RJs+eTb3PGPRhwdOackk95MkhUZognuxXEdlW19HAFNmEBTSBY5DfLwM8jQ==",
- "dependencies": {
- "Microsoft.AspNetCore.Http": "2.2.2",
- "Serilog": "2.9.0"
- }
- },
- "Serilog.Enrichers.GlobalLogContext": {
- "type": "Transitive",
- "resolved": "3.0.0",
- "contentHash": "IIZcj5mAUVhIl/NTA+YI2KC+sPDzcwvs0ZMHH42jsPfl1a4LVX7ohVpw5UK+e3GxuV3Nv239Il5oM2peUIl44g==",
- "dependencies": {
- "Serilog": "2.12.0"
- }
- },
- "Serilog.Exceptions": {
- "type": "Transitive",
- "resolved": "8.4.0",
- "contentHash": "nc/+hUw3lsdo0zCj0KMIybAu7perMx79vu72w0za9Nsi6mWyNkGXxYxakAjWB7nEmYL6zdmhEQRB4oJ2ALUeug==",
- "dependencies": {
- "Serilog": "2.8.0",
- "System.Reflection.TypeExtensions": "4.7.0"
- }
- },
- "Serilog.Formatting.Compact": {
- "type": "Transitive",
- "resolved": "1.1.0",
- "contentHash": "pNroKVjo+rDqlxNG5PXkRLpfSCuDOBY0ri6jp9PLe505ljqwhwZz8ospy2vWhQlFu5GkIesh3FcDs4n7sWZODA==",
- "dependencies": {
- "Serilog": "2.8.0"
- }
- },
- "Serilog.Sinks.Console": {
- "type": "Transitive",
- "resolved": "4.1.0",
- "contentHash": "K6N5q+5fetjnJPvCmkWOpJ/V8IEIoMIB1s86OzBrbxwTyHxdx3pmz4H+8+O/Dc/ftUX12DM1aynx/dDowkwzqg==",
- "dependencies": {
- "Serilog": "2.10.0"
- }
- },
- "Serilog.Sinks.File": {
- "type": "Transitive",
- "resolved": "5.0.0",
- "contentHash": "uwV5hdhWPwUH1szhO8PJpFiahqXmzPzJT/sOijH/kFgUx+cyoDTMM8MHD0adw9+Iem6itoibbUXHYslzXsLEAg==",
- "dependencies": {
- "Serilog": "2.10.0"
- }
- },
- "Serilog.Sinks.PeriodicBatching": {
- "type": "Transitive",
- "resolved": "3.1.0",
- "contentHash": "NDWR7m3PalVlGEq3rzoktrXikjFMLmpwF0HI4sowo8YDdU+gqPlTHlDQiOGxHfB0sTfjPA9JjA7ctKG9zqjGkw==",
- "dependencies": {
- "Serilog": "2.0.0"
- }
- },
- "Serilog.Sinks.Seq": {
- "type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "1Csmo5ua7NKUe0yXUx+zsRefjAniPWcXFhUXxXG8pwo0iMiw2gjn9SOkgYnnxbgWqmlGv236w0N/dHc2v5XwMg==",
- "dependencies": {
- "Serilog": "2.12.0",
- "Serilog.Formatting.Compact": "1.1.0",
- "Serilog.Sinks.File": "5.0.0",
- "Serilog.Sinks.PeriodicBatching": "3.1.0"
- }
- },
- "SerilogTimings": {
- "type": "Transitive",
- "resolved": "3.0.1",
- "contentHash": "Zs28eTgszAMwpIrbBnWHBI50yuxL50p/dmAUWmy75+axdZYK/Sjm5/5m1N/CisR8acJUhTVcjPZrsB1P5iv0Uw==",
- "dependencies": {
- "Serilog": "2.10.0"
- }
- },
- "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.Buffers": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A=="
- },
- "System.ComponentModel.Annotations": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg=="
- },
- "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.Reflection.TypeExtensions": {
- "type": "Transitive",
- "resolved": "4.7.0",
- "contentHash": "VybpaOQQhqE6siHppMktjfGBw1GCwvCqiufqmP8F1nj7fTUNtW35LOEt3UZTEsECfo+ELAl/9o9nJx3U91i7vA=="
- },
- "System.Runtime.CompilerServices.Unsafe": {
- "type": "Transitive",
- "resolved": "4.5.1",
- "contentHash": "Zh8t8oqolRaFa9vmOZfdQm/qKejdqz0J9kr7o2Fu0vPeoH3BL1EOXipKWwkWtLT1JPzjByrF19fGuFlNbmPpiw=="
- },
- "System.Text.Encodings.Web": {
- "type": "Transitive",
- "resolved": "4.5.0",
- "contentHash": "Xg4G4Indi4dqP1iuAiMSwpiWS54ZghzR644OtsRCm/m/lBMG8dUBhLVN7hLm8NNrNTR+iGbshCPTwrvxZPlm4g=="
- }
- }
- }
-}
\ No newline at end of file