diff --git a/.paket/Paket.Restore.targets b/.paket/Paket.Restore.targets
index 0df24f9..818b4ec 100644
--- a/.paket/Paket.Restore.targets
+++ b/.paket/Paket.Restore.targets
@@ -252,7 +252,7 @@
- <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.nuspec"/>
+ <_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion).nuspec"/>
diff --git a/FSharp.Azure.StorageTypeProvider.sln b/FSharp.Azure.StorageTypeProvider.sln
index c411626..1d6e73c 100644
--- a/FSharp.Azure.StorageTypeProvider.sln
+++ b/FSharp.Azure.StorageTypeProvider.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 15
-VisualStudioVersion = 15.0.28010.2046
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.28917.182
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{94066CAA-4417-4C43-A286-40182E920E43}"
ProjectSection(SolutionItems) = preProject
@@ -14,9 +14,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
docs\tools\generate.fsx = docs\tools\generate.fsx
README.md = README.md
RELEASE_NOTES.md = RELEASE_NOTES.md
+ sample-blobs.json = sample-blobs.json
+ sample-tables.json = sample-tables.json
EndProjectSection
EndProject
-Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Azure.StorageTypeProvider", "src\FSharp.Azure.StorageTypeProvider\FSharp.Azure.StorageTypeProvider.fsproj", "{FB7CA8F3-C158-49E9-B816-501741E2921F}"
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Azure.StorageTypeProvider.Common", "src\FSharp.Azure.StorageTypeProvider.Common\FSharp.Azure.StorageTypeProvider.Common.fsproj", "{FB7CA8F3-C158-49E9-B816-501741E2921F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{7CAF8D38-6250-41CB-A65B-ABD760B09281}"
ProjectSection(SolutionItems) = preProject
@@ -35,6 +37,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "content", "content", "{1535
docs\content\tables.fsx = docs\content\tables.fsx
EndProjectSection
EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Azure.StorageTypeProvider.Blob", "src\FSharp.Azure.StorageTypeProvider.Blob\FSharp.Azure.StorageTypeProvider.Blob.fsproj", "{9D66D199-9BCA-41B3-B005-1381589B9A2F}"
+EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Azure.StorageTypeProvider.Queue", "src\FSharp.Azure.StorageTypeProvider.Queue\FSharp.Azure.StorageTypeProvider.Queue.fsproj", "{8B477649-8E69-499C-825B-992C4FA7A162}"
+EndProject
+Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Azure.StorageTypeProvider.Table", "src\FSharp.Azure.StorageTypeProvider.Table\FSharp.Azure.StorageTypeProvider.Table.fsproj", "{6D7FEFAE-24AF-49C0-888C-68BC3EBEF123}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{08E5CE37-D346-49D6-810E-7E7AB8872E8B}"
+ ProjectSection(SolutionItems) = preProject
+ build\common.props = build\common.props
+ build\packages.props = build\packages.props
+ build\version.props = build\version.props
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -45,6 +60,18 @@ Global
{FB7CA8F3-C158-49E9-B816-501741E2921F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FB7CA8F3-C158-49E9-B816-501741E2921F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FB7CA8F3-C158-49E9-B816-501741E2921F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9D66D199-9BCA-41B3-B005-1381589B9A2F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {9D66D199-9BCA-41B3-B005-1381589B9A2F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9D66D199-9BCA-41B3-B005-1381589B9A2F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {9D66D199-9BCA-41B3-B005-1381589B9A2F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B477649-8E69-499C-825B-992C4FA7A162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B477649-8E69-499C-825B-992C4FA7A162}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B477649-8E69-499C-825B-992C4FA7A162}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B477649-8E69-499C-825B-992C4FA7A162}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6D7FEFAE-24AF-49C0-888C-68BC3EBEF123}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6D7FEFAE-24AF-49C0-888C-68BC3EBEF123}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6D7FEFAE-24AF-49C0-888C-68BC3EBEF123}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6D7FEFAE-24AF-49C0-888C-68BC3EBEF123}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index ca7b476..9b4d4b8 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -102,5 +102,8 @@
### 2.0.0 - 28th December 2018
* Support for blob-only accounts
-### 2.0.1 - 05th February 2018
-* Fix #119 (Even when JSON tableSchema parameter is used Emulator required to be running)
\ No newline at end of file
+### 2.0.1 - 05th February 2019
+* Fix #119 (Even when JSON tableSchema parameter is used Emulator required to be running)
+
+### 2.0.2 - 7th April 2019
+* Remove dependency on FSharp.Compiler.Tools.
\ No newline at end of file
diff --git a/build.fsx b/build.fsx
index 9d3cf01..9412bbd 100644
--- a/build.fsx
+++ b/build.fsx
@@ -17,7 +17,6 @@ open System.IO
open Fake.IO
open Fake.Azure
open Fake.DotNet.NuGet
-open Fake.Tools.Git
open Fake.IO.FileSystemOperators
// The name of the project
@@ -27,14 +26,6 @@ let project = "FSharp.Azure.StorageTypeProvider"
// (used as description in AssemblyInfo and as a short summary for NuGet package)
let summary = "Allows easy access to Azure Storage assets through F# scripts."
-// Git configuration (used for publishing documentation in gh-pages branch)
-// The profile where the project is posted
-let gitOwner = "fsprojects"
-let gitHome = "https://github.com/" + gitOwner
-
-// The name of the project on GitHub
-let gitName = "AzureStorageTypeProvider"
-
// Read additional information from the release notes document
Environment.CurrentDirectory <- __SOURCE_DIRECTORY__
@@ -46,10 +37,6 @@ let projectPath = Path.getFullName "./src/FSharp.Azure.StorageTypeProvider"
// Test path
let testPath = Path.getFullName "./tests/IntegrationTests"
-// Read additional information from the release notes document
-
-// Test Output Dir
-let testOutPutDir = "TestOutput"
let release =
@@ -68,10 +55,6 @@ Target.Create "AssemblyInfo" (fun _ ->
let inline withWorkDir wd =
DotNet.Options.withWorkingDirectory wd
-let runDotNet cmd workingDir =
- let result =
- DotNet.exec (withWorkDir workingDir) cmd ""
- if result.ExitCode <> 0 then failwithf "'dotnet %s' failed in %s" cmd workingDir
// --------------------------------------------------------------------------------------
// Clean build results
@@ -96,28 +79,22 @@ Target.Create "Build" (fun _ ->
Target.Create "ResetTestData" (fun _ ->
let script = Path.Combine(testPath, "ResetTestData.fsx")
Emulators.startStorageEmulator()
- Fsi.exec (fun p ->
+ Fsi.exec (fun p ->
+ printfn "%A" p
{ p with
TargetProfile = Fsi.Profile.Netcore
WorkingDirectory = testPath
}) script [""]
|> snd
- |> Seq.iter(fun x -> printfn "%s" x)) ///ToBeFixed
+ |> Seq.iter (printfn "%s"))
// Run integration tests
let root = __SOURCE_DIRECTORY__
-let testNetCoreDir = root > "tests" > "IntegrationTests" > "bin" > "Release" > "netcoreapp2.0" > "win10-x64" > "publish"
Target.Create "RunTests" (fun _ ->
- let result = DotNet.exec (withWorkDir testPath) "publish --self-contained -c Release -r win10-x64" ""
- if not result.OK then failwith "Publish failed"
- printfn "Dkr: %s" testNetCoreDir
- let result = DotNet.exec (withWorkDir testNetCoreDir) "" "IntegrationTests.dll"
- if result.OK then
- printfn "Expecto for netcore finished without Errors"
- else
- printfn "Expecto for netcore finished with Errors"
- )
+ let testNetCoreDir = root > "tests" > "IntegrationTests" > "bin" > "Release" > "netcoreapp2.0" > "publish" > "IntegrationTests.dll"
+ DotNet.publish (fun p -> { p with Configuration = DotNet.BuildConfiguration.Release }) testPath
+ DotNet.exec id testNetCoreDir "" |> ignore)
// --------------------------------------------------------------------------------------
// Build a NuGet package
@@ -132,14 +109,13 @@ Target.Create "NuGet" (fun _ ->
Description = "The F# Azure Storage Type Provider allows simple access to Blob, Table and Queue assets, using Azure Storage metadata to intelligently infer schema where possible, whilst providing a simple API for common tasks."
Version = release.NugetVersion
ReleaseNotes = release.Notes |> String.concat Environment.NewLine
- Tags = "azure, f#, fsharp, type provider, blob, table, queue, script"
+ Tags = "azure, f#, fsharp, type provider, blob, table, queue, cosmos, script"
OutputPath = @"bin\package"
- Dependencies = [ "WindowsAzure.Storage", "9.3.2"
- "FSharp.Compiler.Tools", "10.2.1" ]
+ Dependencies = [ "WindowsAzure.Storage", "9.3.2" ]
References = [ "FSharp.Azure.StorageTypeProvider.dll" ]
Files =
([ "FSharp.Azure.StorageTypeProvider.xml"; "FSharp.Azure.StorageTypeProvider.dll"
- "Microsoft.WindowsAzure.Storage.dll"; "Newtonsoft.Json.dll" ]
+ "Microsoft.Azure.Storage.dll"; "Newtonsoft.Json.dll" ]
|> List.map (fun file -> "../bin/netstandard2.0/publish/" + file, Some "lib/netstandard2.0", None))
@ [ "StorageTypeProvider.fsx", None, None ] })
("nuget/" + project + ".nuspec"))
diff --git a/build.fsx.lock b/build.fsx.lock
new file mode 100644
index 0000000..d7efe6e
--- /dev/null
+++ b/build.fsx.lock
@@ -0,0 +1,5 @@
+STORAGE: NONE
+RESTRICTION: == netstandard2.0
+NUGET
+ remote: https://api.nuget.org/v3/index.json
+ FSharp.Core (4.6.2)
diff --git a/docs/content/blobs.fsx b/docs/content/blobs.fsx
index 438b5a7..b508fd7 100644
--- a/docs/content/blobs.fsx
+++ b/docs/content/blobs.fsx
@@ -11,7 +11,7 @@ Working with Blobs
==================
For more information on Blobs in general, please see some of the many articles on
-[MSDN](https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.aspx) or the [Azure](http://azure.microsoft.com/en-us/documentation/services/storage/) [documentation](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/). Some of the core features of the Blob provider are: -
+[MSDN](https://msdn.microsoft.com/en-us/library/Microsoft.Azure.storage.blob.aspx) or the [Azure](http://azure.microsoft.com/en-us/documentation/services/storage/) [documentation](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/). Some of the core features of the Blob provider are: -
## Rapid navigation
diff --git a/docs/content/queues.fsx b/docs/content/queues.fsx
index a6557c1..755e4fa 100644
--- a/docs/content/queues.fsx
+++ b/docs/content/queues.fsx
@@ -10,7 +10,7 @@ Working with Queues
===================
For more information on Queues in general, please see some of the many articles on
-[MSDN](https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.queue.aspx) or the [Azure](http://azure.microsoft.com/en-us/documentation/services/storage/) [documentation](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-queues/). Some of the core features of the Queue provider are: -
+[MSDN](https://msdn.microsoft.com/en-us/library/Microsoft.Azure.storage.queue.aspx) or the [Azure](http://azure.microsoft.com/en-us/documentation/services/storage/) [documentation](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-queues/). Some of the core features of the Queue provider are: -
## Rapid navigation
diff --git a/docs/content/tables.fsx b/docs/content/tables.fsx
index b297f7c..f07a474 100644
--- a/docs/content/tables.fsx
+++ b/docs/content/tables.fsx
@@ -3,7 +3,7 @@
open Deedle
open FSharp.Azure.StorageTypeProvider
open FSharp.Azure.StorageTypeProvider.Table
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Cosmos.Table
open System
type Azure = AzureTypeProvider<"UseDevelopmentStorage=true">
@@ -21,7 +21,7 @@ Working with Tables
===================
For more information on Tables in general, please see some of the many articles on
-[MSDN](https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.table.aspx) or the [Azure](http://azure.microsoft.com/en-us/documentation/services/storage/) [documentation](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/). Some of the core features of the Tables provider are: -
+[MSDN](https://msdn.microsoft.com/en-us/library/Microsoft.Azure.Cosmos.Table.aspx) or the [Azure](http://azure.microsoft.com/en-us/documentation/services/storage/) [documentation](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-tables/). Some of the core features of the Tables provider are: -
##Rapid navigation
diff --git a/docs/tools/references.fsx b/docs/tools/references.fsx
index 4ff8b57..821bf44 100644
--- a/docs/tools/references.fsx
+++ b/docs/tools/references.fsx
@@ -2,7 +2,7 @@
#r @"..\..\bin\Microsoft.Data.OData.dll"
#r @"..\..\bin\Microsoft.Data.Services.Client.dll"
#r @"..\..\bin\Microsoft.Data.Edm.dll"
-#r @"..\..\bin\Microsoft.WindowsAzure.Storage.dll"
+#r @"..\..\bin\Microsoft.Azure.Storage.dll"
#r @"..\..\bin\Newtonsoft.Json.dll"
#r @"..\..\bin\System.Spatial.dll"
#r @"System.Xml.Linq.dll"
diff --git a/paket.dependencies b/paket.dependencies
index ad1f111..03aded0 100644
--- a/paket.dependencies
+++ b/paket.dependencies
@@ -1,13 +1,16 @@
+storage: none
redirects: force
source https://www.nuget.org/api/v2/
framework: netstandard2.0, netcoreapp2.0
generate_load_scripts: true
nuget FSharp.Core
-nuget WindowsAzure.Storage 9.3.2
-nuget Newtonsoft.Json 10.0.2
+nuget Microsoft.Azure.Storage.Common
+nuget Microsoft.Azure.Storage.Blob
+nuget Microsoft.Azure.Storage.Queue
+nuget Microsoft.Azure.Cosmos.Table
+nuget Newtonsoft.Json
nuget System.Net.Http
-nuget FSharp.Compiler.Tools
nuget FAKE
nuget Nuget.CommandLine
@@ -43,4 +46,4 @@ nuget Fake.DotNet.Fsi
nuget Fake.DotNet.AssemblyInfoFile
nuget Fake.DotNet.NuGet
nuget Fake.IO.FileSystem
-nuget Fake.Tools.Git
\ No newline at end of file
+nuget Fake.Tools.Git
diff --git a/paket.lock b/paket.lock
index d9e0427..ce6bd77 100644
--- a/paket.lock
+++ b/paket.lock
@@ -1,5 +1,6 @@
GENERATE-LOAD-SCRIPTS: ON
REDIRECTS: FORCE
+STORAGE: NONE
RESTRICTION: || (== netcoreapp2.0) (== netstandard2.0)
NUGET
remote: https://www.nuget.org/api/v2
@@ -20,15 +21,46 @@ NUGET
System.Reflection.TypeExtensions (>= 4.3)
System.Runtime.Loader (>= 4.0)
System.Security.Cryptography.Algorithms (>= 4.3)
- FSharp.Compiler.Tools (10.2.3)
FSharp.Core (4.6.2)
FSharp.Formatting (3.1)
FSharp.Compiler.Service (>= 27.0.1 < 28.0)
Microsoft.AspNet.Razor (>= 3.2.7 < 4.0)
System.ValueTuple (>= 4.5 < 5.0)
Microsoft.AspNet.Razor (3.2.7)
- Microsoft.CodeCoverage (16.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0))
- Microsoft.CSharp (4.5)
+ Microsoft.Azure.Cosmos.Table (1.0.1)
+ Microsoft.Azure.DocumentDB.Core (>= 2.1.3)
+ Microsoft.OData.Core (>= 7.5)
+ Newtonsoft.Json (>= 10.0.2)
+ Microsoft.Azure.DocumentDB.Core (2.4)
+ NETStandard.Library (>= 1.6)
+ Newtonsoft.Json (>= 9.0.1)
+ System.Collections.Immutable (>= 1.3)
+ System.Collections.NonGeneric (>= 4.0.1)
+ System.Collections.Specialized (>= 4.0.1)
+ System.Diagnostics.TraceSource (>= 4.0)
+ System.Dynamic.Runtime (>= 4.0.11)
+ System.Linq.Queryable (>= 4.0.1)
+ System.Net.Http (>= 4.3.4)
+ System.Net.NameResolution (>= 4.0)
+ System.Net.NetworkInformation (>= 4.1)
+ System.Net.Requests (>= 4.0.11)
+ System.Net.Security (>= 4.3.2)
+ System.Net.WebHeaderCollection (>= 4.0.1)
+ System.Runtime.Serialization.Primitives (>= 4.1.1)
+ System.Security.SecureString (>= 4.0)
+ Microsoft.Azure.KeyVault.Core (3.0.3)
+ NETStandard.Library (>= 1.6.1)
+ Microsoft.Azure.Storage.Blob (10.0.3)
+ Microsoft.Azure.Storage.Common (>= 10.0.3)
+ NETStandard.Library (>= 2.0.1)
+ Microsoft.Azure.Storage.Common (10.0.3)
+ Microsoft.Azure.KeyVault.Core (>= 2.0.4)
+ NETStandard.Library (>= 2.0.1)
+ Newtonsoft.Json (>= 10.0.2)
+ Microsoft.Azure.Storage.Queue (10.0.3)
+ Microsoft.Azure.Storage.Common (>= 10.0.3)
+ NETStandard.Library (>= 2.0.1)
+ Microsoft.CodeCoverage (16.1.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0))
Microsoft.DotNet.PlatformAbstractions (2.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.AppContext (>= 4.1)
System.Collections (>= 4.0.11)
@@ -44,15 +76,20 @@ NUGET
System.Diagnostics.Debug (>= 4.0.11)
System.Dynamic.Runtime (>= 4.0.11)
System.Linq (>= 4.1)
- Microsoft.NET.Test.Sdk (16.1)
- Microsoft.CodeCoverage (>= 16.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0))
- Microsoft.TestPlatform.TestHost (>= 16.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ Microsoft.NET.Test.Sdk (16.1.1)
+ Microsoft.CodeCoverage (>= 16.1.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= net45)) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ Microsoft.TestPlatform.TestHost (>= 16.1.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
Microsoft.NETCore.Jit (2.0.8)
- Microsoft.NETCore.Platforms (2.1.1)
+ Microsoft.NETCore.Platforms (2.2.1)
Microsoft.NETCore.Runtime.CoreCLR (2.0.8)
Microsoft.NETCore.Jit (>= 2.0.8)
Microsoft.NETCore.Targets (2.1)
- Microsoft.TestPlatform.ObjectModel (16.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ Microsoft.OData.Core (7.6)
+ Microsoft.OData.Edm (7.6)
+ Microsoft.Spatial (7.6)
+ Microsoft.OData.Edm (7.6)
+ Microsoft.Spatial (7.6)
+ Microsoft.TestPlatform.ObjectModel (16.1.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
NETStandard.Library (>= 1.6)
System.ComponentModel.EventBasedAsync (>= 4.0.11)
System.ComponentModel.TypeConverter (>= 4.1)
@@ -67,9 +104,9 @@ NUGET
System.Runtime.Serialization.Primitives (>= 4.1.1)
System.Threading.Thread (>= 4.0)
System.Xml.XPath.XmlDocument (>= 4.0.1)
- Microsoft.TestPlatform.TestHost (16.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ Microsoft.TestPlatform.TestHost (16.1.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
Microsoft.Extensions.DependencyModel (>= 1.0.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
- Microsoft.TestPlatform.ObjectModel (>= 16.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= uap10.0))
+ Microsoft.TestPlatform.ObjectModel (>= 16.1.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= uap10.0))
Newtonsoft.Json (>= 9.0.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0)) (&& (== netstandard2.0) (>= uap10.0))
Microsoft.Win32.Primitives (4.3)
Microsoft.NETCore.Platforms (>= 1.1)
@@ -80,25 +117,19 @@ NUGET
System.Memory (>= 4.5)
System.Security.AccessControl (>= 4.5)
System.Security.Principal.Windows (>= 4.5)
- Mono.Cecil (0.10.3)
- System.Collections (>= 4.0.11)
- System.IO.FileSystem (>= 4.0.1)
- System.IO.FileSystem.Primitives (>= 4.0.1)
- System.Reflection (>= 4.1)
- System.Runtime.Extensions (>= 4.1)
- System.Security.Cryptography.Algorithms (>= 4.2)
- System.Security.Cryptography.Csp (>= 4.0)
- System.Threading (>= 4.0.11)
+ Mono.Cecil (0.10.4)
+ System.Collections (>= 4.3)
+ System.IO.FileSystem (>= 4.3)
+ System.IO.FileSystem.Primitives (>= 4.3)
+ System.Reflection (>= 4.3)
+ System.Runtime.Extensions (>= 4.3)
+ System.Security.Cryptography.Algorithms (>= 4.3)
+ System.Security.Cryptography.Csp (>= 4.3)
+ System.Threading (>= 4.3)
NETStandard.Library (2.0.3)
Microsoft.NETCore.Platforms (>= 1.1)
- Newtonsoft.Json (10.0.2)
- Microsoft.CSharp (>= 4.3)
- NETStandard.Library (>= 1.6.1)
- System.ComponentModel.TypeConverter (>= 4.3)
- System.Runtime.Serialization.Formatters (>= 4.3)
- System.Runtime.Serialization.Primitives (>= 4.3)
- System.Xml.XmlDocument (>= 4.3)
- NuGet.CommandLine (4.9.4)
+ Newtonsoft.Json (12.0.2)
+ NuGet.CommandLine (5.0.2)
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
@@ -111,6 +142,9 @@ NUGET
runtime.native.System.Net.Http (4.3.1)
Microsoft.NETCore.Platforms (>= 1.1.1)
Microsoft.NETCore.Targets (>= 1.1.3)
+ runtime.native.System.Net.Security (4.3.1)
+ Microsoft.NETCore.Platforms (>= 1.1.1)
+ Microsoft.NETCore.Targets (>= 1.1.3)
runtime.native.System.Security.Cryptography.Apple (4.3.1)
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1)
runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
@@ -173,18 +207,18 @@ NUGET
System.Runtime (>= 4.3)
System.Runtime.Extensions (>= 4.3)
System.Threading (>= 4.3)
- System.ComponentModel (4.3)
+ System.ComponentModel (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.Runtime (>= 4.3)
System.ComponentModel.EventBasedAsync (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.Resources.ResourceManager (>= 4.3)
System.Runtime (>= 4.3)
System.Threading (>= 4.3)
System.Threading.Tasks (>= 4.3)
- System.ComponentModel.Primitives (4.3)
+ System.ComponentModel.Primitives (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.ComponentModel (>= 4.3)
System.Resources.ResourceManager (>= 4.3)
System.Runtime (>= 4.3)
- System.ComponentModel.TypeConverter (4.3)
+ System.ComponentModel.TypeConverter (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.Collections (>= 4.3)
System.Collections.NonGeneric (>= 4.3)
System.Collections.Specialized (>= 4.3)
@@ -255,7 +289,7 @@ NUGET
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
System.Runtime (>= 4.3)
- System.Dynamic.Runtime (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ System.Dynamic.Runtime (4.3)
System.Collections (>= 4.3)
System.Diagnostics.Debug (>= 4.3)
System.Linq (>= 4.3)
@@ -309,7 +343,7 @@ NUGET
System.Resources.ResourceManager (>= 4.3)
System.Runtime (>= 4.3)
System.Runtime.Extensions (>= 4.3)
- System.Linq.Expressions (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ System.Linq.Expressions (4.3)
System.Collections (>= 4.3)
System.Diagnostics.Debug (>= 4.3)
System.Globalization (>= 4.3)
@@ -327,10 +361,19 @@ NUGET
System.Runtime (>= 4.3)
System.Runtime.Extensions (>= 4.3)
System.Threading (>= 4.3)
- System.Memory (4.5.1)
+ System.Linq.Queryable (4.3)
+ System.Collections (>= 4.3)
+ System.Diagnostics.Debug (>= 4.3)
+ System.Linq (>= 4.3)
+ System.Linq.Expressions (>= 4.3)
+ System.Reflection (>= 4.3)
+ System.Reflection.Extensions (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Memory (4.5.3)
System.Buffers (>= 4.4) - restriction: || (&& (== netcoreapp2.0) (>= monotouch)) (&& (== netcoreapp2.0) (>= net461)) (&& (== netcoreapp2.0) (< netstandard1.1)) (&& (== netcoreapp2.0) (< netstandard2.0)) (&& (== netcoreapp2.0) (>= xamarinios)) (&& (== netcoreapp2.0) (>= xamarinmac)) (&& (== netcoreapp2.0) (>= xamarintvos)) (&& (== netcoreapp2.0) (>= xamarinwatchos)) (== netstandard2.0)
System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== netcoreapp2.0) (>= net461)) (== netstandard2.0)
- System.Runtime.CompilerServices.Unsafe (>= 4.5)
+ System.Runtime.CompilerServices.Unsafe (>= 4.5.2)
System.Net.Http (4.3.4)
Microsoft.NETCore.Platforms (>= 1.1.1)
runtime.native.System (>= 4.3)
@@ -358,13 +401,107 @@ NUGET
System.Text.Encoding (>= 4.3)
System.Threading (>= 4.3)
System.Threading.Tasks (>= 4.3)
- System.Net.Primitives (4.3)
+ System.Net.NameResolution (4.3)
Microsoft.NETCore.Platforms (>= 1.1)
- Microsoft.NETCore.Targets (>= 1.1)
+ runtime.native.System (>= 4.3)
+ System.Collections (>= 4.3)
+ System.Diagnostics.Tracing (>= 4.3)
+ System.Globalization (>= 4.3)
+ System.Net.Primitives (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Runtime.Extensions (>= 4.3)
+ System.Runtime.Handles (>= 4.3)
+ System.Runtime.InteropServices (>= 4.3)
+ System.Security.Principal.Windows (>= 4.3)
+ System.Threading (>= 4.3)
+ System.Threading.Tasks (>= 4.3)
+ System.Net.NetworkInformation (4.3)
+ Microsoft.NETCore.Platforms (>= 1.1)
+ Microsoft.Win32.Primitives (>= 4.3)
+ runtime.native.System (>= 4.3)
+ System.Collections (>= 4.3)
+ System.Diagnostics.Tracing (>= 4.3)
+ System.Globalization (>= 4.3)
+ System.IO (>= 4.3)
+ System.IO.FileSystem (>= 4.3)
+ System.IO.FileSystem.Primitives (>= 4.3)
+ System.Linq (>= 4.3)
+ System.Net.Primitives (>= 4.3)
+ System.Net.Sockets (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Runtime.Extensions (>= 4.3)
+ System.Runtime.Handles (>= 4.3)
+ System.Runtime.InteropServices (>= 4.3)
+ System.Security.Principal.Windows (>= 4.3)
+ System.Threading (>= 4.3)
+ System.Threading.Overlapped (>= 4.3)
+ System.Threading.Tasks (>= 4.3)
+ System.Threading.Thread (>= 4.3)
+ System.Threading.ThreadPool (>= 4.3)
+ System.Net.Primitives (4.3.1)
+ Microsoft.NETCore.Platforms (>= 1.1.1)
+ Microsoft.NETCore.Targets (>= 1.1.3)
+ System.Runtime (>= 4.3.1)
+ System.Runtime.Handles (>= 4.3)
+ System.Net.Requests (4.3)
+ Microsoft.NETCore.Platforms (>= 1.1)
+ System.Collections (>= 4.3)
+ System.Diagnostics.Debug (>= 4.3)
+ System.Diagnostics.Tracing (>= 4.3)
+ System.Globalization (>= 4.3)
+ System.IO (>= 4.3)
+ System.Net.Http (>= 4.3)
+ System.Net.Primitives (>= 4.3)
+ System.Net.WebHeaderCollection (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Threading (>= 4.3)
+ System.Threading.Tasks (>= 4.3)
+ System.Net.Security (4.3.2)
+ Microsoft.NETCore.Platforms (>= 1.1)
+ Microsoft.Win32.Primitives (>= 4.3)
+ runtime.native.System (>= 4.3)
+ runtime.native.System.Net.Security (>= 4.3)
+ runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2)
+ System.Collections (>= 4.3)
+ System.Collections.Concurrent (>= 4.3)
+ System.Diagnostics.Tracing (>= 4.3)
+ System.Globalization (>= 4.3)
+ System.Globalization.Extensions (>= 4.3)
+ System.IO (>= 4.3)
+ System.Net.Primitives (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
System.Runtime (>= 4.3)
+ System.Runtime.Extensions (>= 4.3)
System.Runtime.Handles (>= 4.3)
+ System.Runtime.InteropServices (>= 4.3)
+ System.Security.Claims (>= 4.3)
+ System.Security.Cryptography.Algorithms (>= 4.3)
+ System.Security.Cryptography.Encoding (>= 4.3)
+ System.Security.Cryptography.OpenSsl (>= 4.3)
+ System.Security.Cryptography.Primitives (>= 4.3)
+ System.Security.Cryptography.X509Certificates (>= 4.3)
+ System.Security.Principal (>= 4.3)
+ System.Text.Encoding (>= 4.3)
+ System.Threading (>= 4.3)
+ System.Threading.Tasks (>= 4.3)
+ System.Threading.ThreadPool (>= 4.3)
+ System.Net.Sockets (4.3)
+ Microsoft.NETCore.Platforms (>= 1.1)
+ Microsoft.NETCore.Targets (>= 1.1)
+ System.IO (>= 4.3)
+ System.Net.Primitives (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Threading.Tasks (>= 4.3)
+ System.Net.WebHeaderCollection (4.3)
+ System.Collections (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Runtime.Extensions (>= 4.3)
System.Numerics.Vectors (4.5) - restriction: || (&& (== netcoreapp2.0) (>= net461)) (== netstandard2.0)
- System.ObjectModel (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ System.ObjectModel (4.3)
System.Collections (>= 4.3)
System.Diagnostics.Debug (>= 4.3)
System.Resources.ResourceManager (>= 4.3)
@@ -412,7 +549,7 @@ NUGET
System.Reflection (>= 4.3)
System.Reflection.Primitives (>= 4.3)
System.Runtime (>= 4.3)
- System.Reflection.Emit.Lightweight (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ System.Reflection.Emit.Lightweight (4.3)
System.Reflection (>= 4.3)
System.Reflection.Emit.ILGeneration (>= 4.3)
System.Reflection.Primitives (>= 4.3)
@@ -435,14 +572,14 @@ NUGET
System.Globalization (>= 4.3)
System.Reflection (>= 4.3)
System.Runtime (>= 4.3)
- System.Runtime (4.3)
- Microsoft.NETCore.Platforms (>= 1.1)
- Microsoft.NETCore.Targets (>= 1.1)
+ System.Runtime (4.3.1)
+ Microsoft.NETCore.Platforms (>= 1.1.1)
+ Microsoft.NETCore.Targets (>= 1.1.3)
System.Runtime.CompilerServices.Unsafe (4.5.2)
- System.Runtime.Extensions (4.3)
- Microsoft.NETCore.Platforms (>= 1.1)
- Microsoft.NETCore.Targets (>= 1.1)
- System.Runtime (>= 4.3)
+ System.Runtime.Extensions (4.3.1)
+ Microsoft.NETCore.Platforms (>= 1.1.1)
+ Microsoft.NETCore.Targets (>= 1.1.3)
+ System.Runtime (>= 4.3.1)
System.Runtime.Handles (4.3)
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
@@ -471,12 +608,6 @@ NUGET
System.Resources.ResourceManager (>= 4.3)
System.Runtime (>= 4.3)
System.Runtime.Extensions (>= 4.3)
- System.Runtime.Serialization.Formatters (4.3)
- System.Collections (>= 4.3)
- System.Reflection (>= 4.3)
- System.Resources.ResourceManager (>= 4.3)
- System.Runtime (>= 4.3)
- System.Runtime.Serialization.Primitives (>= 4.3)
System.Runtime.Serialization.Json (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.IO (>= 4.3)
System.Private.DataContractSerialization (>= 4.3)
@@ -487,6 +618,14 @@ NUGET
System.Security.AccessControl (4.5)
Microsoft.NETCore.Platforms (>= 2.0) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp2.0))
System.Security.Principal.Windows (>= 4.5)
+ System.Security.Claims (4.3)
+ System.Collections (>= 4.3)
+ System.Globalization (>= 4.3)
+ System.IO (>= 4.3)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Runtime.Extensions (>= 4.3)
+ System.Security.Principal (>= 4.3)
System.Security.Cryptography.Algorithms (4.3.1)
Microsoft.NETCore.Platforms (>= 1.1)
runtime.native.System.Security.Cryptography.Apple (>= 4.3.1)
@@ -531,8 +670,8 @@ NUGET
System.Runtime.InteropServices (>= 4.3)
System.Security.Cryptography.Primitives (>= 4.3)
System.Text.Encoding (>= 4.3)
- System.Security.Cryptography.OpenSsl (4.5)
- Microsoft.NETCore.Platforms (>= 2.0) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp2.0))
+ System.Security.Cryptography.OpenSsl (4.5.1)
+ Microsoft.NETCore.Platforms (>= 2.1.2) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp2.0))
System.Security.Cryptography.Primitives (4.3)
System.Diagnostics.Debug (>= 4.3)
System.Globalization (>= 4.3)
@@ -571,8 +710,19 @@ NUGET
System.Threading (>= 4.3)
System.Security.Permissions (4.5)
System.Security.AccessControl (>= 4.5)
+ System.Security.Principal (4.3)
+ System.Runtime (>= 4.3)
System.Security.Principal.Windows (4.5.1)
Microsoft.NETCore.Platforms (>= 2.0) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp2.0))
+ System.Security.SecureString (4.3)
+ Microsoft.NETCore.Platforms (>= 1.1)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Runtime.Handles (>= 4.3)
+ System.Runtime.InteropServices (>= 4.3)
+ System.Security.Cryptography.Primitives (>= 4.3)
+ System.Text.Encoding (>= 4.3)
+ System.Threading (>= 4.3)
System.Text.Encoding (4.3)
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
@@ -582,29 +732,29 @@ NUGET
Microsoft.NETCore.Targets (>= 1.1)
System.Runtime (>= 4.3)
System.Text.Encoding (>= 4.3)
- System.Text.RegularExpressions (4.3)
- System.Collections (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Globalization (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Runtime (>= 4.3)
- System.Runtime.Extensions (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Threading (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
+ System.Text.RegularExpressions (4.3.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ System.Runtime (>= 4.3.1)
System.Threading (4.3)
System.Runtime (>= 4.3)
System.Threading.Tasks (>= 4.3)
+ System.Threading.Overlapped (4.3)
+ Microsoft.NETCore.Platforms (>= 1.1)
+ System.Resources.ResourceManager (>= 4.3)
+ System.Runtime (>= 4.3)
+ System.Runtime.Handles (>= 4.3)
System.Threading.Tasks (4.3)
Microsoft.NETCore.Platforms (>= 1.1)
Microsoft.NETCore.Targets (>= 1.1)
System.Runtime (>= 4.3)
- System.Threading.Tasks.Extensions (4.5.1)
- System.Runtime.CompilerServices.Unsafe (>= 4.5)
+ System.Threading.Tasks.Extensions (4.5.2) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
+ System.Runtime.CompilerServices.Unsafe (>= 4.5.2)
System.Threading.Thread (4.3)
System.Runtime (>= 4.3)
System.Threading.ThreadPool (4.3)
System.Runtime (>= 4.3)
System.Runtime.Handles (>= 4.3)
System.ValueTuple (4.5)
- System.Xml.ReaderWriter (4.3.1)
+ System.Xml.ReaderWriter (4.3.1) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.Collections (>= 4.3)
System.Diagnostics.Debug (>= 4.3)
System.Globalization (>= 4.3)
@@ -633,7 +783,7 @@ NUGET
System.Text.Encoding (>= 4.3)
System.Threading (>= 4.3)
System.Xml.ReaderWriter (>= 4.3)
- System.Xml.XmlDocument (4.3)
+ System.Xml.XmlDocument (4.3) - restriction: || (== netcoreapp2.0) (&& (== netstandard2.0) (>= netcoreapp1.0))
System.Collections (>= 4.3)
System.Diagnostics.Debug (>= 4.3)
System.Globalization (>= 4.3)
@@ -689,13 +839,10 @@ NUGET
System.ValueTuple (>= 4.4)
Unquote (4.0)
FSharp.Core (>= 4.2.3)
- WindowsAzure.Storage (9.3.2)
- NETStandard.Library (>= 1.6.1)
- Newtonsoft.Json (>= 10.0.2)
GITHUB
remote: fsprojects/FSharp.TypeProviders.SDK
- src/ProvidedTypes.fs (f97f77ba03a8f91d927ab70259dc91eb8ba02e40)
- src/ProvidedTypes.fsi (f97f77ba03a8f91d927ab70259dc91eb8ba02e40)
+ src/ProvidedTypes.fs (592d23a96db79b4248ed23a062db3a17433282ce)
+ src/ProvidedTypes.fsi (592d23a96db79b4248ed23a062db3a17433282ce)
GROUP build
STORAGE: NONE
RESTRICTION: || (== netcoreapp2.0) (== netstandard2.0)
@@ -703,21 +850,21 @@ NUGET
remote: https://www.nuget.org/api/v2
BlackFox.VsWhere (1.0)
FSharp.Core (>= 4.2.3)
- Fake.Azure.Emulators (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
+ Fake.Azure.Emulators (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
FSharp.Core (>= 4.3.4)
System.Diagnostics.FileVersionInfo (>= 4.3)
System.Diagnostics.Process (>= 4.3)
System.IO.FileSystem.Watcher (>= 4.3)
- Fake.BuildServer.AppVeyor (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
- Fake.Net.Http (>= 5.13.5)
+ Fake.BuildServer.AppVeyor (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
+ Fake.Net.Http (>= 5.15)
FSharp.Core (>= 4.3.4)
System.Diagnostics.FileVersionInfo (>= 4.3)
System.Diagnostics.Process (>= 4.3)
@@ -735,29 +882,29 @@ NUGET
Fake.Core.String (>= 5.0.0-alpha018)
FSharp.Core (>= 4.1.18)
NETStandard.Library (>= 1.6.1)
- Fake.Core.Context (5.13.5)
+ Fake.Core.Context (5.15)
FSharp.Core (>= 4.3.4)
- Fake.Core.Environment (5.13.5)
+ Fake.Core.Environment (5.15)
FSharp.Core (>= 4.3.4)
- Fake.Core.FakeVar (5.13.5)
- Fake.Core.Context (>= 5.13.5)
+ Fake.Core.FakeVar (5.15)
+ Fake.Core.Context (>= 5.15)
FSharp.Core (>= 4.3.4)
- Fake.Core.Process (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.FakeVar (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
+ Fake.Core.Process (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.FakeVar (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
FSharp.Core (>= 4.3.4)
System.Diagnostics.Process (>= 4.3)
- Fake.Core.ReleaseNotes (5.13.5)
- Fake.Core.SemVer (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
+ Fake.Core.ReleaseNotes (5.15)
+ Fake.Core.SemVer (>= 5.15)
+ Fake.Core.String (>= 5.15)
FSharp.Core (>= 4.3.4)
- Fake.Core.SemVer (5.13.5)
+ Fake.Core.SemVer (5.15)
FSharp.Core (>= 4.3.4)
System.Runtime.Numerics (>= 4.3)
- Fake.Core.String (5.13.5)
+ Fake.Core.String (5.15)
FSharp.Core (>= 4.3.4)
Fake.Core.Targets (5.0.0-alpha018)
Fake.Core.BuildServer (>= 5.0.0-alpha018)
@@ -767,12 +914,12 @@ NUGET
Fake.Core.Tracing (>= 5.0.0-alpha018)
FSharp.Core (>= 4.1.18)
NETStandard.Library (>= 1.6.1)
- Fake.Core.Tasks (5.13.5)
- Fake.Core.Trace (>= 5.13.5)
+ Fake.Core.Tasks (5.15)
+ Fake.Core.Trace (>= 5.15)
FSharp.Core (>= 4.3.4)
- Fake.Core.Trace (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.FakeVar (>= 5.13.5)
+ Fake.Core.Trace (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.FakeVar (>= 5.15)
FSharp.Core (>= 4.3.4)
Fake.Core.Tracing (5.0.0-alpha018)
Fake.Core.BuildServer (>= 5.0.0-alpha018)
@@ -780,8 +927,8 @@ NUGET
Fake.Core.String (>= 5.0.0-alpha018)
FSharp.Core (>= 4.1.18)
NETStandard.Library (>= 1.6.1)
- Fake.Core.Xml (5.13.5)
- Fake.Core.String (>= 5.13.5)
+ Fake.Core.Xml (5.15)
+ Fake.Core.String (>= 5.15)
FSharp.Core (>= 4.3.4)
System.Xml.ReaderWriter (>= 4.3.1)
System.Xml.XDocument (>= 4.3)
@@ -789,73 +936,73 @@ NUGET
System.Xml.XPath.XDocument (>= 4.3)
System.Xml.XPath.XmlDocument (>= 4.3)
FAKE.Dotnet (2.0)
- Fake.DotNet.AssemblyInfoFile (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
+ Fake.DotNet.AssemblyInfoFile (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
FSharp.Core (>= 4.3.4)
- Fake.DotNet.Cli (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.DotNet.MSBuild (>= 5.13.5)
- Fake.DotNet.NuGet (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
+ Fake.DotNet.Cli (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.DotNet.MSBuild (>= 5.15)
+ Fake.DotNet.NuGet (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
FSharp.Core (>= 4.3.4)
Newtonsoft.Json (>= 12.0.2)
- Fake.DotNet.Fsi (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.DotNet.MSBuild (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
- Fake.Tools.Git (>= 5.13.5)
+ Fake.DotNet.Fsi (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.DotNet.MSBuild (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
+ Fake.Tools.Git (>= 5.15)
FSharp.Compiler.Service (>= 25.0.1)
FSharp.Core (>= 4.3.4)
- Fake.DotNet.MSBuild (5.13.5)
+ Fake.DotNet.MSBuild (5.15)
BlackFox.VsWhere (>= 1.0)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
FSharp.Core (>= 4.3.4)
- MSBuild.StructuredLogger (>= 2.0.88)
- Fake.DotNet.NuGet (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.Core.SemVer (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Tasks (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.Core.Xml (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
- Fake.Net.Http (>= 5.13.5)
+ MSBuild.StructuredLogger (>= 2.0.94)
+ Fake.DotNet.NuGet (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.Core.SemVer (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Tasks (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.Core.Xml (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
+ Fake.Net.Http (>= 5.15)
FSharp.Core (>= 4.3.4)
Newtonsoft.Json (>= 12.0.2)
NuGet.Protocol (>= 4.9.4)
System.Net.Http (>= 4.3.4)
- Fake.IO.FileSystem (5.13.5)
- Fake.Core.String (>= 5.13.5)
+ Fake.IO.FileSystem (5.15)
+ Fake.Core.String (>= 5.15)
FSharp.Core (>= 4.3.4)
System.Diagnostics.FileVersionInfo (>= 4.3)
System.IO.FileSystem.Watcher (>= 4.3)
- Fake.Net.Http (5.13.5)
- Fake.Core.Trace (>= 5.13.5)
+ Fake.Net.Http (5.15)
+ Fake.Core.Trace (>= 5.15)
FSharp.Core (>= 4.3.4)
System.Net.Http (>= 4.3.4)
- Fake.Tools.Git (5.13.5)
- Fake.Core.Environment (>= 5.13.5)
- Fake.Core.Process (>= 5.13.5)
- Fake.Core.SemVer (>= 5.13.5)
- Fake.Core.String (>= 5.13.5)
- Fake.Core.Trace (>= 5.13.5)
- Fake.IO.FileSystem (>= 5.13.5)
+ Fake.Tools.Git (5.15)
+ Fake.Core.Environment (>= 5.15)
+ Fake.Core.Process (>= 5.15)
+ Fake.Core.SemVer (>= 5.15)
+ Fake.Core.String (>= 5.15)
+ Fake.Core.Trace (>= 5.15)
+ Fake.IO.FileSystem (>= 5.15)
FSharp.Core (>= 4.3.4)
- FSharp.Compiler.Service (28.0)
+ FSharp.Compiler.Service (29.0.1)
FSharp.Core (>= 4.6.2)
System.Collections.Immutable (>= 1.5)
System.Diagnostics.Process (>= 4.1)
@@ -887,7 +1034,7 @@ NUGET
Microsoft.Win32.Registry (>= 4.3)
System.Collections.Immutable (>= 1.5)
System.Text.Encoding.CodePages (>= 4.0.1)
- Microsoft.NETCore.Platforms (2.2)
+ Microsoft.NETCore.Platforms (2.2.1)
Microsoft.NETCore.Targets (2.1)
Microsoft.Win32.Primitives (4.3)
Microsoft.NETCore.Platforms (>= 1.1)
@@ -906,23 +1053,23 @@ NUGET
NETStandard.Library (2.0.3)
Microsoft.NETCore.Platforms (>= 1.1)
Newtonsoft.Json (12.0.2)
- NuGet.Common (5.0)
- NuGet.Frameworks (>= 5.0)
+ NuGet.Common (5.1)
+ NuGet.Frameworks (>= 5.1)
System.Diagnostics.Process (>= 4.3)
System.Threading.Thread (>= 4.3)
- NuGet.Configuration (5.0)
- NuGet.Common (>= 5.0)
+ NuGet.Configuration (5.1)
+ NuGet.Common (>= 5.1)
System.Security.Cryptography.ProtectedData (>= 4.3)
- NuGet.Frameworks (5.0)
- NuGet.Packaging (5.0)
+ NuGet.Frameworks (5.1)
+ NuGet.Packaging (5.1)
Newtonsoft.Json (>= 9.0.1)
- NuGet.Configuration (>= 5.0)
- NuGet.Versioning (>= 5.0)
+ NuGet.Configuration (>= 5.1)
+ NuGet.Versioning (>= 5.1)
System.Dynamic.Runtime (>= 4.3)
- NuGet.Protocol (5.0)
- NuGet.Packaging (>= 5.0)
+ NuGet.Protocol (5.1)
+ NuGet.Packaging (>= 5.1)
System.Dynamic.Runtime (>= 4.3)
- NuGet.Versioning (5.0)
+ NuGet.Versioning (5.1)
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3)
@@ -1136,7 +1283,7 @@ NUGET
System.Runtime.Extensions (>= 4.3)
System.Threading (>= 4.3)
System.Threading.Tasks (>= 4.3)
- System.Memory (4.5.2)
+ System.Memory (4.5.3)
System.Buffers (>= 4.4) - restriction: || (&& (== netcoreapp2.0) (>= monotouch)) (&& (== netcoreapp2.0) (>= net461)) (&& (== netcoreapp2.0) (< netstandard1.1)) (&& (== netcoreapp2.0) (< netstandard2.0)) (&& (== netcoreapp2.0) (>= xamarinios)) (&& (== netcoreapp2.0) (>= xamarinmac)) (&& (== netcoreapp2.0) (>= xamarintvos)) (&& (== netcoreapp2.0) (>= xamarinwatchos)) (== netstandard2.0)
System.Numerics.Vectors (>= 4.4) - restriction: || (&& (== netcoreapp2.0) (>= net461)) (== netstandard2.0)
System.Runtime.CompilerServices.Unsafe (>= 4.5.2)
@@ -1167,10 +1314,10 @@ NUGET
System.Text.Encoding (>= 4.3)
System.Threading (>= 4.3)
System.Threading.Tasks (>= 4.3)
- System.Net.Primitives (4.3)
- Microsoft.NETCore.Platforms (>= 1.1)
- Microsoft.NETCore.Targets (>= 1.1)
- System.Runtime (>= 4.3)
+ System.Net.Primitives (4.3.1)
+ Microsoft.NETCore.Platforms (>= 1.1.1)
+ Microsoft.NETCore.Targets (>= 1.1.3)
+ System.Runtime (>= 4.3.1)
System.Runtime.Handles (>= 4.3)
System.Numerics.Vectors (4.5) - restriction: || (&& (== netcoreapp2.0) (>= net461)) (== netstandard2.0)
System.ObjectModel (4.3)
@@ -1355,13 +1502,13 @@ NUGET
Microsoft.NETCore.Targets (>= 1.1)
System.Runtime (>= 4.3)
System.Text.Encoding (>= 4.3)
- System.Text.RegularExpressions (4.3)
- System.Collections (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Globalization (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Runtime (>= 4.3)
- System.Runtime.Extensions (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
- System.Threading (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (&& (== netcoreapp2.0) (< portable-net45+win8+wp8+wpa81)) (== netstandard2.0)
+ System.Text.RegularExpressions (4.3.1)
+ System.Collections (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (== netstandard2.0)
+ System.Globalization (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (== netstandard2.0)
+ System.Resources.ResourceManager (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (== netstandard2.0)
+ System.Runtime (>= 4.3.1)
+ System.Runtime.Extensions (>= 4.3.1) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (== netstandard2.0)
+ System.Threading (>= 4.3) - restriction: || (&& (== netcoreapp2.0) (< netcoreapp1.1)) (== netstandard2.0)
System.Threading (4.3)
System.Runtime (>= 4.3)
System.Threading.Tasks (>= 4.3)
diff --git a/sample-blobs.json b/sample-blobs.json
new file mode 100644
index 0000000..942a75f
--- /dev/null
+++ b/sample-blobs.json
@@ -0,0 +1,22 @@
+{
+ "samples": {
+ "file1.txt": { "Type": "blockblob" },
+ "file2.txt": null,
+ "file3.txt": { "Type": "pageblob" },
+ "folder/": {
+ "childFile.txt": null
+ },
+ "folder2/": {
+ "child/": {
+ "descendant4.txt": null
+ }
+ }
+ },
+ "random": {
+ "file.txt": null,
+ "folder/": {
+ "emptyFolder/": null
+ }
+ },
+ "emptyContainer": { }
+}
\ No newline at end of file
diff --git a/sample-tables.json b/sample-tables.json
new file mode 100644
index 0000000..3075c93
--- /dev/null
+++ b/sample-tables.json
@@ -0,0 +1,21 @@
+{
+ "Employee": {
+ "Name": {
+ "Type": "String"
+ },
+ "YearsWorking": {
+ "Type": "int32"
+ },
+ "Dob": {
+ "Type": "DateTime"
+ },
+ "Salary": {
+ "Type": "double",
+ "Optional": true
+ },
+ "IsManager": {
+ "Type": "boolean",
+ "Optional": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/Blob/BlobMemberFactory.fs b/src/FSharp.Azure.StorageTypeProvider.Blob/BlobMemberFactory.fs
similarity index 99%
rename from src/FSharp.Azure.StorageTypeProvider/Blob/BlobMemberFactory.fs
rename to src/FSharp.Azure.StorageTypeProvider.Blob/BlobMemberFactory.fs
index dc82ed1..894a427 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Blob/BlobMemberFactory.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/BlobMemberFactory.fs
@@ -4,7 +4,7 @@ module internal FSharp.Azure.StorageTypeProvider.Blob.BlobMemberFactory
open FSharp.Azure.StorageTypeProvider.Blob.BlobRepository
open ProviderImplementation.ProvidedTypes
open System
-open Microsoft.WindowsAzure.Storage.Blob
+open Microsoft.Azure.Storage.Blob
open FSharp.Control.Tasks
let rec private createBlobItem (domainType : ProvidedTypeDefinition) connectionString containerName fileItem =
diff --git a/src/FSharp.Azure.StorageTypeProvider/Blob/BlobRepository.fs b/src/FSharp.Azure.StorageTypeProvider.Blob/BlobRepository.fs
similarity index 98%
rename from src/FSharp.Azure.StorageTypeProvider/Blob/BlobRepository.fs
rename to src/FSharp.Azure.StorageTypeProvider.Blob/BlobRepository.fs
index 1610ecf..0994bbc 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Blob/BlobRepository.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/BlobRepository.fs
@@ -2,8 +2,8 @@
module FSharp.Azure.StorageTypeProvider.Blob.BlobRepository
open FSharp.Azure.StorageTypeProvider
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Blob
+open Microsoft.Azure.Storage
+open Microsoft.Azure.Storage.Blob
open System
open System.IO
diff --git a/src/FSharp.Azure.StorageTypeProvider.Blob/BlobTypeProvider.fs b/src/FSharp.Azure.StorageTypeProvider.Blob/BlobTypeProvider.fs
new file mode 100644
index 0000000..6488fda
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/BlobTypeProvider.fs
@@ -0,0 +1,116 @@
+namespace ProviderImplementation
+
+open FSharp.Azure.StorageTypeProvider
+open FSharp.Azure.StorageTypeProvider.Blob
+open FSharp.Azure.StorageTypeProvider.Configuration
+open Microsoft.FSharp.Core.CompilerServices
+open ProviderImplementation.ProvidedTypes
+open System
+open System.Collections.Generic
+open System.Reflection
+
+[]
+/// [omit]
+type public BlobTypeProvider(config : TypeProviderConfig) as this =
+ inherit TypeProviderForNamespaces(config)
+
+ let namespaceName = "FSharp.Azure.StorageTypeProvider.Blob"
+ let thisAssembly = typeof.Assembly
+ let azureAccountType = ProvidedTypeDefinition(thisAssembly, namespaceName, "BlobTypeProvider", baseType = Some typeof)
+
+ let buildConnectionString (args : obj []) =
+ let (|ConnectionString|TwoPart|DevelopmentStorage|) (args:obj []) =
+ let getArg i = args.[i] :?> string
+ let accountNameOrConnectionString, accountKey = getArg 0, getArg 1
+ let configFileKey, configFileName = getArg 2, getArg 3
+
+ match accountNameOrConnectionString, accountKey, configFileKey with
+ | _ when (not << String.IsNullOrWhiteSpace) configFileKey ->
+ let connectionFromConfig = getConnectionString(configFileKey, config.ResolutionFolder, configFileName)
+ ConnectionString connectionFromConfig
+ | _ when accountNameOrConnectionString.StartsWith "DefaultEndpointsProtocol" -> ConnectionString accountNameOrConnectionString
+ | _ when [ accountNameOrConnectionString; accountKey ] |> List.exists String.IsNullOrWhiteSpace -> DevelopmentStorage
+ | _ -> TwoPart (accountNameOrConnectionString, accountKey)
+
+ match args with
+ | DevelopmentStorage -> "UseDevelopmentStorage=true"
+ | ConnectionString conn -> conn
+ | TwoPart (name, key) -> sprintf "DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s;" name key
+
+ let startLiveRefresh : obj -> _ =
+ function
+ | :? int as seconds when seconds >= 1 ->
+ let seconds = seconds * 1000
+ async {
+ while true do
+ do! Async.Sleep seconds
+ this.Invalidate()
+ } |> Async.Start
+ | _ -> ()
+
+ let buildTypes (typeName : string) (args : obj []) =
+ // Create the top level property
+ let typeProviderForAccount = ProvidedTypeDefinition(thisAssembly, namespaceName, typeName, baseType = Some typeof)
+ typeProviderForAccount.AddMember(ProvidedConstructor([], fun _ -> <@@ null @@>))
+
+ startLiveRefresh args.[8]
+
+ let connectionString = buildConnectionString args
+ let staticBlobSchema = args.[6] :?> string |> Option.ofString
+ let staticTableSchema = args.[7] :?> string |> Option.ofString
+ let connectionStringValidation =
+ match staticBlobSchema, staticTableSchema with
+ | Some _, _ | _, Some _ -> None
+ | _ -> Some (validateConnectionString connectionString)
+
+ let parsedBlobSchema = Blob.StaticSchema.createSchema config.ResolutionFolder staticBlobSchema
+
+ match connectionStringValidation, parsedBlobSchema with
+ | Some (Ok ()), Ok blobSchema
+ | None, Ok blobSchema ->
+ let domainTypes = ProvidedTypeDefinition("Domain", Some typeof)
+ typeProviderForAccount.AddMember(domainTypes)
+ // Now create child members e.g. containers, tables etc.
+ typeProviderForAccount.AddMembers
+ ([ (BlobMemberFactory.getBlobStorageMembers blobSchema, "blobs") ]
+ |> List.choose (fun (builder, name) ->
+ try builder(connectionString, domainTypes)
+ with ex -> failwithf "An error occurred during initial type generation for %s: %O" name ex))
+ typeProviderForAccount
+ | Some (Error ex), _ -> failwithf "Unable to validate connection string (%O)" ex
+ | _, Error ex -> failwithf "Unable to parse blob schema file (%O)" ex
+
+ let createParam (name, defaultValue:'a, help) =
+ let providedParameter = ProvidedStaticParameter(name, typeof<'a>, defaultValue)
+ providedParameter.AddXmlDoc help
+ providedParameter
+
+ // Parameterising the provider
+ let parameters =
+ [ createParam("accountName", String.Empty, "The Storage Account name, or full connection string in the format 'DefaultEndpointsProtocol=protocol;AccountName=account;AccountKey=key;'.")
+ createParam("accountKey", String.Empty, "The Storage Account key. Ignored if the accountName argument is the full connection string.")
+ createParam("connectionStringName", String.Empty, "The Connection String key from the configuration file to use to retrieve the connection string. If set, accountName and accountKey are ignored.")
+ createParam("configFileName", "app.config", "The name of the configuration file to look for. Defaults to 'app.config'")
+ createParam("schemaSize", 10, "The maximum number of rows to read per table, from which to infer schema. Defaults to 10.")
+ createParam("humanize", false, "Whether to humanize table column names. Defaults to false.")
+ createParam("blobSchema", String.Empty, "Provide a path to a local file containing a fixed schema to eagerly use, instead of lazily generating the blob schema from a live storage account.")
+ createParam("tableSchema", String.Empty, "Provide a path to a local file containing a fixed schema to eagerly use, instead of lazily generating the table schema from a live storage account.")
+ createParam("autoRefresh", 0, "Optionally provide the number of seconds to wait before refreshing the schema. Defaults to 0 (never).") ]
+
+ let memoize func =
+ let cache = Dictionary()
+ fun argsAsString args ->
+ let exists, value = cache.TryGetValue argsAsString
+ if exists then value
+ else
+ let value = func argsAsString args
+ cache.Add(argsAsString, value)
+ value
+
+ do
+ azureAccountType.DefineStaticParameters(parameters, memoize buildTypes)
+ this.AddNamespace(namespaceName, [ azureAccountType ])
+ azureAccountType.AddXmlDoc("The entry type to connect to Azure Storage assets.")
+
+[]
+do ()
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider.Blob/FSharp.Azure.StorageTypeProvider.Blob.fsproj b/src/FSharp.Azure.StorageTypeProvider.Blob/FSharp.Azure.StorageTypeProvider.Blob.fsproj
new file mode 100644
index 0000000..b5308d6
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/FSharp.Azure.StorageTypeProvider.Blob.fsproj
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+ netstandard2.0
+ true
+
+
+
+
+ True
+
+
+
+ True
+ paket-files/ProvidedTypes.fsi
+
+
+ True
+ paket-files/ProvidedTypes.fs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/Blob/MimeTypes.fs b/src/FSharp.Azure.StorageTypeProvider.Blob/MimeTypes.fs
similarity index 100%
rename from src/FSharp.Azure.StorageTypeProvider/Blob/MimeTypes.fs
rename to src/FSharp.Azure.StorageTypeProvider.Blob/MimeTypes.fs
diff --git a/src/FSharp.Azure.StorageTypeProvider/Blob/ProvidedBlobTypes.fs b/src/FSharp.Azure.StorageTypeProvider.Blob/ProvidedBlobTypes.fs
similarity index 99%
rename from src/FSharp.Azure.StorageTypeProvider/Blob/ProvidedBlobTypes.fs
rename to src/FSharp.Azure.StorageTypeProvider.Blob/ProvidedBlobTypes.fs
index fa35984..9d291ec 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Blob/ProvidedBlobTypes.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/ProvidedBlobTypes.fs
@@ -1,8 +1,8 @@
namespace FSharp.Azure.StorageTypeProvider.Blob
open FSharp.Azure.StorageTypeProvider.Blob.BlobRepository
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Blob
+open Microsoft.Azure.Storage
+open Microsoft.Azure.Storage.Blob
open System
open System.IO
open System.Xml.Linq
diff --git a/src/FSharp.Azure.StorageTypeProvider/Blob/StaticSchema.fs b/src/FSharp.Azure.StorageTypeProvider.Blob/StaticSchema.fs
similarity index 98%
rename from src/FSharp.Azure.StorageTypeProvider/Blob/StaticSchema.fs
rename to src/FSharp.Azure.StorageTypeProvider.Blob/StaticSchema.fs
index 28d4cb3..dd1ba23 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Blob/StaticSchema.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/StaticSchema.fs
@@ -2,7 +2,7 @@
open BlobRepository
open FSharp.Azure.StorageTypeProvider.Configuration
-open Microsoft.WindowsAzure.Storage.Blob
+open Microsoft.Azure.Storage.Blob
open Newtonsoft.Json.Linq
open System.IO
diff --git a/src/FSharp.Azure.StorageTypeProvider/paket.references b/src/FSharp.Azure.StorageTypeProvider.Blob/paket.references
similarity index 75%
rename from src/FSharp.Azure.StorageTypeProvider/paket.references
rename to src/FSharp.Azure.StorageTypeProvider.Blob/paket.references
index 643e2a0..da7078b 100644
--- a/src/FSharp.Azure.StorageTypeProvider/paket.references
+++ b/src/FSharp.Azure.StorageTypeProvider.Blob/paket.references
@@ -1,8 +1,7 @@
-WindowsAzure.Storage
+Microsoft.Azure.Storage.Blob
FSharp.Core
System.Configuration.ConfigurationManager
System.Net.Http
File:ProvidedTypes.fsi
File:ProvidedTypes.fs
-FSharp.Compiler.Tools
Taskbuilder.fs
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/Configuration.fs b/src/FSharp.Azure.StorageTypeProvider.Common/Configuration.fs
similarity index 84%
rename from src/FSharp.Azure.StorageTypeProvider/Configuration.fs
rename to src/FSharp.Azure.StorageTypeProvider.Common/Configuration.fs
index af8f602..e5d5b63 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Configuration.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Common/Configuration.fs
@@ -1,9 +1,9 @@
-module internal FSharp.Azure.StorageTypeProvider.Configuration
+module FSharp.Azure.StorageTypeProvider.Configuration
open System.Collections.Generic
open System.Configuration
open System.IO
-open Microsoft.WindowsAzure.Storage
+open Microsoft.Azure.Storage
let private doesFileExist folder file =
let fullPath = Path.Combine(folder, file)
@@ -44,18 +44,19 @@ module ConnectionValidation =
let private memoize code =
let cache = Dictionary()
fun arg ->
- if not(cache.ContainsKey arg)
- then cache.[arg] <- code arg
- cache.[arg]
+ let exists, value = cache.TryGetValue arg
+ if exists then value
+ else
+ let value = code arg
+ cache.[arg] <- value
+ value
+
let private checkConnectionString connectionString =
try
CloudStorageAccount
.Parse(connectionString)
- .CreateCloudBlobClient()
- .GetContainerReference("abc")
- .ExistsAsync()
- |> Async.AwaitTask
- |> Async.RunSynchronously //throws an exception if attempted with an invalid connection string
+ //throws an exception if attempted with an invalid connection string
+ .GetSharedAccessSignature(new SharedAccessAccountPolicy())
|> ignore
Ok()
with | ex -> Error ex
diff --git a/src/FSharp.Azure.StorageTypeProvider.Common/FSharp.Azure.StorageTypeProvider.Common.fsproj b/src/FSharp.Azure.StorageTypeProvider.Common/FSharp.Azure.StorageTypeProvider.Common.fsproj
new file mode 100644
index 0000000..df6dd20
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Common/FSharp.Azure.StorageTypeProvider.Common.fsproj
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ netstandard2.0
+ true
+
+
+
+
+ True
+
+
+
+ True
+ paket-files/ProvidedTypes.fsi
+
+
+ True
+ paket-files/ProvidedTypes.fs
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider.Common/Properties/PublishProfiles/FolderProfile.pubxml b/src/FSharp.Azure.StorageTypeProvider.Common/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..54ccf6a
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Common/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ FileSystem
+ Release
+ Any CPU
+ netstandard2.0
+ bin\Debug\netstandard2.0\publish\
+
+
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/Shared.fs b/src/FSharp.Azure.StorageTypeProvider.Common/Shared.fs
similarity index 99%
rename from src/FSharp.Azure.StorageTypeProvider/Shared.fs
rename to src/FSharp.Azure.StorageTypeProvider.Common/Shared.fs
index 156bab7..8a2d7bf 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Shared.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Common/Shared.fs
@@ -76,7 +76,7 @@ module Json =
namespace FSharp.Azure.StorageTypeProvider
-module internal Async =
+module Async =
let segmentedAzureOperation getNextSegment =
let rec doRecursiveSegmenting (getNextSegment:_ -> Async<_ * _>) (output:_ ResizeArray) token = async {
match! getNextSegment token with
diff --git a/src/FSharp.Azure.StorageTypeProvider.Common/paket.references b/src/FSharp.Azure.StorageTypeProvider.Common/paket.references
new file mode 100644
index 0000000..8d419e2
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Common/paket.references
@@ -0,0 +1,7 @@
+Microsoft.Azure.Storage.Common
+FSharp.Core
+System.Configuration.ConfigurationManager
+System.Net.Http
+File:ProvidedTypes.fsi
+File:ProvidedTypes.fs
+Taskbuilder.fs
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider.Queue/FSharp.Azure.StorageTypeProvider.Queue.fsproj b/src/FSharp.Azure.StorageTypeProvider.Queue/FSharp.Azure.StorageTypeProvider.Queue.fsproj
new file mode 100644
index 0000000..1661af5
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Queue/FSharp.Azure.StorageTypeProvider.Queue.fsproj
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ netstandard2.0
+ true
+
+
+
+
+ True
+
+
+
+ True
+ paket-files/ProvidedTypes.fsi
+
+
+ True
+ paket-files/ProvidedTypes.fs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/Queue/ProvidedQueueTypes.fs b/src/FSharp.Azure.StorageTypeProvider.Queue/ProvidedQueueTypes.fs
similarity index 95%
rename from src/FSharp.Azure.StorageTypeProvider/Queue/ProvidedQueueTypes.fs
rename to src/FSharp.Azure.StorageTypeProvider.Queue/ProvidedQueueTypes.fs
index 0a00a5f..b16aba2 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Queue/ProvidedQueueTypes.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Queue/ProvidedQueueTypes.fs
@@ -1,7 +1,7 @@
namespace FSharp.Azure.StorageTypeProvider.Queue
open FSharp.Azure.StorageTypeProvider.Queue.QueueRepository
-open Microsoft.WindowsAzure.Storage.Queue
+open Microsoft.Azure.Storage.Queue
open System
/// The unique identifier for this Azure queue message.
@@ -115,15 +115,16 @@ type ProvidedQueue(defaultConnectionString, name) =
message |> updateMessage MessageUpdateFields.Visibility connectionString (Some newTimeout)
/// Updates the visibility and the string contents of an existing message. If no timeout is provided, the update is immediately visible.
- member __.UpdateMessage(messageId, contents:string, ?newTimeout, ?connectionString) =
+ /// Pass false to isBase64Encoded if you upgrade from 2.0
+ member __.UpdateMessage(messageId, contents:string, isBase64Encoded:bool, ?newTimeout, ?connectionString) =
let message = messageId |> Factory.toAzureQueueMessage
- message.SetMessageContent contents
+ message.SetMessageContent2(contents, isBase64Encoded)
message |> updateMessage (MessageUpdateFields.Visibility ||| MessageUpdateFields.Content) connectionString newTimeout
/// Updates the visibility and the binary contents of an existing message. If no timeout is provided, the update is immediately visible.
member __.UpdateMessage(messageId, contents:byte array, ?newTimeout, ?connectionString) =
let message = messageId |> Factory.toAzureQueueMessage
- message.SetMessageContent contents
+ message.SetMessageContent2 contents
message |> updateMessage (MessageUpdateFields.Visibility ||| MessageUpdateFields.Content) connectionString newTimeout
/// Clears the queue of all messages.
diff --git a/src/FSharp.Azure.StorageTypeProvider/Queue/QueueMemberFactory.fs b/src/FSharp.Azure.StorageTypeProvider.Queue/QueueMemberFactory.fs
similarity index 98%
rename from src/FSharp.Azure.StorageTypeProvider/Queue/QueueMemberFactory.fs
rename to src/FSharp.Azure.StorageTypeProvider.Queue/QueueMemberFactory.fs
index 924aa7a..8efdb03 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Queue/QueueMemberFactory.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Queue/QueueMemberFactory.fs
@@ -2,7 +2,7 @@
open FSharp.Azure.StorageTypeProvider.Queue
open FSharp.Azure.StorageTypeProvider.Queue.QueueRepository
-open Microsoft.WindowsAzure.Storage.Queue
+open Microsoft.Azure.Storage.Queue
open ProviderImplementation.ProvidedTypes
open System
@@ -46,7 +46,7 @@ let createQueueMemberType connectionString (domainType:ProvidedTypeDefinition) q
p)
queueName, queueType
-open Microsoft.WindowsAzure.Storage.RetryPolicies
+open Microsoft.Azure.Storage.RetryPolicies
let private doesQueueEndpointExists connectionString = async {
let client = getQueueClient connectionString
diff --git a/src/FSharp.Azure.StorageTypeProvider/Queue/QueueRepository.fs b/src/FSharp.Azure.StorageTypeProvider.Queue/QueueRepository.fs
similarity index 95%
rename from src/FSharp.Azure.StorageTypeProvider/Queue/QueueRepository.fs
rename to src/FSharp.Azure.StorageTypeProvider.Queue/QueueRepository.fs
index 259a114..58354d5 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Queue/QueueRepository.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Queue/QueueRepository.fs
@@ -1,8 +1,8 @@
module internal FSharp.Azure.StorageTypeProvider.Queue.QueueRepository
open FSharp.Azure.StorageTypeProvider
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Queue
+open Microsoft.Azure.Storage
+open Microsoft.Azure.Storage.Queue
open System
let internal getQueueClient connectionString = CloudStorageAccount.Parse(connectionString).CreateCloudQueueClient()
diff --git a/src/FSharp.Azure.StorageTypeProvider.Queue/QueueTypeProvider.fs b/src/FSharp.Azure.StorageTypeProvider.Queue/QueueTypeProvider.fs
new file mode 100644
index 0000000..2732617
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Queue/QueueTypeProvider.fs
@@ -0,0 +1,110 @@
+namespace ProviderImplementation
+
+open FSharp.Azure.StorageTypeProvider
+open FSharp.Azure.StorageTypeProvider.Queue
+open FSharp.Azure.StorageTypeProvider.Configuration
+open Microsoft.FSharp.Core.CompilerServices
+open ProviderImplementation.ProvidedTypes
+open System
+open System.Collections.Generic
+open System.Reflection
+
+[]
+/// [omit]
+type public QueueTypeProvider(config : TypeProviderConfig) as this =
+ inherit TypeProviderForNamespaces(config)
+
+ let namespaceName = "FSharp.Azure.StorageTypeProvider.Queue"
+ let thisAssembly = typeof.Assembly
+ let azureAccountType = ProvidedTypeDefinition(thisAssembly, namespaceName, "QueueTypeProvider", baseType = Some typeof)
+
+ let buildConnectionString (args : obj []) =
+ let (|ConnectionString|TwoPart|DevelopmentStorage|) (args:obj []) =
+ let getArg i = args.[i] :?> string
+ let accountNameOrConnectionString, accountKey = getArg 0, getArg 1
+ let configFileKey, configFileName = getArg 2, getArg 3
+
+ match accountNameOrConnectionString, accountKey, configFileKey with
+ | _ when (not << String.IsNullOrWhiteSpace) configFileKey ->
+ let connectionFromConfig = getConnectionString(configFileKey, config.ResolutionFolder, configFileName)
+ ConnectionString connectionFromConfig
+ | _ when accountNameOrConnectionString.StartsWith "DefaultEndpointsProtocol" -> ConnectionString accountNameOrConnectionString
+ | _ when [ accountNameOrConnectionString; accountKey ] |> List.exists String.IsNullOrWhiteSpace -> DevelopmentStorage
+ | _ -> TwoPart (accountNameOrConnectionString, accountKey)
+
+ match args with
+ | DevelopmentStorage -> "UseDevelopmentStorage=true"
+ | ConnectionString conn -> conn
+ | TwoPart (name, key) -> sprintf "DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s;" name key
+
+ let startLiveRefresh : obj -> _ =
+ function
+ | :? int as seconds when seconds >= 1 ->
+ let seconds = seconds * 1000
+ async {
+ while true do
+ do! Async.Sleep seconds
+ this.Invalidate()
+ } |> Async.Start
+ | _ -> ()
+
+ let buildTypes (typeName : string) (args : obj []) =
+ // Create the top level property
+ let typeProviderForAccount = ProvidedTypeDefinition(thisAssembly, namespaceName, typeName, baseType = Some typeof)
+ typeProviderForAccount.AddMember(ProvidedConstructor([], fun _ -> <@@ null @@>))
+
+ startLiveRefresh args.[8]
+
+ let connectionString = buildConnectionString args
+ let staticBlobSchema = args.[6] :?> string |> Option.ofString
+ let staticTableSchema = args.[7] :?> string |> Option.ofString
+ let connectionStringValidation =
+ match staticBlobSchema, staticTableSchema with
+ | Some _, _ | _, Some _ -> None
+ | _ -> Some (validateConnectionString connectionString)
+
+ match connectionStringValidation with
+ | Some (Ok ())
+ | None ->
+ let domainTypes = ProvidedTypeDefinition("Domain", Some typeof)
+ typeProviderForAccount.AddMember(domainTypes)
+ // Now create child members e.g. containers, tables etc.
+ typeProviderForAccount.AddMembers
+ ([ (QueueMemberFactory.getQueueStorageMembers, "queues") ]
+ |> List.choose (fun (builder, name) ->
+ try builder(connectionString, domainTypes)
+ with ex -> failwithf "An error occurred during initial type generation for %s: %O" name ex))
+ typeProviderForAccount
+ | Some (Error ex) -> failwithf "Unable to validate connection string (%O)" ex
+
+ let createParam (name, defaultValue:'a, help) =
+ let providedParameter = ProvidedStaticParameter(name, typeof<'a>, defaultValue)
+ providedParameter.AddXmlDoc help
+ providedParameter
+
+ // Parameterising the provider
+ let parameters =
+ [ createParam("accountName", String.Empty, "The Storage Account name, or full connection string in the format 'DefaultEndpointsProtocol=protocol;AccountName=account;AccountKey=key;'.")
+ createParam("accountKey", String.Empty, "The Storage Account key. Ignored if the accountName argument is the full connection string.")
+ createParam("connectionStringName", String.Empty, "The Connection String key from the configuration file to use to retrieve the connection string. If set, accountName and accountKey are ignored.")
+ createParam("configFileName", "app.config", "The name of the configuration file to look for. Defaults to 'app.config'")
+ createParam("schemaSize", 10, "The maximum number of rows to read per table, from which to infer schema. Defaults to 10.")
+ createParam("humanize", false, "Whether to humanize table column names. Defaults to false.")
+ createParam("blobSchema", String.Empty, "Provide a path to a local file containing a fixed schema to eagerly use, instead of lazily generating the blob schema from a live storage account.")
+ createParam("tableSchema", String.Empty, "Provide a path to a local file containing a fixed schema to eagerly use, instead of lazily generating the table schema from a live storage account.")
+ createParam("autoRefresh", 0, "Optionally provide the number of seconds to wait before refreshing the schema. Defaults to 0 (never).") ]
+
+ let memoize func =
+ let cache = Dictionary()
+ fun argsAsString args ->
+ if not (cache.ContainsKey argsAsString) then
+ cache.Add(argsAsString, func argsAsString args)
+ cache.[argsAsString]
+
+ do
+ azureAccountType.DefineStaticParameters(parameters, memoize buildTypes)
+ this.AddNamespace(namespaceName, [ azureAccountType ])
+ azureAccountType.AddXmlDoc("The entry type to connect to Azure Storage assets.")
+
+[]
+do ()
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider.Queue/paket.references b/src/FSharp.Azure.StorageTypeProvider.Queue/paket.references
new file mode 100644
index 0000000..a46acf9
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Queue/paket.references
@@ -0,0 +1,7 @@
+Microsoft.Azure.Storage.Queue
+FSharp.Core
+System.Configuration.ConfigurationManager
+System.Net.Http
+File:ProvidedTypes.fsi
+File:ProvidedTypes.fs
+Taskbuilder.fs
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider.Table/FSharp.Azure.StorageTypeProvider.Table.fsproj b/src/FSharp.Azure.StorageTypeProvider.Table/FSharp.Azure.StorageTypeProvider.Table.fsproj
new file mode 100644
index 0000000..0ee2e55
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/FSharp.Azure.StorageTypeProvider.Table.fsproj
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ netstandard2.0
+ true
+
+
+
+
+ True
+
+
+
+ True
+ paket-files/ProvidedTypes.fsi
+
+
+ True
+ paket-files/ProvidedTypes.fs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/ProvidedTableTypes.fs b/src/FSharp.Azure.StorageTypeProvider.Table/ProvidedTableTypes.fs
similarity index 98%
rename from src/FSharp.Azure.StorageTypeProvider/Table/ProvidedTableTypes.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/ProvidedTableTypes.fs
index 56d2f45..5a26171 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/ProvidedTableTypes.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/ProvidedTableTypes.fs
@@ -2,8 +2,8 @@
open FSharp.Azure.StorageTypeProvider
open FSharp.Azure.StorageTypeProvider.Table.TableRepository
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Cosmos
+open Microsoft.Azure.Cosmos.Table
open System
open System.Reflection
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/SharedTableTypes.fs b/src/FSharp.Azure.StorageTypeProvider.Table/SharedTableTypes.fs
similarity index 97%
rename from src/FSharp.Azure.StorageTypeProvider/Table/SharedTableTypes.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/SharedTableTypes.fs
index 71d1db7..e447c35 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/SharedTableTypes.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/SharedTableTypes.fs
@@ -1,6 +1,6 @@
namespace FSharp.Azure.StorageTypeProvider.Table
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Cosmos.Table
open System
/// The different types of insertion mechanism to use.
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/StaticSchema.fs b/src/FSharp.Azure.StorageTypeProvider.Table/StaticSchema.fs
similarity index 97%
rename from src/FSharp.Azure.StorageTypeProvider/Table/StaticSchema.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/StaticSchema.fs
index 870ef48..c3a33e4 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/StaticSchema.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/StaticSchema.fs
@@ -5,7 +5,7 @@ open Newtonsoft.Json.Linq
open System.IO
module internal Parsed =
- open Microsoft.WindowsAzure.Storage.Table
+ open Microsoft.Azure.Cosmos.Table
let parseEdmType (value:string) =
match value.ToLower() with
| "binary" -> EdmType.Binary
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/TableEntityMemberFactory.fs b/src/FSharp.Azure.StorageTypeProvider.Table/TableEntityMemberFactory.fs
similarity index 99%
rename from src/FSharp.Azure.StorageTypeProvider/Table/TableEntityMemberFactory.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/TableEntityMemberFactory.fs
index a5acc8b..24ce621 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/TableEntityMemberFactory.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/TableEntityMemberFactory.fs
@@ -3,7 +3,7 @@ module internal FSharp.Azure.StorageTypeProvider.Table.TableEntityMemberFactory
open FSharp.Azure.StorageTypeProvider.Table.TableRepository
open Microsoft.FSharp.Quotations
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Cosmos.Table
open ProviderImplementation.ProvidedTypes
open System
open System.Text
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/TableMemberFactory.fs b/src/FSharp.Azure.StorageTypeProvider.Table/TableMemberFactory.fs
similarity index 98%
rename from src/FSharp.Azure.StorageTypeProvider/Table/TableMemberFactory.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/TableMemberFactory.fs
index 2d65c4f..018fef5 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/TableMemberFactory.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/TableMemberFactory.fs
@@ -2,8 +2,8 @@
open FSharp.Azure.StorageTypeProvider.Table
open FSharp.Azure.StorageTypeProvider.Table.TableRepository
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Storage
+open Microsoft.Azure.Cosmos.Table
open ProviderImplementation.ProvidedTypes
let (|StorageExn|_|) (ex:exn) =
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/TableQueryBuilder.fs b/src/FSharp.Azure.StorageTypeProvider.Table/TableQueryBuilder.fs
similarity index 99%
rename from src/FSharp.Azure.StorageTypeProvider/Table/TableQueryBuilder.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/TableQueryBuilder.fs
index 10fb728..ddb6d96 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/TableQueryBuilder.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/TableQueryBuilder.fs
@@ -3,7 +3,7 @@
open FSharp.Azure.StorageTypeProvider.Table.TableRepository
open Microsoft.FSharp.Core.CompilerServices
open Microsoft.FSharp.Quotations
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Cosmos.Table
open ProviderImplementation.ProvidedTypes
open System
open System.Reflection
diff --git a/src/FSharp.Azure.StorageTypeProvider/Table/TableRepository.fs b/src/FSharp.Azure.StorageTypeProvider.Table/TableRepository.fs
similarity index 99%
rename from src/FSharp.Azure.StorageTypeProvider/Table/TableRepository.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/TableRepository.fs
index de8dfd1..287c76a 100644
--- a/src/FSharp.Azure.StorageTypeProvider/Table/TableRepository.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/TableRepository.fs
@@ -4,8 +4,8 @@ module FSharp.Azure.StorageTypeProvider.Table.TableRepository
open FSharp.Azure.StorageTypeProvider.Table
open FSharp.Azure.StorageTypeProvider
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Table
+open Microsoft.Azure.Storage
+open Microsoft.Azure.Cosmos.Table
open System
/// Suggests batch sizes based on a given entity type and published EDM property type sizes (source: https://msdn.microsoft.com/en-us/library/dd179338.aspx)
diff --git a/src/FSharp.Azure.StorageTypeProvider/AzureTypeProvider.fs b/src/FSharp.Azure.StorageTypeProvider.Table/TableTypeProvider.fs
similarity index 83%
rename from src/FSharp.Azure.StorageTypeProvider/AzureTypeProvider.fs
rename to src/FSharp.Azure.StorageTypeProvider.Table/TableTypeProvider.fs
index 746fd75..702910b 100644
--- a/src/FSharp.Azure.StorageTypeProvider/AzureTypeProvider.fs
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/TableTypeProvider.fs
@@ -1,8 +1,6 @@
namespace ProviderImplementation
open FSharp.Azure.StorageTypeProvider
-open FSharp.Azure.StorageTypeProvider.Blob
-open FSharp.Azure.StorageTypeProvider.Queue
open FSharp.Azure.StorageTypeProvider.Table
open FSharp.Azure.StorageTypeProvider.Configuration
open Microsoft.FSharp.Core.CompilerServices
@@ -13,12 +11,12 @@ open System.Reflection
[]
/// [omit]
-type public AzureTypeProvider(config : TypeProviderConfig) as this =
+type public TableTypeProvider(config : TypeProviderConfig) as this =
inherit TypeProviderForNamespaces(config)
- let namespaceName = "FSharp.Azure.StorageTypeProvider"
- let thisAssembly = Assembly.GetExecutingAssembly()
- let azureAccountType = ProvidedTypeDefinition(thisAssembly, namespaceName, "AzureTypeProvider", baseType = Some typeof)
+ let namespaceName = "FSharp.Azure.StorageTypeProvider.Table"
+ let thisAssembly = typeof.Assembly
+ let azureAccountType = ProvidedTypeDefinition(thisAssembly, namespaceName, "TableTypeProvider", baseType = Some typeof)
let buildConnectionString (args : obj []) =
let (|ConnectionString|TwoPart|DevelopmentStorage|) (args:obj []) =
@@ -65,12 +63,11 @@ type public AzureTypeProvider(config : TypeProviderConfig) as this =
| Some _, _ | _, Some _ -> None
| _ -> Some (validateConnectionString connectionString)
- let parsedBlobSchema = Blob.StaticSchema.createSchema config.ResolutionFolder staticBlobSchema
let parsedTableSchema = Table.StaticSchema.createSchema config.ResolutionFolder staticTableSchema
- match connectionStringValidation, parsedBlobSchema, parsedTableSchema with
- | Some (Ok ()), Ok blobSchema, Ok tableSchema
- | None, Ok blobSchema, Ok tableSchema ->
+ match connectionStringValidation, parsedTableSchema with
+ | Some (Ok ()), Ok tableSchema
+ | None, Ok tableSchema ->
let domainTypes = ProvidedTypeDefinition("Domain", Some typeof)
typeProviderForAccount.AddMember(domainTypes)
@@ -79,16 +76,13 @@ type public AzureTypeProvider(config : TypeProviderConfig) as this =
// Now create child members e.g. containers, tables etc.
typeProviderForAccount.AddMembers
- ([ (BlobMemberFactory.getBlobStorageMembers blobSchema, "blobs")
- (TableMemberFactory.getTableStorageMembers tableSchema schemaInferenceRowCount humanizeColumns, "tables")
- (QueueMemberFactory.getQueueStorageMembers, "queues") ]
+ ([ (TableMemberFactory.getTableStorageMembers tableSchema schemaInferenceRowCount humanizeColumns, "tables") ]
|> List.choose (fun (builder, name) ->
try builder(connectionString, domainTypes)
with ex -> failwithf "An error occurred during initial type generation for %s: %O" name ex))
typeProviderForAccount
- | Some (Error ex), _, _ -> failwithf "Unable to validate connection string (%O)" ex
- | _, Error ex, _ -> failwithf "Unable to parse blob schema file (%O)" ex
- | _, _, Error ex -> failwithf "Unable to parse table schema file (%O)" ex
+ | Some (Error ex), _ -> failwithf "Unable to validate connection string (%O)" ex
+ | _, Error ex -> failwithf "Unable to parse table schema file (%O)" ex
let createParam (name, defaultValue:'a, help) =
let providedParameter = ProvidedStaticParameter(name, typeof<'a>, defaultValue)
diff --git a/src/FSharp.Azure.StorageTypeProvider.Table/paket.references b/src/FSharp.Azure.StorageTypeProvider.Table/paket.references
new file mode 100644
index 0000000..458f206
--- /dev/null
+++ b/src/FSharp.Azure.StorageTypeProvider.Table/paket.references
@@ -0,0 +1,7 @@
+Microsoft.Azure.Cosmos.Table
+FSharp.Core
+System.Configuration.ConfigurationManager
+System.Net.Http
+File:ProvidedTypes.fsi
+File:ProvidedTypes.fs
+Taskbuilder.fs
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/AssemblyInfo.fs b/src/FSharp.Azure.StorageTypeProvider/AssemblyInfo.fs
deleted file mode 100644
index 406d4d3..0000000
--- a/src/FSharp.Azure.StorageTypeProvider/AssemblyInfo.fs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Auto-Generated by FAKE; do not edit
-namespace System
-open System.Reflection
-
-[]
-[]
-[]
-[]
-[]
-do ()
-
-module internal AssemblyVersionInformation =
- let [] AssemblyTitle = "FSharp.Azure.StorageTypeProvider"
- let [] AssemblyProduct = "FSharp.Azure.StorageTypeProvider"
- let [] AssemblyDescription = "Allows easy access to Azure Storage assets through F# scripts."
- let [] AssemblyVersion = "2.0.1"
- let [] AssemblyFileVersion = "2.0.1"
diff --git a/src/FSharp.Azure.StorageTypeProvider/Blob/BlobRepositoryAsync.fs b/src/FSharp.Azure.StorageTypeProvider/Blob/BlobRepositoryAsync.fs
deleted file mode 100644
index 4d32826..0000000
--- a/src/FSharp.Azure.StorageTypeProvider/Blob/BlobRepositoryAsync.fs
+++ /dev/null
@@ -1,123 +0,0 @@
-///Contains reusable helper functions for accessing blobs
-module internal FSharp.Azure.StorageTypeProvider.Blob.BlobRepositoryAsync
-
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Blob
-open System
-open System.IO
-open FSharp.Control.Tasks.ContextInsensitive
-open System.Threading.Tasks
-
-type ContainerItem =
- | Folder of path : string * name : string * contents : ContainerItem array Lazy
- | Blob of path : string * name : string * blobType : BlobType * length : int64 option
-
-type LightweightContainer =
- { Name : string
- Contents : ContainerItem seq Lazy }
-
-let getBlobClient connection = CloudStorageAccount.Parse(connection).CreateCloudBlobClient()
-let getContainerRef(connection, container) = (getBlobClient connection).GetContainerReference(container)
-let getBlockBlobRef (connection, container, file) = getContainerRef(connection, container).GetBlockBlobReference(file)
-let getPageBlobRef (connection, container, file) = getContainerRef(connection, container).GetPageBlobReference(file)
-
-let private getItemName (item : string) (parent : CloudBlobDirectory) =
- item,
- match parent with
- | null -> item
- | parent -> item.Substring(parent.Prefix.Length)
-
-let rec private getContainerStructure wildcard (container : CloudBlobContainer) = task {
- let rec getResults token = task {
- let! blobsSeqmented = container.ListBlobsSegmentedAsync(prefix = wildcard, currentToken = token)
- let token = blobsSeqmented.ContinuationToken
- let result = blobsSeqmented.Results |> Seq.toList
- if isNull token then
- return result
- else
- let! others = getResults token
- return result @ others }
- let! results = getResults null
- let containerStructur =
- results
- |> Seq.distinctBy (fun b -> b.Uri.AbsoluteUri)
- |> Seq.choose (function
- | :? CloudBlobDirectory as directory ->
- let path, name = getItemName directory.Prefix directory.Parent
- Some(Folder(path, name, lazy(container |> getContainerStructure directory.Prefix)))
- | :? ICloudBlob as blob ->
- let path, name = getItemName blob.Name blob.Parent
- Some(Blob(path, name, blob.BlobType, Some blob.Properties.Length))
- | _ -> None)
- |> Seq.toArray
- return containerStructur
-}
-let listBlobs incSubDirs (container:CloudBlobContainer) prefix =
- container.ListBlobsSegmentedAsync(prefix = prefix, useFlatBlobListing = incSubDirs, blobListingDetails = BlobListingDetails.All, maxResults = Nullable(), currentToken = null, options = BlobRequestOptions(), operationContext = null).Result
- |> fun s -> s.Results
- |> Seq.choose(function
- | :? ICloudBlob as blob ->
- let path, name = getItemName blob.Name blob.Parent
- Some(Blob(path, name, blob.Properties.BlobType, Some blob.Properties.Length))
- | _ -> None) //can safely ignore folder types as we have a flat structure if & only if we want to include items from sub directories
-
-// let getBlobStorageAccountManifest connection = task {
-// let rec getResults token = task {
-// let! containerResultSeqment = (getBlobClient connection).ListContainersSegmentedAsync(currentToken = token)
-// let token = containerResultSeqment.ContinuationToken
-// let result = containerResultSeqment.Results |> Seq.toList
-// if isNull token then
-// return result
-// else
-// let! others = getResults token
-// return result @ others }
-// let! results = getResults null
-// let blobStorageAccountManifest = task {
-// let blobContainerList = results |> Seq.toList
-// let manifestList =
-// blobContainerList
-// |> List.map (fun blobContainer ->
-// let! content = getContainerStructure null blobContainer
-// { Name = blobContainer.Name
-// Contents =
-// lazy
-// content |> Seq.cache})
-// return manifestList
-// }
-// let! results = blobStorageAccountManifest
-// }
-
-let getBlobStorageAccountManifest connection =
- (getBlobClient connection).ListContainersSegmentedAsync(null).Result
- |> fun s -> s.Results
- |> Seq.toList
- |> List.map (fun container ->
- { Name = container.Name
- Contents =
- lazy
- let! stuctur =
- container
- |> getContainerStructure null
- stuctur
- |> Seq.cache })
-let downloadFolder (connectionDetails, path) =
- let downloadFile (blobRef:ICloudBlob) destination =
- let targetDirectory = Path.GetDirectoryName(destination)
- if not (Directory.Exists targetDirectory) then Directory.CreateDirectory targetDirectory |> ignore
- blobRef.DownloadToFileAsync(destination, FileMode.Create) |> Async.AwaitTask
-
- let connection, container, folderPath = connectionDetails
- let containerRef = (getBlobClient connection).GetContainerReference(container)
- containerRef.ListBlobsSegmentedAsync(prefix = folderPath, useFlatBlobListing = true, blobListingDetails = BlobListingDetails.All, maxResults = Nullable(), currentToken = null, options = BlobRequestOptions(), operationContext = null).Result
- |> fun s -> s.Results
- |> Seq.choose (function
- | :? ICloudBlob as b -> Some b
- | _ -> None)
- |> Seq.map (fun blob ->
- let targetName =
- match folderPath with
- | folderPath when String.IsNullOrEmpty folderPath -> blob.Name
- | _ -> blob.Name.Replace(folderPath, String.Empty)
- downloadFile blob (Path.Combine(path, targetName)))
- |> Async.Parallel
- |> Async.Ignore
\ No newline at end of file
diff --git a/src/FSharp.Azure.StorageTypeProvider/FSharp.Azure.StorageTypeProvider.fsproj b/src/FSharp.Azure.StorageTypeProvider/FSharp.Azure.StorageTypeProvider.fsproj
deleted file mode 100644
index 1c55915..0000000
--- a/src/FSharp.Azure.StorageTypeProvider/FSharp.Azure.StorageTypeProvider.fsproj
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
- FSharp.Azure.StorageTypeProvider
- FSharp.Azure.StorageTypeProvider
- FSharp.Azure.StorageTypeProvider
- netstandard2.0
- true
- ..\..\bin\
- ..\..\bin\FSharp.Azure.StorageTypeProvider.XML
- true
- false
-
-
-
-
- True
- paket-files/ProvidedTypes.fsi
-
-
- True
- paket-files/ProvidedTypes.fs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/tests/IntegrationTests/BlobUnitTests.fs b/tests/IntegrationTests/BlobUnitTests.fs
index f89d042..b38b61d 100644
--- a/tests/IntegrationTests/BlobUnitTests.fs
+++ b/tests/IntegrationTests/BlobUnitTests.fs
@@ -3,14 +3,14 @@
open Expecto
open FSharp.Azure.StorageTypeProvider
open FSharp.Azure.StorageTypeProvider.Blob
-open Microsoft.WindowsAzure.Storage.Blob
+open Microsoft.Azure.Storage.Blob
open System
open System.Linq
open System.IO
open FSharp.Control.Tasks.ContextInsensitive
-type Local = AzureTypeProvider<"UseDevelopmentStorage=true", "">
-type BlobSchema = AzureTypeProvider
+type Local = BlobTypeProvider<"UseDevelopmentStorage=true", "">
+type BlobSchema = BlobTypeProvider
let container = Local.Containers.samples
diff --git a/tests/IntegrationTests/IntegrationTests.fsproj b/tests/IntegrationTests/IntegrationTests.fsproj
index 26d9260..d0c2852 100644
--- a/tests/IntegrationTests/IntegrationTests.fsproj
+++ b/tests/IntegrationTests/IntegrationTests.fsproj
@@ -24,8 +24,17 @@
-
- ..\..\bin\netstandard2.0\publish\FSharp.Azure.StorageTypeProvider.dll
+
+ ..\..\src\FSharp.Azure.StorageTypeProvider.Blob\bin\Debug\netstandard2.0\FSharp.Azure.StorageTypeProvider.Blob.dll
+
+
+ ..\..\src\FSharp.Azure.StorageTypeProvider.Common\bin\Debug\netstandard2.0\FSharp.Azure.StorageTypeProvider.Common.dll
+
+
+ ..\..\src\FSharp.Azure.StorageTypeProvider.Queue\bin\Debug\netstandard2.0\FSharp.Azure.StorageTypeProvider.Queue.dll
+
+
+ ..\..\src\FSharp.Azure.StorageTypeProvider.Table\bin\Debug\netstandard2.0\FSharp.Azure.StorageTypeProvider.Table.dll
diff --git a/tests/IntegrationTests/QueueHelpers.fs b/tests/IntegrationTests/QueueHelpers.fs
index d3820c7..c6f4c76 100644
--- a/tests/IntegrationTests/QueueHelpers.fs
+++ b/tests/IntegrationTests/QueueHelpers.fs
@@ -1,7 +1,7 @@
module FSharp.Azure.StorageTypeProvider.QueueHelpers
-open Microsoft.WindowsAzure.Storage
-open Microsoft.WindowsAzure.Storage.Queue
+open Microsoft.Azure.Storage
+open Microsoft.Azure.Storage.Queue
let private queueClient = CloudStorageAccount.DevelopmentStorageAccount.CreateCloudQueueClient()
diff --git a/tests/IntegrationTests/paket.references b/tests/IntegrationTests/paket.references
index 738757b..ecb3267 100644
--- a/tests/IntegrationTests/paket.references
+++ b/tests/IntegrationTests/paket.references
@@ -1,7 +1,9 @@
Unquote
-WindowsAzure.Storage
+Microsoft.Azure.Storage.Common
+Microsoft.Azure.Storage.Blob
+Microsoft.Azure.Storage.Queue
+Microsoft.Azure.Cosmos.Table
Expecto
-FSharp.Compiler.Tools
Newtonsoft.Json
Microsoft.NET.Test.Sdk
Taskbuilder.fs
\ No newline at end of file