diff --git a/.editorconfig b/.editorconfig index 06e694cd9..cbe4b75a1 100644 --- a/.editorconfig +++ b/.editorconfig @@ -9,6 +9,9 @@ charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true +[*.fsproj] +indent_size = 2 + [*.md] trim_trailing_whitespace = false diff --git a/FSharp.Data.sln b/FSharp.Data.sln index f988e5485..8c0cb07c6 100755 --- a/FSharp.Data.sln +++ b/FSharp.Data.sln @@ -92,6 +92,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tutorials", "tutorials", "{ docs\tutorials\JsonToXml.fsx = docs\tutorials\JsonToXml.fsx EndProjectSection EndProject +Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FSharp.Data.Runtime.Utilities", "src\FSharp.Data.Runtime.Utilities\FSharp.Data.Runtime.Utilities.fsproj", "{D04AFA70-4A59-4E1C-AC41-BA0EA70140FF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -150,6 +152,10 @@ Global {A69D007B-EAF0-4866-A8B4-A2EDF2614E56}.Debug|Any CPU.Build.0 = Debug|Any CPU {A69D007B-EAF0-4866-A8B4-A2EDF2614E56}.Release|Any CPU.ActiveCfg = Release|Any CPU {A69D007B-EAF0-4866-A8B4-A2EDF2614E56}.Release|Any CPU.Build.0 = Release|Any CPU + {D04AFA70-4A59-4E1C-AC41-BA0EA70140FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D04AFA70-4A59-4E1C-AC41-BA0EA70140FF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D04AFA70-4A59-4E1C-AC41-BA0EA70140FF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D04AFA70-4A59-4E1C-AC41-BA0EA70140FF}.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 b59d24043..a613ecba4 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,6 +1,9 @@ ### 6.0.1-beta002 - Jan 6 2023 * Change the namespace of the `InferenceMode` enum from `FSharp.Data.Runtime.StructuralInference` to `FSharp.Data`. +* Move common runtime utilities out of `FSharp.Data.Http` and into a new `FSharp.Data.Runtime.Utilities` assembly. +* Add `aria-label` to the list of html attributes used to infer names of types provided by the HtmlProvider. +* Enable TLS 1.2 when requesting http(s) samples from the type providers. ### 6.0.1-beta001 - Aug 18 2022 diff --git a/build.fsx b/build.fsx index 46d0a3f5f..fec931a5d 100644 --- a/build.fsx +++ b/build.fsx @@ -38,7 +38,7 @@ let description = """ The FSharp.Data packages contain type providers and utilities to access common data formats (CSV, HTML, JSON and XML in your F# applications and scripts. - + * FSharp.Data -- includes everything * FSharp.Data.Http -- http types/helpers * FSharp.Data.Csv.Core -- csv types/helpers diff --git a/docs/library/CsvFile.fsx b/docs/library/CsvFile.fsx index 70bc22bf1..c483148cb 100644 --- a/docs/library/CsvFile.fsx +++ b/docs/library/CsvFile.fsx @@ -6,7 +6,7 @@ index: 2 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" (*** condition: fsx ***) diff --git a/docs/library/CsvProvider.fsx b/docs/library/CsvProvider.fsx index d62078e90..79d14ee99 100644 --- a/docs/library/CsvProvider.fsx +++ b/docs/library/CsvProvider.fsx @@ -6,7 +6,7 @@ index: 1 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" (*** condition: fsx ***) diff --git a/docs/library/HtmlCssSelectors.fsx b/docs/library/HtmlCssSelectors.fsx index a93bb1450..7a2893d55 100644 --- a/docs/library/HtmlCssSelectors.fsx +++ b/docs/library/HtmlCssSelectors.fsx @@ -6,7 +6,7 @@ index: 4 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Html.Core.dll" (*** condition: fsx ***) diff --git a/docs/library/HtmlParser.fsx b/docs/library/HtmlParser.fsx index 78668932a..41b75fe9b 100644 --- a/docs/library/HtmlParser.fsx +++ b/docs/library/HtmlParser.fsx @@ -6,7 +6,7 @@ index: 3 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Html.Core.dll" (*** condition: fsx ***) diff --git a/docs/library/HtmlProvider.fsx b/docs/library/HtmlProvider.fsx index 616a104c5..6ff942791 100644 --- a/docs/library/HtmlProvider.fsx +++ b/docs/library/HtmlProvider.fsx @@ -6,7 +6,7 @@ index: 2 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Html.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" @@ -105,7 +105,7 @@ Note that we're using the live URL as the sample, so we can just use the default type NugetStats = HtmlProvider<"https://www.nuget.org/packages/FSharp.Data"> // load the live package stats for FSharp.Data -let rawStats = NugetStats().Tables.Table4 +let rawStats = NugetStats().Tables.``Version History of FSharp.Data`` // helper function to analyze version numbers from nuget let getMinorVersion (v: string) = diff --git a/docs/library/JsonProvider.fsx b/docs/library/JsonProvider.fsx index a49a3aa9e..b2ec3836c 100644 --- a/docs/library/JsonProvider.fsx +++ b/docs/library/JsonProvider.fsx @@ -7,6 +7,7 @@ index: 3 *) (*** condition: prepare ***) #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Json.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" (*** condition: fsx ***) diff --git a/docs/library/JsonValue.fsx b/docs/library/JsonValue.fsx index 7d6092286..5185b6c39 100644 --- a/docs/library/JsonValue.fsx +++ b/docs/library/JsonValue.fsx @@ -7,6 +7,7 @@ index: 5 *) (*** condition: prepare ***) #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Json.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" (*** condition: fsx ***) diff --git a/docs/library/WorldBank.fsx b/docs/library/WorldBank.fsx index 74eb1736c..992b9f6c9 100644 --- a/docs/library/WorldBank.fsx +++ b/docs/library/WorldBank.fsx @@ -6,7 +6,7 @@ index: 5 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.WorldBank.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" (*** condition: fsx ***) diff --git a/docs/library/XmlProvider.fsx b/docs/library/XmlProvider.fsx index a0f24d825..cc4daac1c 100644 --- a/docs/library/XmlProvider.fsx +++ b/docs/library/XmlProvider.fsx @@ -6,7 +6,7 @@ index: 4 --- *) (*** condition: prepare ***) -#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Xml.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.dll" @@ -408,11 +408,11 @@ RSS feed. As discussed earlier, we can use relative paths or web addresses when the type provider: *) -type Rss = XmlProvider<"http://tomasp.net/rss.xml"> +type Rss = XmlProvider<"https://tomasp.net/rss.xml"> (** This code builds a type `Rss` that represents RSS feeds (with the features that are used -on `http://tomasp.net`). The type `Rss` provides static methods `Parse`, `Load` and `AsyncLoad` +on `https://tomasp.net`). The type `Rss` provides static methods `Parse`, `Load` and `AsyncLoad` to construct it - here, we just want to reuse the same URI of the schema, so we use the `GetSample` static method: *) diff --git a/docs/tutorials/JsonAnonymizer.fsx b/docs/tutorials/JsonAnonymizer.fsx index f7e1096b2..ce2bc558a 100644 --- a/docs/tutorials/JsonAnonymizer.fsx +++ b/docs/tutorials/JsonAnonymizer.fsx @@ -7,6 +7,7 @@ index: 1 *) (*** condition: prepare ***) #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Json.Core.dll" (*** condition: fsx ***) #if FSX diff --git a/docs/tutorials/JsonToXml.fsx b/docs/tutorials/JsonToXml.fsx index 88e55b78d..3fca72e1a 100644 --- a/docs/tutorials/JsonToXml.fsx +++ b/docs/tutorials/JsonToXml.fsx @@ -7,6 +7,7 @@ index: 2 *) (*** condition: prepare ***) #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Http.dll" +#r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Runtime.Utilities.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Csv.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Json.Core.dll" #r "../../src/FSharp.Data/bin/Release/netstandard2.0/FSharp.Data.Xml.Core.dll" diff --git a/src/AssemblyInfo.Runtime.Utilities.fs b/src/AssemblyInfo.Runtime.Utilities.fs new file mode 100644 index 000000000..be9b7f842 --- /dev/null +++ b/src/AssemblyInfo.Runtime.Utilities.fs @@ -0,0 +1,17 @@ +// Auto-Generated by FAKE; do not edit +namespace System +open System.Reflection + +[] +[] +[] +[] +[] +do () + +module internal AssemblyVersionInformation = + let [] AssemblyTitle = "FSharp.Data.Runtime.Utilities" + let [] AssemblyProduct = "FSharp.Data" + let [] AssemblyDescription = "Library of F# type providers and data access tools" + let [] AssemblyVersion = "6.0.1.0" + let [] AssemblyFileVersion = "6.0.1.0" diff --git a/src/Csv/CsvExtensions.fs b/src/FSharp.Data.Csv.Core/CsvExtensions.fs similarity index 100% rename from src/Csv/CsvExtensions.fs rename to src/FSharp.Data.Csv.Core/CsvExtensions.fs diff --git a/src/Csv/CsvFile.fs b/src/FSharp.Data.Csv.Core/CsvFile.fs similarity index 100% rename from src/Csv/CsvFile.fs rename to src/FSharp.Data.Csv.Core/CsvFile.fs diff --git a/src/Csv/CsvInference.fs b/src/FSharp.Data.Csv.Core/CsvInference.fs similarity index 100% rename from src/Csv/CsvInference.fs rename to src/FSharp.Data.Csv.Core/CsvInference.fs diff --git a/src/Csv/CsvRuntime.fs b/src/FSharp.Data.Csv.Core/CsvRuntime.fs similarity index 100% rename from src/Csv/CsvRuntime.fs rename to src/FSharp.Data.Csv.Core/CsvRuntime.fs diff --git a/src/FSharp.Data.Csv.Core/FSharp.Data.Csv.Core.fsproj b/src/FSharp.Data.Csv.Core/FSharp.Data.Csv.Core.fsproj index 41a9be824..634ab45ad 100644 --- a/src/FSharp.Data.Csv.Core/FSharp.Data.Csv.Core.fsproj +++ b/src/FSharp.Data.Csv.Core/FSharp.Data.Csv.Core.fsproj @@ -11,17 +11,17 @@ true - - - - + + + + - + diff --git a/src/CommonProviderImplementation/AssemblyResolver.fs b/src/FSharp.Data.DesignTime/CommonProviderImplementation/AssemblyResolver.fs similarity index 100% rename from src/CommonProviderImplementation/AssemblyResolver.fs rename to src/FSharp.Data.DesignTime/CommonProviderImplementation/AssemblyResolver.fs diff --git a/src/CommonProviderImplementation/ConversionsGenerator.fs b/src/FSharp.Data.DesignTime/CommonProviderImplementation/ConversionsGenerator.fs similarity index 100% rename from src/CommonProviderImplementation/ConversionsGenerator.fs rename to src/FSharp.Data.DesignTime/CommonProviderImplementation/ConversionsGenerator.fs diff --git a/src/CommonProviderImplementation/Helpers.fs b/src/FSharp.Data.DesignTime/CommonProviderImplementation/Helpers.fs similarity index 97% rename from src/CommonProviderImplementation/Helpers.fs rename to src/FSharp.Data.DesignTime/CommonProviderImplementation/Helpers.fs index 3b01f27c8..4b14779ca 100644 --- a/src/CommonProviderImplementation/Helpers.fs +++ b/src/FSharp.Data.DesignTime/CommonProviderImplementation/Helpers.fs @@ -266,7 +266,10 @@ module internal ProviderHelpers = IsUri = false IsResource = false } with e -> - failwithf "The provided sample is neither a file, nor a well-formed %s: %s" formatName e.Message + failwithf + "The provided sample is neither a file, nor a well-formed %s: %s" + formatName + (e.ToString()) | Some uri -> @@ -331,9 +334,17 @@ module internal ProviderHelpers = IsResource = false } with _ -> // if not, return the first exception - failwithf "Cannot read sample %s from '%s': %s" formatName valueToBeParsedOrItsUri e.Message + failwithf + "Cannot read sample %s from '%s': %s" + formatName + valueToBeParsedOrItsUri + (e.ToString()) else - failwithf "Cannot read sample %s from '%s': %s" formatName valueToBeParsedOrItsUri e.Message + failwithf + "Cannot read sample %s from '%s': %s" + formatName + valueToBeParsedOrItsUri + (e.ToString()) let private providedTypesCache = createInMemoryCache (TimeSpan.FromSeconds 30.0) let private activeDisposeActions = HashSet<_>() diff --git a/src/CommonProviderImplementation/QuotationBuilder.fs b/src/FSharp.Data.DesignTime/CommonProviderImplementation/QuotationBuilder.fs similarity index 100% rename from src/CommonProviderImplementation/QuotationBuilder.fs rename to src/FSharp.Data.DesignTime/CommonProviderImplementation/QuotationBuilder.fs diff --git a/src/Csv/CsvGenerator.fs b/src/FSharp.Data.DesignTime/Csv/CsvGenerator.fs similarity index 100% rename from src/Csv/CsvGenerator.fs rename to src/FSharp.Data.DesignTime/Csv/CsvGenerator.fs diff --git a/src/Csv/CsvProvider.fs b/src/FSharp.Data.DesignTime/Csv/CsvProvider.fs similarity index 98% rename from src/Csv/CsvProvider.fs rename to src/FSharp.Data.DesignTime/Csv/CsvProvider.fs index 47298230d..6561e381e 100644 --- a/src/Csv/CsvProvider.fs +++ b/src/FSharp.Data.DesignTime/Csv/CsvProvider.fs @@ -17,6 +17,7 @@ open FSharp.Data.Runtime.CsvInference open ProviderImplementation open ProviderImplementation.QuotationBuilder open FSharp.Data.Runtime.StructuralInference +open System.Net // -------------------------------------------------------------------------------------- @@ -38,6 +39,11 @@ type public CsvProvider(cfg: TypeProviderConfig) as this = let buildTypes (typeName: string) (args: obj[]) = + // Enable TLS 1.2 for samples requested through https. + ServicePointManager.SecurityProtocol <- + ServicePointManager.SecurityProtocol + ||| SecurityProtocolType.Tls12 + let sample = args.[0] :?> string let separators = args.[1] :?> string let inferRows = args.[2] :?> int diff --git a/src/FSharp.Data.DesignTime/FSharp.Data.DesignTime.fsproj b/src/FSharp.Data.DesignTime/FSharp.Data.DesignTime.fsproj index d17c75ee7..f3b71d4b0 100755 --- a/src/FSharp.Data.DesignTime/FSharp.Data.DesignTime.fsproj +++ b/src/FSharp.Data.DesignTime/FSharp.Data.DesignTime.fsproj @@ -17,20 +17,20 @@ ProvidedTypes.fs - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -41,7 +41,7 @@ - + diff --git a/src/Html/HtmlGenerator.fs b/src/FSharp.Data.DesignTime/Html/HtmlGenerator.fs similarity index 100% rename from src/Html/HtmlGenerator.fs rename to src/FSharp.Data.DesignTime/Html/HtmlGenerator.fs diff --git a/src/Html/HtmlProvider.fs b/src/FSharp.Data.DesignTime/Html/HtmlProvider.fs similarity index 96% rename from src/Html/HtmlProvider.fs rename to src/FSharp.Data.DesignTime/Html/HtmlProvider.fs index 432f24bf1..72598a796 100644 --- a/src/Html/HtmlProvider.fs +++ b/src/FSharp.Data.DesignTime/Html/HtmlProvider.fs @@ -11,6 +11,7 @@ open FSharp.Data open FSharp.Data.Runtime open FSharp.Data.Runtime.BaseTypes open FSharp.Data.Runtime.StructuralInference +open System.Net #nowarn "10001" @@ -32,6 +33,11 @@ type public HtmlProvider(cfg: TypeProviderConfig) as this = let buildTypes (typeName: string) (args: obj[]) = + // Enable TLS 1.2 for samples requested through https. + ServicePointManager.SecurityProtocol <- + ServicePointManager.SecurityProtocol + ||| SecurityProtocolType.Tls12 + let sample = args.[0] :?> string let preferOptionals = args.[1] :?> bool let includeLayoutTables = args.[2] :?> bool diff --git a/src/Json/JsonConversionsGenerator.fs b/src/FSharp.Data.DesignTime/Json/JsonConversionsGenerator.fs similarity index 100% rename from src/Json/JsonConversionsGenerator.fs rename to src/FSharp.Data.DesignTime/Json/JsonConversionsGenerator.fs diff --git a/src/Json/JsonGenerator.fs b/src/FSharp.Data.DesignTime/Json/JsonGenerator.fs similarity index 100% rename from src/Json/JsonGenerator.fs rename to src/FSharp.Data.DesignTime/Json/JsonGenerator.fs diff --git a/src/Json/JsonProvider.fs b/src/FSharp.Data.DesignTime/Json/JsonProvider.fs similarity index 97% rename from src/Json/JsonProvider.fs rename to src/FSharp.Data.DesignTime/Json/JsonProvider.fs index f233ad704..5240d2914 100644 --- a/src/Json/JsonProvider.fs +++ b/src/FSharp.Data.DesignTime/Json/JsonProvider.fs @@ -11,6 +11,7 @@ open FSharp.Data.Runtime open FSharp.Data.Runtime.BaseTypes open FSharp.Data.Runtime.StructuralTypes open FSharp.Data.Runtime.StructuralInference +open System.Net // ---------------------------------------------------------------------------------------------- @@ -34,6 +35,11 @@ type public JsonProvider(cfg: TypeProviderConfig) as this = let buildTypes (typeName: string) (args: obj[]) = + // Enable TLS 1.2 for samples requested through https. + ServicePointManager.SecurityProtocol <- + ServicePointManager.SecurityProtocol + ||| SecurityProtocolType.Tls12 + // Generate the required type let tpType = ProvidedTypeDefinition(asm, ns, typeName, None, hideObjectMethods = true, nonNullable = true) diff --git a/src/WorldBank/WorldBankProvider.fs b/src/FSharp.Data.DesignTime/WorldBank/WorldBankProvider.fs similarity index 100% rename from src/WorldBank/WorldBankProvider.fs rename to src/FSharp.Data.DesignTime/WorldBank/WorldBankProvider.fs diff --git a/src/Xml/XmlGenerator.fs b/src/FSharp.Data.DesignTime/Xml/XmlGenerator.fs similarity index 100% rename from src/Xml/XmlGenerator.fs rename to src/FSharp.Data.DesignTime/Xml/XmlGenerator.fs diff --git a/src/Xml/XmlProvider.fs b/src/FSharp.Data.DesignTime/Xml/XmlProvider.fs similarity index 97% rename from src/Xml/XmlProvider.fs rename to src/FSharp.Data.DesignTime/Xml/XmlProvider.fs index 31c1ec152..0e36b8859 100644 --- a/src/Xml/XmlProvider.fs +++ b/src/FSharp.Data.DesignTime/Xml/XmlProvider.fs @@ -12,6 +12,7 @@ open FSharp.Data.Runtime open FSharp.Data.Runtime.BaseTypes open FSharp.Data.Runtime.StructuralTypes open FSharp.Data.Runtime.StructuralInference +open System.Net // ---------------------------------------------------------------------------------------------- @@ -35,6 +36,11 @@ type public XmlProvider(cfg: TypeProviderConfig) as this = let buildTypes (typeName: string) (args: obj[]) = + // Enable TLS 1.2 for samples requested through https. + ServicePointManager.SecurityProtocol <- + ServicePointManager.SecurityProtocol + ||| SecurityProtocolType.Tls12 + // Generate the required type let tpType = ProvidedTypeDefinition(asm, ns, typeName, None, hideObjectMethods = true, nonNullable = true) diff --git a/src/FSharp.Data.Html.Core/FSharp.Data.Html.Core.fsproj b/src/FSharp.Data.Html.Core/FSharp.Data.Html.Core.fsproj index 4ce2351fa..3aaa9cfa5 100644 --- a/src/FSharp.Data.Html.Core/FSharp.Data.Html.Core.fsproj +++ b/src/FSharp.Data.Html.Core/FSharp.Data.Html.Core.fsproj @@ -11,15 +11,15 @@ true - - - - - - - - - + + + + + + + + + @@ -27,7 +27,7 @@ - + diff --git a/src/Html/HtmlActivePatterns.fs b/src/FSharp.Data.Html.Core/HtmlActivePatterns.fs similarity index 100% rename from src/Html/HtmlActivePatterns.fs rename to src/FSharp.Data.Html.Core/HtmlActivePatterns.fs diff --git a/src/Html/HtmlCharRefs.fs b/src/FSharp.Data.Html.Core/HtmlCharRefs.fs similarity index 100% rename from src/Html/HtmlCharRefs.fs rename to src/FSharp.Data.Html.Core/HtmlCharRefs.fs diff --git a/src/Html/HtmlCssSelectorExtensions.fs b/src/FSharp.Data.Html.Core/HtmlCssSelectorExtensions.fs similarity index 100% rename from src/Html/HtmlCssSelectorExtensions.fs rename to src/FSharp.Data.Html.Core/HtmlCssSelectorExtensions.fs diff --git a/src/Html/HtmlCssSelectors.fs b/src/FSharp.Data.Html.Core/HtmlCssSelectors.fs similarity index 100% rename from src/Html/HtmlCssSelectors.fs rename to src/FSharp.Data.Html.Core/HtmlCssSelectors.fs diff --git a/src/Html/HtmlInference.fs b/src/FSharp.Data.Html.Core/HtmlInference.fs similarity index 100% rename from src/Html/HtmlInference.fs rename to src/FSharp.Data.Html.Core/HtmlInference.fs diff --git a/src/Html/HtmlNode.fs b/src/FSharp.Data.Html.Core/HtmlNode.fs similarity index 100% rename from src/Html/HtmlNode.fs rename to src/FSharp.Data.Html.Core/HtmlNode.fs diff --git a/src/Html/HtmlOperations.fs b/src/FSharp.Data.Html.Core/HtmlOperations.fs similarity index 100% rename from src/Html/HtmlOperations.fs rename to src/FSharp.Data.Html.Core/HtmlOperations.fs diff --git a/src/Html/HtmlParser.fs b/src/FSharp.Data.Html.Core/HtmlParser.fs similarity index 100% rename from src/Html/HtmlParser.fs rename to src/FSharp.Data.Html.Core/HtmlParser.fs diff --git a/src/Html/HtmlRuntime.fs b/src/FSharp.Data.Html.Core/HtmlRuntime.fs similarity index 99% rename from src/Html/HtmlRuntime.fs rename to src/FSharp.Data.Html.Core/HtmlRuntime.fs index e8394059c..a65de5aa8 100644 --- a/src/Html/HtmlRuntime.fs +++ b/src/FSharp.Data.Html.Core/HtmlRuntime.fs @@ -179,7 +179,7 @@ module HtmlRuntime = <| element.Descendants("caption", false) with | [] -> - match tryGetName [ "id"; "name"; "title"; "summary" ] with + match tryGetName [ "id"; "name"; "title"; "summary"; "aria-label" ] with | Some name -> normalizeWs name | _ -> defaultName | h :: _ -> h.InnerText() diff --git a/src/FSharp.Data.Http/FSharp.Data.Http.fsproj b/src/FSharp.Data.Http/FSharp.Data.Http.fsproj index fcbc2d9b8..1e3561caa 100644 --- a/src/FSharp.Data.Http/FSharp.Data.Http.fsproj +++ b/src/FSharp.Data.Http/FSharp.Data.Http.fsproj @@ -11,16 +11,7 @@ true - - - - - - - - - - + diff --git a/src/Net/Http.fs b/src/FSharp.Data.Http/Http.fs similarity index 100% rename from src/Net/Http.fs rename to src/FSharp.Data.Http/Http.fs diff --git a/src/FSharp.Data.Http/InternalsVisibleTo.fs b/src/FSharp.Data.Http/InternalsVisibleTo.fs index b514a2b6b..f92349790 100644 --- a/src/FSharp.Data.Http/InternalsVisibleTo.fs +++ b/src/FSharp.Data.Http/InternalsVisibleTo.fs @@ -2,6 +2,7 @@ namespace FSharp.Data open System.Runtime.CompilerServices +[] [] [] [] diff --git a/src/FSharp.Data.Json.Core/FSharp.Data.Json.Core.fsproj b/src/FSharp.Data.Json.Core/FSharp.Data.Json.Core.fsproj index 7f6e756f3..a4b509caf 100644 --- a/src/FSharp.Data.Json.Core/FSharp.Data.Json.Core.fsproj +++ b/src/FSharp.Data.Json.Core/FSharp.Data.Json.Core.fsproj @@ -11,12 +11,12 @@ true - - - - - - + + + + + + @@ -24,6 +24,7 @@ + diff --git a/src/Json/JsonConversions.fs b/src/FSharp.Data.Json.Core/JsonConversions.fs similarity index 100% rename from src/Json/JsonConversions.fs rename to src/FSharp.Data.Json.Core/JsonConversions.fs diff --git a/src/Json/JsonDocument.fs b/src/FSharp.Data.Json.Core/JsonDocument.fs similarity index 100% rename from src/Json/JsonDocument.fs rename to src/FSharp.Data.Json.Core/JsonDocument.fs diff --git a/src/Json/JsonExtensions.fs b/src/FSharp.Data.Json.Core/JsonExtensions.fs similarity index 100% rename from src/Json/JsonExtensions.fs rename to src/FSharp.Data.Json.Core/JsonExtensions.fs diff --git a/src/Json/JsonInference.fs b/src/FSharp.Data.Json.Core/JsonInference.fs similarity index 100% rename from src/Json/JsonInference.fs rename to src/FSharp.Data.Json.Core/JsonInference.fs diff --git a/src/Json/JsonRuntime.fs b/src/FSharp.Data.Json.Core/JsonRuntime.fs similarity index 100% rename from src/Json/JsonRuntime.fs rename to src/FSharp.Data.Json.Core/JsonRuntime.fs diff --git a/src/Json/JsonValue.fs b/src/FSharp.Data.Json.Core/JsonValue.fs similarity index 100% rename from src/Json/JsonValue.fs rename to src/FSharp.Data.Json.Core/JsonValue.fs diff --git a/src/CommonRuntime/Caching.fs b/src/FSharp.Data.Runtime.Utilities/Caching.fs similarity index 100% rename from src/CommonRuntime/Caching.fs rename to src/FSharp.Data.Runtime.Utilities/Caching.fs diff --git a/src/FSharp.Data.Runtime.Utilities/FSharp.Data.Runtime.Utilities.fsproj b/src/FSharp.Data.Runtime.Utilities/FSharp.Data.Runtime.Utilities.fsproj new file mode 100644 index 000000000..1b24b8dcc --- /dev/null +++ b/src/FSharp.Data.Runtime.Utilities/FSharp.Data.Runtime.Utilities.fsproj @@ -0,0 +1,33 @@ + + + + Library + false + netstandard2.0 + $(OtherFlags) --warnon:1182 --nowarn:10001 --nowarn:44 + true + false + logo.png + + true + + + + + + + + + + + + + + + + + + + + + diff --git a/src/CommonRuntime/IO.fs b/src/FSharp.Data.Runtime.Utilities/IO.fs similarity index 100% rename from src/CommonRuntime/IO.fs rename to src/FSharp.Data.Runtime.Utilities/IO.fs diff --git a/src/FSharp.Data.Runtime.Utilities/InternalsVisibleTo.fs b/src/FSharp.Data.Runtime.Utilities/InternalsVisibleTo.fs new file mode 100644 index 000000000..b514a2b6b --- /dev/null +++ b/src/FSharp.Data.Runtime.Utilities/InternalsVisibleTo.fs @@ -0,0 +1,14 @@ +namespace FSharp.Data + +open System.Runtime.CompilerServices + +[] +[] +[] +[] +[] +[] +[] +[] +[] +do () diff --git a/src/CommonRuntime/NameUtils.fs b/src/FSharp.Data.Runtime.Utilities/NameUtils.fs similarity index 100% rename from src/CommonRuntime/NameUtils.fs rename to src/FSharp.Data.Runtime.Utilities/NameUtils.fs diff --git a/src/CommonRuntime/Pluralizer.fs b/src/FSharp.Data.Runtime.Utilities/Pluralizer.fs similarity index 100% rename from src/CommonRuntime/Pluralizer.fs rename to src/FSharp.Data.Runtime.Utilities/Pluralizer.fs diff --git a/src/FSharp.Data.Http/PublicApi.fs b/src/FSharp.Data.Runtime.Utilities/PublicApi.fs similarity index 100% rename from src/FSharp.Data.Http/PublicApi.fs rename to src/FSharp.Data.Runtime.Utilities/PublicApi.fs diff --git a/src/CommonRuntime/StructuralInference.fs b/src/FSharp.Data.Runtime.Utilities/StructuralInference.fs similarity index 100% rename from src/CommonRuntime/StructuralInference.fs rename to src/FSharp.Data.Runtime.Utilities/StructuralInference.fs diff --git a/src/CommonRuntime/StructuralTypes.fs b/src/FSharp.Data.Runtime.Utilities/StructuralTypes.fs similarity index 100% rename from src/CommonRuntime/StructuralTypes.fs rename to src/FSharp.Data.Runtime.Utilities/StructuralTypes.fs diff --git a/src/CommonRuntime/TextConversions.fs b/src/FSharp.Data.Runtime.Utilities/TextConversions.fs similarity index 100% rename from src/CommonRuntime/TextConversions.fs rename to src/FSharp.Data.Runtime.Utilities/TextConversions.fs diff --git a/src/CommonRuntime/TextRuntime.fs b/src/FSharp.Data.Runtime.Utilities/TextRuntime.fs similarity index 100% rename from src/CommonRuntime/TextRuntime.fs rename to src/FSharp.Data.Runtime.Utilities/TextRuntime.fs diff --git a/src/FSharp.Data.Runtime.Utilities/paket.references b/src/FSharp.Data.Runtime.Utilities/paket.references new file mode 100644 index 000000000..c89b441a0 --- /dev/null +++ b/src/FSharp.Data.Runtime.Utilities/paket.references @@ -0,0 +1,2 @@ +Microsoft.SourceLink.GitHub +FSharp.Core diff --git a/src/FSharp.Data.WorldBank.Core/FSharp.Data.WorldBank.Core.fsproj b/src/FSharp.Data.WorldBank.Core/FSharp.Data.WorldBank.Core.fsproj index dd467c2e8..a7fd36757 100644 --- a/src/FSharp.Data.WorldBank.Core/FSharp.Data.WorldBank.Core.fsproj +++ b/src/FSharp.Data.WorldBank.Core/FSharp.Data.WorldBank.Core.fsproj @@ -11,7 +11,7 @@ true - + @@ -19,6 +19,7 @@ + diff --git a/src/WorldBank/WorldBankRuntime.fs b/src/FSharp.Data.WorldBank.Core/WorldBankRuntime.fs similarity index 100% rename from src/WorldBank/WorldBankRuntime.fs rename to src/FSharp.Data.WorldBank.Core/WorldBankRuntime.fs diff --git a/src/FSharp.Data.Xml.Core/FSharp.Data.Xml.Core.fsproj b/src/FSharp.Data.Xml.Core/FSharp.Data.Xml.Core.fsproj index 57ff8f755..88f9cfdb0 100644 --- a/src/FSharp.Data.Xml.Core/FSharp.Data.Xml.Core.fsproj +++ b/src/FSharp.Data.Xml.Core/FSharp.Data.Xml.Core.fsproj @@ -11,10 +11,10 @@ true - - - - + + + + @@ -22,6 +22,7 @@ + diff --git a/src/Xml/XmlExtensions.fs b/src/FSharp.Data.Xml.Core/XmlExtensions.fs similarity index 100% rename from src/Xml/XmlExtensions.fs rename to src/FSharp.Data.Xml.Core/XmlExtensions.fs diff --git a/src/Xml/XmlInference.fs b/src/FSharp.Data.Xml.Core/XmlInference.fs similarity index 100% rename from src/Xml/XmlInference.fs rename to src/FSharp.Data.Xml.Core/XmlInference.fs diff --git a/src/Xml/XmlRuntime.fs b/src/FSharp.Data.Xml.Core/XmlRuntime.fs similarity index 100% rename from src/Xml/XmlRuntime.fs rename to src/FSharp.Data.Xml.Core/XmlRuntime.fs diff --git a/src/Xml/XsdInference.fs b/src/FSharp.Data.Xml.Core/XsdInference.fs similarity index 100% rename from src/Xml/XsdInference.fs rename to src/FSharp.Data.Xml.Core/XsdInference.fs diff --git a/src/FSharp.Data/FSharp.Data.fsproj b/src/FSharp.Data/FSharp.Data.fsproj index f073b4ce0..8e9789563 100755 --- a/src/FSharp.Data/FSharp.Data.fsproj +++ b/src/FSharp.Data/FSharp.Data.fsproj @@ -14,7 +14,7 @@ - + @@ -29,6 +29,7 @@ + diff --git a/src/Runtime.fs b/src/FSharp.Data/Runtime.fs similarity index 100% rename from src/Runtime.fs rename to src/FSharp.Data/Runtime.fs diff --git a/tests/FSharp.Data.Core.Tests.CSharp/FSharp.Data.Core.Tests.CSharp.csproj b/tests/FSharp.Data.Core.Tests.CSharp/FSharp.Data.Core.Tests.CSharp.csproj index eb9a5777b..47d29f70a 100644 --- a/tests/FSharp.Data.Core.Tests.CSharp/FSharp.Data.Core.Tests.CSharp.csproj +++ b/tests/FSharp.Data.Core.Tests.CSharp/FSharp.Data.Core.Tests.CSharp.csproj @@ -15,7 +15,7 @@ - + diff --git a/tests/FSharp.Data.Core.Tests/FSharp.Data.Core.Tests.fsproj b/tests/FSharp.Data.Core.Tests/FSharp.Data.Core.Tests.fsproj index aa48b9f93..c41c7063d 100644 --- a/tests/FSharp.Data.Core.Tests/FSharp.Data.Core.Tests.fsproj +++ b/tests/FSharp.Data.Core.Tests/FSharp.Data.Core.Tests.fsproj @@ -36,6 +36,7 @@ + diff --git a/tests/FSharp.Data.DesignTime.Tests/TypeProviderInstantiation.fs b/tests/FSharp.Data.DesignTime.Tests/TypeProviderInstantiation.fs index b7790fbdb..eb2972d58 100644 --- a/tests/FSharp.Data.DesignTime.Tests/TypeProviderInstantiation.fs +++ b/tests/FSharp.Data.DesignTime.Tests/TypeProviderInstantiation.fs @@ -260,6 +260,7 @@ type internal TypeProviderInstantiation = let extraDlls = [ "FSharp.Data.Http" + "FSharp.Data.Runtime.Utilities" "FSharp.Data.Csv.Core" "FSharp.Data.Html.Core" "FSharp.Data.Xml.Core" diff --git a/tests/FSharp.Data.Tests/WorldBankProvider.fs b/tests/FSharp.Data.Tests/WorldBankProvider.fs index e122be1f1..c2a9936c5 100644 --- a/tests/FSharp.Data.Tests/WorldBankProvider.fs +++ b/tests/FSharp.Data.Tests/WorldBankProvider.fs @@ -1,4 +1,4 @@ -module FSharp.Data.Tests.WorldBankProvider +module FSharp.Data.Tests.WorldBankProvider open System open System.Net @@ -13,7 +13,14 @@ let data = WorldBankData.GetDataContext() [] let ``Should not throw exception for missing year in indicator``() = - data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.[1900] |> should equal Double.NaN - data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.[2012] |> should not' (equal Double.NaN) - data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.TryGetValueAt 1900 |> should equal None - data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.TryGetValueAt 2012 |> should not' (equal None) + try + data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.[1900] |> should equal Double.NaN + data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.[2012] |> should not' (equal Double.NaN) + data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.TryGetValueAt 1900 |> should equal None + data.Countries.``United Kingdom``.Indicators.``GNI growth (annual %)``.TryGetValueAt 2012 |> should not' (equal None) + with ex + when ex.ToString().Contains("The server has encountered an error which prevents it from fulfilling your request. Please contact the system administrator") + || ex.ToString().Contains("Timeout exceeded while getting response") + || ex.ToString().Contains("504 Gateway Time-out") -> + Assert.Inconclusive($"Worldbank api is having issues: {ex}") +