mirror of
https://github.com/Smaug123/WoofWare.Myriad
synced 2025-10-11 23:18:43 +00:00
Compare commits
1 Commits
WoofWare.M
...
simpler-te
Author | SHA1 | Date | |
---|---|---|---|
|
3d8e453f19 |
@@ -3,7 +3,7 @@
|
|||||||
"isRoot": true,
|
"isRoot": true,
|
||||||
"tools": {
|
"tools": {
|
||||||
"fantomas": {
|
"fantomas": {
|
||||||
"version": "6.3.9",
|
"version": "6.3.4",
|
||||||
"commands": [
|
"commands": [
|
||||||
"fantomas"
|
"fantomas"
|
||||||
]
|
]
|
||||||
|
14
.github/workflows/assert-contents.sh
vendored
14
.github/workflows/assert-contents.sh
vendored
@@ -1,14 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "Unzipping version from NuGet"
|
|
||||||
ls from-nuget.nupkg
|
|
||||||
mkdir from-nuget && cp from-nuget.nupkg from-nuget/zip.zip && cd from-nuget && unzip zip.zip && rm zip.zip && cd - || exit 1
|
|
||||||
|
|
||||||
echo "Unzipping version from local build"
|
|
||||||
ls packed/
|
|
||||||
mkdir from-local && cp packed/*.nupkg from-local/zip.zip && cd from-local && unzip zip.zip && rm zip.zip && cd - || exit 1
|
|
||||||
|
|
||||||
cd from-local && find . -type f -exec sha256sum {} \; | sort > ../from-local.txt && cd .. || exit 1
|
|
||||||
cd from-nuget && find . -type f -and -not -name '.signature.p7s' -exec sha256sum {} \; | sort > ../from-nuget.txt && cd .. || exit 1
|
|
||||||
|
|
||||||
diff from-local.txt from-nuget.txt
|
|
117
.github/workflows/dotnet.yaml
vendored
117
.github/workflows/dotnet.yaml
vendored
@@ -221,53 +221,11 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- run: echo "All required checks complete."
|
- run: echo "All required checks complete."
|
||||||
|
|
||||||
attestation-attribute:
|
nuget-publish:
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [all-required-checks-complete]
|
|
||||||
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
attestations: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Download NuGet artifact
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: nuget-package-attribute
|
|
||||||
path: packed
|
|
||||||
- name: Attest Build Provenance
|
|
||||||
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
|
||||||
with:
|
|
||||||
subject-path: "packed/*.nupkg"
|
|
||||||
|
|
||||||
attestation-plugin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
needs: [all-required-checks-complete]
|
|
||||||
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
attestations: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Download NuGet artifact
|
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: nuget-package-plugin
|
|
||||||
path: packed
|
|
||||||
- name: Attest Build Provenance
|
|
||||||
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
|
||||||
with:
|
|
||||||
subject-path: "packed/*.nupkg"
|
|
||||||
|
|
||||||
nuget-publish-attribute:
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
||||||
needs: [all-required-checks-complete]
|
needs: [all-required-checks-complete]
|
||||||
environment: main-deploy
|
environment: main-deploy
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
attestations: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
@@ -275,73 +233,20 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
extra_nix_config: |
|
extra_nix_config: |
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Download NuGet artifact
|
- name: Download NuGet artifact (plugin)
|
||||||
uses: actions/download-artifact@v4
|
|
||||||
with:
|
|
||||||
name: nuget-package-attribute
|
|
||||||
path: packed
|
|
||||||
- name: Publish to NuGet
|
|
||||||
id: publish-success
|
|
||||||
env:
|
|
||||||
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
|
|
||||||
run: 'nix develop --command bash ./.github/workflows/nuget-push.sh "packed/WoofWare.Myriad.Plugins.Attributes.*.nupkg"'
|
|
||||||
- name: Wait for availability
|
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
|
||||||
env:
|
|
||||||
PACKAGE_VERSION: ${{ steps.publish-success.outputs.version }}
|
|
||||||
run: 'echo "$PACKAGE_VERSION" && while ! curl -L --fail -o from-nuget.nupkg "https://www.nuget.org/api/v2/package/WoofWare.Myriad.Plugins.Attributes/$PACKAGE_VERSION" ; do sleep 10; done'
|
|
||||||
# Astonishingly, NuGet.org considers it to be "more secure" to tamper with my package after upload (https://devblogs.microsoft.com/nuget/introducing-repository-signatures/).
|
|
||||||
# So we have to *re-attest* it after it's uploaded. Mind-blowing.
|
|
||||||
- name: Assert package contents
|
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
|
||||||
run: 'bash ./.github/workflows/assert-contents.sh'
|
|
||||||
- name: Attest Build Provenance
|
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
|
||||||
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
|
||||||
with:
|
|
||||||
subject-path: "from-nuget.nupkg"
|
|
||||||
|
|
||||||
nuget-publish-plugin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: ${{ !github.event.repository.fork && github.ref == 'refs/heads/main' }}
|
|
||||||
needs: [all-required-checks-complete]
|
|
||||||
environment: main-deploy
|
|
||||||
permissions:
|
|
||||||
id-token: write
|
|
||||||
attestations: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- name: Install Nix
|
|
||||||
uses: cachix/install-nix-action@V27
|
|
||||||
with:
|
|
||||||
extra_nix_config: |
|
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Download NuGet artifact
|
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: nuget-package-plugin
|
name: nuget-package-plugin
|
||||||
path: packed
|
path: packed-plugin
|
||||||
- name: Publish to NuGet
|
- name: Publish to NuGet (plugin)
|
||||||
id: publish-success
|
run: nix develop --command dotnet nuget push "packed-plugin/WoofWare.Myriad.Plugins.*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
|
||||||
env:
|
- name: Download NuGet artifact (attribute)
|
||||||
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
|
uses: actions/download-artifact@v4
|
||||||
run: 'nix develop --command bash ./.github/workflows/nuget-push.sh "packed/WoofWare.Myriad.Plugins.*.nupkg"'
|
|
||||||
- name: Wait for availability
|
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
|
||||||
env:
|
|
||||||
PACKAGE_VERSION: ${{ steps.publish-success.outputs.version }}
|
|
||||||
run: 'echo "$PACKAGE_VERSION" && while ! curl -L --fail -o from-nuget.nupkg "https://www.nuget.org/api/v2/package/WoofWare.Myriad.Plugins/$PACKAGE_VERSION" ; do sleep 10; done'
|
|
||||||
# Astonishingly, NuGet.org considers it to be "more secure" to tamper with my package after upload (https://devblogs.microsoft.com/nuget/introducing-repository-signatures/).
|
|
||||||
# So we have to *re-attest* it after it's uploaded. Mind-blowing.
|
|
||||||
- name: Assert package contents
|
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
|
||||||
run: 'bash ./.github/workflows/assert-contents.sh'
|
|
||||||
- name: Attest Build Provenance
|
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
|
||||||
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
|
||||||
with:
|
with:
|
||||||
subject-path: "from-nuget.nupkg"
|
name: nuget-package-attribute
|
||||||
|
path: packed-attribute
|
||||||
|
- name: Publish to NuGet (attribute)
|
||||||
|
run: nix develop --command dotnet nuget push "packed-attribute/WoofWare.Myriad.Plugins.Attributes.*.nupkg" --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
|
||||||
|
|
||||||
github-release-plugin:
|
github-release-plugin:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
24
.github/workflows/nuget-push.sh
vendored
24
.github/workflows/nuget-push.sh
vendored
@@ -1,24 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
SOURCE_NUPKG=$(find . -type f -name '*.nupkg')
|
|
||||||
|
|
||||||
PACKAGE_VERSION=$(basename "$SOURCE_NUPKG" | rev | cut -d '.' -f 2-4 | rev)
|
|
||||||
|
|
||||||
echo "version=$PACKAGE_VERSION" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
tmp=$(mktemp)
|
|
||||||
|
|
||||||
if ! dotnet nuget push "$SOURCE_NUPKG" --api-key "$NUGET_API_KEY" --source https://api.nuget.org/v3/index.json > "$tmp" ; then
|
|
||||||
cat "$tmp"
|
|
||||||
if grep 'already exists and cannot be modified' "$tmp" ; then
|
|
||||||
echo "result=skipped" >> "$GITHUB_OUTPUT"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo "Unexpected failure to upload"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat "$tmp"
|
|
||||||
|
|
||||||
echo "result=published" >> "$GITHUB_OUTPUT"
|
|
@@ -1,10 +1,5 @@
|
|||||||
Notable changes are recorded here.
|
Notable changes are recorded here.
|
||||||
|
|
||||||
# WoofWare.Myriad.Plugins 2.1.45, WoofWare.Myriad.Plugins.Attributes 3.1.7
|
|
||||||
|
|
||||||
The NuGet packages are now attested to through [GitHub Attestations](https://github.blog/2024-05-02-introducing-artifact-attestations-now-in-public-beta/).
|
|
||||||
You can run `gh attestation verify ~/.nuget/packages/woofware.myriad.plugins/2.1.45/woofware.myriad.plugins.2.1.45.nupkg -o Smaug123`, for example, to verify with GitHub that the GitHub Actions pipeline on this repository produced a nupkg file with the same hash as the one you were served from NuGet.
|
|
||||||
|
|
||||||
# WoofWare.Myriad.Plugins 2.1.33
|
# WoofWare.Myriad.Plugins 2.1.33
|
||||||
|
|
||||||
`JsonParse` can now deserialize the discriminated unions which `JsonSerialize` wrote out.
|
`JsonParse` can now deserialize the discriminated unions which `JsonSerialize` wrote out.
|
||||||
|
@@ -4,33 +4,6 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
namespace ConsumePlugin
|
|
||||||
|
|
||||||
open System.Text.Json.Serialization
|
|
||||||
|
|
||||||
/// Module containing JSON serializing methods for the InternalTypeNotExtensionSerial type
|
|
||||||
[<RequireQualifiedAccess ; CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
|
|
||||||
module internal InternalTypeNotExtensionSerial =
|
|
||||||
/// Serialize to a JSON node
|
|
||||||
let toJsonNode (input : InternalTypeNotExtensionSerial) : System.Text.Json.Nodes.JsonNode =
|
|
||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
|
||||||
do node.Add ((Literals.something), System.Text.Json.Nodes.JsonValue.Create<string> input.InternalThing2)
|
|
||||||
node :> _
|
|
||||||
namespace ConsumePlugin
|
|
||||||
|
|
||||||
open System.Text.Json.Serialization
|
|
||||||
|
|
||||||
/// Module containing JSON serializing extension members for the InternalTypeExtension type
|
|
||||||
[<AutoOpen>]
|
|
||||||
module internal InternalTypeExtensionJsonSerializeExtension =
|
|
||||||
/// Extension methods for JSON parsing
|
|
||||||
type InternalTypeExtension with
|
|
||||||
|
|
||||||
/// Serialize to a JSON node
|
|
||||||
static member toJsonNode (input : InternalTypeExtension) : System.Text.Json.Nodes.JsonNode =
|
|
||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
|
||||||
do node.Add ((Literals.something), System.Text.Json.Nodes.JsonValue.Create<string> input.ExternalThing)
|
|
||||||
node :> _
|
|
||||||
|
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
|
|
||||||
@@ -49,7 +22,7 @@ module InnerType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Thing = arg_0
|
Thing = arg_0
|
||||||
@@ -71,7 +44,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
@@ -84,7 +57,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
@@ -109,7 +82,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
@@ -122,7 +95,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["a"] with
|
(match node.["a"] with
|
||||||
@@ -134,7 +107,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
A = arg_0
|
A = arg_0
|
||||||
@@ -146,53 +119,6 @@ module JsonRecordType =
|
|||||||
}
|
}
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
|
|
||||||
/// Module containing JSON parsing methods for the InternalTypeNotExtension type
|
|
||||||
[<RequireQualifiedAccess ; CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
|
|
||||||
module internal InternalTypeNotExtension =
|
|
||||||
/// Parse from a JSON node.
|
|
||||||
let jsonParse (node : System.Text.Json.Nodes.JsonNode) : InternalTypeNotExtension =
|
|
||||||
let arg_0 =
|
|
||||||
(match node.[(Literals.something)] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ((Literals.something))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.String> ()
|
|
||||||
|
|
||||||
{
|
|
||||||
InternalThing = arg_0
|
|
||||||
}
|
|
||||||
namespace ConsumePlugin
|
|
||||||
|
|
||||||
/// Module containing JSON parsing extension members for the InternalTypeExtension type
|
|
||||||
[<AutoOpen>]
|
|
||||||
module internal InternalTypeExtensionJsonParseExtension =
|
|
||||||
/// Extension methods for JSON parsing
|
|
||||||
type InternalTypeExtension with
|
|
||||||
|
|
||||||
/// Parse from a JSON node.
|
|
||||||
static member jsonParse (node : System.Text.Json.Nodes.JsonNode) : InternalTypeExtension =
|
|
||||||
let arg_0 =
|
|
||||||
(match node.[(Literals.something)] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ((Literals.something))
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.String> ()
|
|
||||||
|
|
||||||
{
|
|
||||||
ExternalThing = arg_0
|
|
||||||
}
|
|
||||||
namespace ConsumePlugin
|
|
||||||
|
|
||||||
/// Module containing JSON parsing extension members for the ToGetExtensionMethod type
|
/// Module containing JSON parsing extension members for the ToGetExtensionMethod type
|
||||||
[<AutoOpen>]
|
[<AutoOpen>]
|
||||||
module ToGetExtensionMethodJsonParseExtension =
|
module ToGetExtensionMethodJsonParseExtension =
|
||||||
@@ -345,7 +271,7 @@ module ToGetExtensionMethodJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_7 =
|
let arg_7 =
|
||||||
(match node.["hotel"] with
|
(match node.["hotel"] with
|
||||||
@@ -417,7 +343,7 @@ module ToGetExtensionMethodJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Double> ()
|
.GetValue<float> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["bravo"] with
|
(match node.["bravo"] with
|
||||||
@@ -442,7 +368,7 @@ module ToGetExtensionMethodJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Alpha = arg_0
|
Alpha = arg_0
|
||||||
|
@@ -19,9 +19,9 @@ type internal PublicTypeMock =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty : PublicTypeMock =
|
static member Empty : PublicTypeMock =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem3 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem3"))
|
Mem3 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IPublicType with
|
interface IPublicType with
|
||||||
@@ -44,9 +44,9 @@ type public PublicTypeInternalFalseMock =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty : PublicTypeInternalFalseMock =
|
static member Empty : PublicTypeInternalFalseMock =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem3 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem3"))
|
Mem3 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IPublicTypeInternalFalse with
|
interface IPublicTypeInternalFalse with
|
||||||
@@ -68,8 +68,8 @@ type internal InternalTypeMock =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty : InternalTypeMock =
|
static member Empty : InternalTypeMock =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface InternalType with
|
interface InternalType with
|
||||||
@@ -90,8 +90,8 @@ type private PrivateTypeMock =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty : PrivateTypeMock =
|
static member Empty : PrivateTypeMock =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PrivateType with
|
interface PrivateType with
|
||||||
@@ -112,8 +112,8 @@ type private PrivateTypeInternalFalseMock =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty : PrivateTypeInternalFalseMock =
|
static member Empty : PrivateTypeInternalFalseMock =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PrivateTypeInternalFalse with
|
interface PrivateTypeInternalFalse with
|
||||||
@@ -133,7 +133,7 @@ type internal VeryPublicTypeMock<'a, 'b> =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty () : VeryPublicTypeMock<'a, 'b> =
|
static member Empty () : VeryPublicTypeMock<'a, 'b> =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface VeryPublicType<'a, 'b> with
|
interface VeryPublicType<'a, 'b> with
|
||||||
@@ -157,12 +157,12 @@ type internal CurriedMock<'a> =
|
|||||||
/// An implementation where every method throws.
|
/// An implementation where every method throws.
|
||||||
static member Empty () : CurriedMock<'a> =
|
static member Empty () : CurriedMock<'a> =
|
||||||
{
|
{
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem3 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem3"))
|
Mem3 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem4 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem4"))
|
Mem4 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem5 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem5"))
|
Mem5 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem6 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem6"))
|
Mem6 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Curried<'a> with
|
interface Curried<'a> with
|
||||||
@@ -196,8 +196,8 @@ type internal TypeWithInterfaceMock =
|
|||||||
static member Empty : TypeWithInterfaceMock =
|
static member Empty : TypeWithInterfaceMock =
|
||||||
{
|
{
|
||||||
Dispose = (fun () -> ())
|
Dispose = (fun () -> ())
|
||||||
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem1"))
|
Mem1 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function: Mem2"))
|
Mem2 = (fun _ -> raise (System.NotImplementedException "Unimplemented mock function"))
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TypeWithInterface with
|
interface TypeWithInterface with
|
||||||
|
@@ -55,7 +55,7 @@ module GymOpeningHours =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
@@ -68,7 +68,7 @@ module GymOpeningHours =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
IsAlwaysOpen = arg_0
|
IsAlwaysOpen = arg_0
|
||||||
@@ -91,7 +91,7 @@ module GymAccessOptions =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["pinAccess"] with
|
(match node.["pinAccess"] with
|
||||||
@@ -103,7 +103,7 @@ module GymAccessOptions =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
PinAccess = arg_0
|
PinAccess = arg_0
|
||||||
@@ -127,7 +127,7 @@ module GymLocation =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Double> ()
|
.GetValue<float> ()
|
||||||
with :? System.InvalidOperationException as exc ->
|
with :? System.InvalidOperationException as exc ->
|
||||||
if exc.Message.Contains "cannot be converted to" then
|
if exc.Message.Contains "cannot be converted to" then
|
||||||
if
|
if
|
||||||
@@ -148,7 +148,6 @@ module GymLocation =
|
|||||||
reraise ()
|
reraise ()
|
||||||
else
|
else
|
||||||
reraise ()
|
reraise ()
|
||||||
|> LanguagePrimitives.FloatWithMeasure
|
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
try
|
try
|
||||||
@@ -161,7 +160,7 @@ module GymLocation =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Double> ()
|
.GetValue<float> ()
|
||||||
with :? System.InvalidOperationException as exc ->
|
with :? System.InvalidOperationException as exc ->
|
||||||
if exc.Message.Contains "cannot be converted to" then
|
if exc.Message.Contains "cannot be converted to" then
|
||||||
if
|
if
|
||||||
@@ -204,12 +203,12 @@ module GymAddress =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
match node.["county"] with
|
match node.["county"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<System.String> () |> Some
|
| v -> v.AsValue().GetValue<string> () |> Some
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
(match node.["town"] with
|
(match node.["town"] with
|
||||||
@@ -221,17 +220,17 @@ module GymAddress =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
match node.["addressLine3"] with
|
match node.["addressLine3"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<System.String> () |> Some
|
| v -> v.AsValue().GetValue<string> () |> Some
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
match node.["addressLine2"] with
|
match node.["addressLine2"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<System.String> () |> Some
|
| v -> v.AsValue().GetValue<string> () |> Some
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["addressLine1"] with
|
(match node.["addressLine1"] with
|
||||||
@@ -243,7 +242,7 @@ module GymAddress =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
AddressLine1 = arg_0
|
AddressLine1 = arg_0
|
||||||
@@ -270,7 +269,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_9 =
|
let arg_9 =
|
||||||
(match node.["timeZone"] with
|
(match node.["timeZone"] with
|
||||||
@@ -282,7 +281,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_8 =
|
let arg_8 =
|
||||||
GymLocation.jsonParse (
|
GymLocation.jsonParse (
|
||||||
@@ -330,7 +329,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
(match node.["phoneNumber"] with
|
(match node.["phoneNumber"] with
|
||||||
@@ -342,7 +341,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
GymAddress.jsonParse (
|
GymAddress.jsonParse (
|
||||||
@@ -366,7 +365,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["id"] with
|
(match node.["id"] with
|
||||||
@@ -378,7 +377,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["name"] with
|
(match node.["name"] with
|
||||||
@@ -390,7 +389,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Name = arg_0
|
Name = arg_0
|
||||||
@@ -425,7 +424,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_13 =
|
let arg_13 =
|
||||||
(match node.["suspendedReason"] with
|
(match node.["suspendedReason"] with
|
||||||
@@ -437,7 +436,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_12 =
|
let arg_12 =
|
||||||
(match node.["membershipLevel"] with
|
(match node.["membershipLevel"] with
|
||||||
@@ -449,7 +448,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_11 =
|
let arg_11 =
|
||||||
(match node.["membershipName"] with
|
(match node.["membershipName"] with
|
||||||
@@ -461,7 +460,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_10 =
|
let arg_10 =
|
||||||
(match node.["postCode"] with
|
(match node.["postCode"] with
|
||||||
@@ -473,7 +472,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_9 =
|
let arg_9 =
|
||||||
(match node.["mobileNumber"] with
|
(match node.["mobileNumber"] with
|
||||||
@@ -485,7 +484,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_8 =
|
let arg_8 =
|
||||||
(match node.["dateofBirth"] with
|
(match node.["dateofBirth"] with
|
||||||
@@ -510,7 +509,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_6 =
|
let arg_6 =
|
||||||
(match node.["emailAddress"] with
|
(match node.["emailAddress"] with
|
||||||
@@ -522,7 +521,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_5 =
|
let arg_5 =
|
||||||
(match node.["homeGymName"] with
|
(match node.["homeGymName"] with
|
||||||
@@ -534,7 +533,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
(match node.["homeGymId"] with
|
(match node.["homeGymId"] with
|
||||||
@@ -546,7 +545,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
(match node.["lastName"] with
|
(match node.["lastName"] with
|
||||||
@@ -558,7 +557,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["firstName"] with
|
(match node.["firstName"] with
|
||||||
@@ -570,7 +569,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["compoundMemberId"] with
|
(match node.["compoundMemberId"] with
|
||||||
@@ -582,7 +581,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["id"] with
|
(match node.["id"] with
|
||||||
@@ -594,7 +593,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Id = arg_0
|
Id = arg_0
|
||||||
@@ -630,7 +629,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_7 =
|
let arg_7 =
|
||||||
(match node.["lastRefreshedPeopleInClasses"] with
|
(match node.["lastRefreshedPeopleInClasses"] with
|
||||||
@@ -681,12 +680,12 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
match node.["totalPeopleSuffix"] with
|
match node.["totalPeopleSuffix"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<System.String> () |> Some
|
| v -> v.AsValue().GetValue<string> () |> Some
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["totalPeopleInClasses"] with
|
(match node.["totalPeopleInClasses"] with
|
||||||
@@ -698,7 +697,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["totalPeopleInGym"] with
|
(match node.["totalPeopleInGym"] with
|
||||||
@@ -710,7 +709,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["description"] with
|
(match node.["description"] with
|
||||||
@@ -722,7 +721,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Description = arg_0
|
Description = arg_0
|
||||||
@@ -765,7 +764,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
(match node.["totalClasses"] with
|
(match node.["totalClasses"] with
|
||||||
@@ -777,7 +776,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["totalVisits"] with
|
(match node.["totalVisits"] with
|
||||||
@@ -789,7 +788,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["averageDuration"] with
|
(match node.["averageDuration"] with
|
||||||
@@ -801,7 +800,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["totalDuration"] with
|
(match node.["totalDuration"] with
|
||||||
@@ -813,7 +812,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
TotalDuration = arg_0
|
TotalDuration = arg_0
|
||||||
@@ -840,7 +839,7 @@ module SessionsAggregate =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["Visits"] with
|
(match node.["Visits"] with
|
||||||
@@ -852,7 +851,7 @@ module SessionsAggregate =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["Activities"] with
|
(match node.["Activities"] with
|
||||||
@@ -864,7 +863,7 @@ module SessionsAggregate =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Activities = arg_0
|
Activities = arg_0
|
||||||
@@ -888,7 +887,7 @@ module VisitGym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["Name"] with
|
(match node.["Name"] with
|
||||||
@@ -900,7 +899,7 @@ module VisitGym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["Id"] with
|
(match node.["Id"] with
|
||||||
@@ -912,7 +911,7 @@ module VisitGym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Id = arg_0
|
Id = arg_0
|
||||||
@@ -948,7 +947,7 @@ module Visit =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["StartTime"] with
|
(match node.["StartTime"] with
|
||||||
@@ -973,7 +972,7 @@ module Visit =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
IsDurationEstimated = arg_0
|
IsDurationEstimated = arg_0
|
||||||
|
@@ -302,7 +302,7 @@ module PureGymApi =
|
|||||||
v.AsObject ()
|
v.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key)
|
let key = (kvp.Key)
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> Map.ofSeq
|
|> Map.ofSeq
|
||||||
|
@@ -136,7 +136,7 @@ module JsonRecordTypeWithBothJsonSerializeExtension =
|
|||||||
)
|
)
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"arr",
|
"f",
|
||||||
(fun field ->
|
(fun field ->
|
||||||
let arr = System.Text.Json.Nodes.JsonArray ()
|
let arr = System.Text.Json.Nodes.JsonArray ()
|
||||||
|
|
||||||
@@ -145,21 +145,9 @@ module JsonRecordTypeWithBothJsonSerializeExtension =
|
|||||||
|
|
||||||
arr
|
arr
|
||||||
)
|
)
|
||||||
input.Arr
|
input.F
|
||||||
)
|
)
|
||||||
|
|
||||||
node.Add ("byte", System.Text.Json.Nodes.JsonValue.Create<byte<measure>> input.Byte)
|
|
||||||
node.Add ("sbyte", System.Text.Json.Nodes.JsonValue.Create<sbyte<measure>> input.Sbyte)
|
|
||||||
node.Add ("i", System.Text.Json.Nodes.JsonValue.Create<int<measure>> input.I)
|
|
||||||
node.Add ("i32", System.Text.Json.Nodes.JsonValue.Create<int32<measure>> input.I32)
|
|
||||||
node.Add ("i64", System.Text.Json.Nodes.JsonValue.Create<int64<measure>> input.I64)
|
|
||||||
node.Add ("u", System.Text.Json.Nodes.JsonValue.Create<uint<measure>> input.U)
|
|
||||||
node.Add ("u32", System.Text.Json.Nodes.JsonValue.Create<uint32<measure>> input.U32)
|
|
||||||
node.Add ("u64", System.Text.Json.Nodes.JsonValue.Create<uint64<measure>> input.U64)
|
|
||||||
node.Add ("f", System.Text.Json.Nodes.JsonValue.Create<float<measure>> input.F)
|
|
||||||
node.Add ("f32", System.Text.Json.Nodes.JsonValue.Create<float32<measure>> input.F32)
|
|
||||||
node.Add ("single", System.Text.Json.Nodes.JsonValue.Create<single<measure>> input.Single)
|
|
||||||
|
|
||||||
node :> _
|
node :> _
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
|
|
||||||
@@ -233,7 +221,7 @@ module InnerTypeWithBothJsonParseExtension =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key) |> System.Uri
|
let key = (kvp.Key) |> System.Uri
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.Boolean> ()
|
let value = (kvp.Value).AsValue().GetValue<bool> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> dict
|
|> dict
|
||||||
@@ -307,33 +295,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
|
|
||||||
/// Parse from a JSON node.
|
/// Parse from a JSON node.
|
||||||
static member jsonParse (node : System.Text.Json.Nodes.JsonNode) : JsonRecordTypeWithBoth =
|
static member jsonParse (node : System.Text.Json.Nodes.JsonNode) : JsonRecordTypeWithBoth =
|
||||||
let arg_16 =
|
let arg_5 =
|
||||||
(match node.["single"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("single")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Single> ()
|
|
||||||
|> LanguagePrimitives.Float32WithMeasure
|
|
||||||
|
|
||||||
let arg_15 =
|
|
||||||
(match node.["f32"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("f32")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Single> ()
|
|
||||||
|> LanguagePrimitives.Float32WithMeasure
|
|
||||||
|
|
||||||
let arg_14 =
|
|
||||||
(match node.["f"] with
|
(match node.["f"] with
|
||||||
| null ->
|
| null ->
|
||||||
raise (
|
raise (
|
||||||
@@ -341,126 +303,9 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
sprintf "Required key '%s' not found on JSON object" ("f")
|
sprintf "Required key '%s' not found on JSON object" ("f")
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Double> ()
|
|
||||||
|> LanguagePrimitives.FloatWithMeasure
|
|
||||||
|
|
||||||
let arg_13 =
|
|
||||||
(match node.["u64"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("u64")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.UInt64> ()
|
|
||||||
|> LanguagePrimitives.UInt64WithMeasure
|
|
||||||
|
|
||||||
let arg_12 =
|
|
||||||
(match node.["u32"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("u32")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.UInt32> ()
|
|
||||||
|> LanguagePrimitives.UInt32WithMeasure
|
|
||||||
|
|
||||||
let arg_11 =
|
|
||||||
(match node.["u"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("u")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.UInt32> ()
|
|
||||||
|> LanguagePrimitives.UInt32WithMeasure
|
|
||||||
|
|
||||||
let arg_10 =
|
|
||||||
(match node.["i64"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("i64")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Int64> ()
|
|
||||||
|> LanguagePrimitives.Int64WithMeasure
|
|
||||||
|
|
||||||
let arg_9 =
|
|
||||||
(match node.["i32"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("i32")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Int32> ()
|
|
||||||
|> LanguagePrimitives.Int32WithMeasure
|
|
||||||
|
|
||||||
let arg_8 =
|
|
||||||
(match node.["i"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("i")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Int32> ()
|
|
||||||
|> LanguagePrimitives.Int32WithMeasure
|
|
||||||
|
|
||||||
let arg_7 =
|
|
||||||
(match node.["sbyte"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("sbyte")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.SByte> ()
|
|
||||||
|> LanguagePrimitives.SByteWithMeasure
|
|
||||||
|
|
||||||
let arg_6 =
|
|
||||||
(match node.["byte"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("byte")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
|
||||||
.AsValue()
|
|
||||||
.GetValue<System.Byte> ()
|
|
||||||
|> LanguagePrimitives.ByteWithMeasure
|
|
||||||
|
|
||||||
let arg_5 =
|
|
||||||
(match node.["arr"] with
|
|
||||||
| null ->
|
|
||||||
raise (
|
|
||||||
System.Collections.Generic.KeyNotFoundException (
|
|
||||||
sprintf "Required key '%s' not found on JSON object" ("arr")
|
|
||||||
)
|
|
||||||
)
|
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
@@ -473,7 +318,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
@@ -498,7 +343,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
@@ -511,7 +356,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["a"] with
|
(match node.["a"] with
|
||||||
@@ -523,7 +368,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
A = arg_0
|
A = arg_0
|
||||||
@@ -531,18 +376,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
C = arg_2
|
C = arg_2
|
||||||
D = arg_3
|
D = arg_3
|
||||||
E = arg_4
|
E = arg_4
|
||||||
Arr = arg_5
|
F = arg_5
|
||||||
Byte = arg_6
|
|
||||||
Sbyte = arg_7
|
|
||||||
I = arg_8
|
|
||||||
I32 = arg_9
|
|
||||||
I64 = arg_10
|
|
||||||
U = arg_11
|
|
||||||
U32 = arg_12
|
|
||||||
U64 = arg_13
|
|
||||||
F = arg_14
|
|
||||||
F32 = arg_15
|
|
||||||
Single = arg_16
|
|
||||||
}
|
}
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
|
|
||||||
@@ -588,7 +422,7 @@ module FirstDuJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
)
|
)
|
||||||
| "case2" ->
|
| "case2" ->
|
||||||
let node =
|
let node =
|
||||||
@@ -621,6 +455,6 @@ module FirstDuJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
)
|
)
|
||||||
| v -> failwith ("Unrecognised 'type' field value: " + v)
|
| v -> failwith ("Unrecognised 'type' field value: " + v)
|
||||||
|
@@ -22,7 +22,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_9 =
|
let arg_9 =
|
||||||
(match node.["orphan"] with
|
(match node.["orphan"] with
|
||||||
@@ -34,7 +34,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_8 =
|
let arg_8 =
|
||||||
(match node.["entity_id"] with
|
(match node.["entity_id"] with
|
||||||
@@ -46,7 +46,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_7 =
|
let arg_7 =
|
||||||
(match node.["token_type"] with
|
(match node.["token_type"] with
|
||||||
@@ -58,7 +58,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_6 =
|
let arg_6 =
|
||||||
(match node.["renewable"] with
|
(match node.["renewable"] with
|
||||||
@@ -70,7 +70,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_5 =
|
let arg_5 =
|
||||||
(match node.["lease_duration"] with
|
(match node.["lease_duration"] with
|
||||||
@@ -82,7 +82,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
(match node.["identity_policies"] with
|
(match node.["identity_policies"] with
|
||||||
@@ -94,7 +94,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
@@ -107,7 +107,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
@@ -120,7 +120,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
@@ -133,7 +133,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["client_token"] with
|
(match node.["client_token"] with
|
||||||
@@ -145,7 +145,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
ClientToken = arg_0
|
ClientToken = arg_0
|
||||||
@@ -189,7 +189,7 @@ module JwtVaultResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["renewable"] with
|
(match node.["renewable"] with
|
||||||
@@ -201,7 +201,7 @@ module JwtVaultResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["lease_id"] with
|
(match node.["lease_id"] with
|
||||||
@@ -213,7 +213,7 @@ module JwtVaultResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["request_id"] with
|
(match node.["request_id"] with
|
||||||
@@ -225,7 +225,7 @@ module JwtVaultResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
RequestId = arg_0
|
RequestId = arg_0
|
||||||
@@ -271,7 +271,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key)
|
let key = (kvp.Key)
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.Int32> ()
|
let value = (kvp.Value).AsValue().GetValue<int> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> Map.ofSeq
|
|> Map.ofSeq
|
||||||
@@ -288,7 +288,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key) |> System.Uri
|
let key = (kvp.Key) |> System.Uri
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> dict
|
|> dict
|
||||||
@@ -305,7 +305,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key) |> System.Uri
|
let key = (kvp.Key) |> System.Uri
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> readOnlyDict
|
|> readOnlyDict
|
||||||
@@ -322,7 +322,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key)
|
let key = (kvp.Key)
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> Map.ofSeq
|
|> Map.ofSeq
|
||||||
@@ -339,7 +339,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key)
|
let key = (kvp.Key)
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> Seq.map System.Collections.Generic.KeyValuePair
|
|> Seq.map System.Collections.Generic.KeyValuePair
|
||||||
@@ -357,7 +357,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key)
|
let key = (kvp.Key)
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> dict
|
|> dict
|
||||||
@@ -374,7 +374,7 @@ module JwtSecretResponse =
|
|||||||
.AsObject ()
|
.AsObject ()
|
||||||
|> Seq.map (fun kvp ->
|
|> Seq.map (fun kvp ->
|
||||||
let key = (kvp.Key)
|
let key = (kvp.Key)
|
||||||
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
let value = (kvp.Value).AsValue().GetValue<string> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> readOnlyDict
|
|> readOnlyDict
|
||||||
@@ -389,7 +389,7 @@ module JwtSecretResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Int32> ()
|
.GetValue<int> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["renewable"] with
|
(match node.["renewable"] with
|
||||||
@@ -401,7 +401,7 @@ module JwtSecretResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.Boolean> ()
|
.GetValue<bool> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["lease_id"] with
|
(match node.["lease_id"] with
|
||||||
@@ -413,7 +413,7 @@ module JwtSecretResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["request_id"] with
|
(match node.["request_id"] with
|
||||||
@@ -425,7 +425,7 @@ module JwtSecretResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<System.String> ()
|
.GetValue<string> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
RequestId = arg_0
|
RequestId = arg_0
|
||||||
|
@@ -29,28 +29,6 @@ type JsonRecordType =
|
|||||||
F : int[]
|
F : int[]
|
||||||
}
|
}
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse>]
|
|
||||||
type internal InternalTypeNotExtension =
|
|
||||||
{
|
|
||||||
[<JsonPropertyName(Literals.something)>]
|
|
||||||
InternalThing : string
|
|
||||||
}
|
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonSerialize>]
|
|
||||||
type internal InternalTypeNotExtensionSerial =
|
|
||||||
{
|
|
||||||
[<JsonPropertyName(Literals.something)>]
|
|
||||||
InternalThing2 : string
|
|
||||||
}
|
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse true>]
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
|
||||||
type internal InternalTypeExtension =
|
|
||||||
{
|
|
||||||
[<JsonPropertyName(Literals.something)>]
|
|
||||||
ExternalThing : string
|
|
||||||
}
|
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse true>]
|
[<WoofWare.Myriad.Plugins.JsonParse true>]
|
||||||
type ToGetExtensionMethod =
|
type ToGetExtensionMethod =
|
||||||
{
|
{
|
||||||
|
@@ -19,16 +19,13 @@ type GymAccessOptions =
|
|||||||
QrCodeAccess : bool
|
QrCodeAccess : bool
|
||||||
}
|
}
|
||||||
|
|
||||||
[<Measure>]
|
|
||||||
type measure
|
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse>]
|
[<WoofWare.Myriad.Plugins.JsonParse>]
|
||||||
type GymLocation =
|
type GymLocation =
|
||||||
{
|
{
|
||||||
[<JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)>]
|
[<JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)>]
|
||||||
Longitude : float
|
Longitude : float
|
||||||
[<JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)>]
|
[<JsonNumberHandling(JsonNumberHandling.AllowReadingFromString)>]
|
||||||
Latitude : float<measure>
|
Latitude : float
|
||||||
}
|
}
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse>]
|
[<WoofWare.Myriad.Plugins.JsonParse>]
|
||||||
|
@@ -16,9 +16,6 @@ type InnerTypeWithBoth =
|
|||||||
ConcreteDict : Dictionary<string, InnerTypeWithBoth>
|
ConcreteDict : Dictionary<string, InnerTypeWithBoth>
|
||||||
}
|
}
|
||||||
|
|
||||||
[<Measure>]
|
|
||||||
type measure
|
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse true>]
|
[<WoofWare.Myriad.Plugins.JsonParse true>]
|
||||||
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
||||||
type JsonRecordTypeWithBoth =
|
type JsonRecordTypeWithBoth =
|
||||||
@@ -28,18 +25,7 @@ type JsonRecordTypeWithBoth =
|
|||||||
C : int list
|
C : int list
|
||||||
D : InnerTypeWithBoth
|
D : InnerTypeWithBoth
|
||||||
E : string array
|
E : string array
|
||||||
Arr : int[]
|
F : int[]
|
||||||
Byte : byte<measure>
|
|
||||||
Sbyte : sbyte<measure>
|
|
||||||
I : int<measure>
|
|
||||||
I32 : int32<measure>
|
|
||||||
I64 : int64<measure>
|
|
||||||
U : uint<measure>
|
|
||||||
U32 : uint32<measure>
|
|
||||||
U64 : uint64<measure>
|
|
||||||
F : float<measure>
|
|
||||||
F32 : float32<measure>
|
|
||||||
Single : single<measure>
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
||||||
|
@@ -10,10 +10,19 @@
|
|||||||
<WarnOn>FS3388,FS3559</WarnOn>
|
<WarnOn>FS3388,FS3559</WarnOn>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.139" PrivateAssets="all"/>
|
<PackageReference Include="Nerdbank.GitVersioning" Version="3.6.133" PrivateAssets="all"/>
|
||||||
|
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All"/>
|
||||||
<SourceLinkGitHubHost Include="github.com" ContentUrl="https://raw.githubusercontent.com"/>
|
<SourceLinkGitHubHost Include="github.com" ContentUrl="https://raw.githubusercontent.com"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<PropertyGroup Condition="'$(GITHUB_ACTION)' != ''">
|
<!--
|
||||||
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
|
SourceLink doesn't support F# deterministic builds out of the box,
|
||||||
</PropertyGroup>
|
so tell SourceLink that our source root is going to be remapped.
|
||||||
|
-->
|
||||||
|
<Target Name="MapSourceRoot" BeforeTargets="_GenerateSourceLinkFile" Condition="'$(SourceRootMappedPathsFeatureSupported)' != 'true'">
|
||||||
|
<ItemGroup>
|
||||||
|
<SourceRoot Update="@(SourceRoot)">
|
||||||
|
<MappedPath>Z:\CheckoutRoot\WoofWare.Myriad\</MappedPath>
|
||||||
|
</SourceRoot>
|
||||||
|
</ItemGroup>
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
19
README.md
19
README.md
@@ -8,20 +8,23 @@
|
|||||||
|
|
||||||
Some helpers in [Myriad](https://github.com/MoiraeSoftware/myriad/) which might be useful.
|
Some helpers in [Myriad](https://github.com/MoiraeSoftware/myriad/) which might be useful.
|
||||||
|
|
||||||
Currently implemented:
|
These are currently somewhat experimental, and I personally am their primary customer.
|
||||||
|
The `RemoveOptions` generator in particular is extremely half-baked.
|
||||||
* `JsonParse` (to stamp out `jsonParse : JsonNode -> 'T` methods).
|
|
||||||
* `JsonSerialize` (to stamp out `toJsonNode : 'T -> JsonNode` methods).
|
|
||||||
* `HttpClient` (to stamp out a [RestEase](https://github.com/canton7/RestEase)-style HTTP client).
|
|
||||||
* `GenerateMock` (to stamp out a record type corresponding to an interface, like a compile-time [Foq](https://github.com/fsprojects/Foq)).
|
|
||||||
* `CreateCatamorphism` (to stamp out a non-stack-overflowing [catamorphism](https://fsharpforfunandprofit.com/posts/recursive-types-and-folds/) for a discriminated union).
|
|
||||||
* `RemoveOptions` (to strip `option` modifiers from a type) - this one is particularly half-baked!
|
|
||||||
|
|
||||||
If you would like to ensure that your particular use-case remains unbroken, please do contribute tests to this repository.
|
If you would like to ensure that your particular use-case remains unbroken, please do contribute tests to this repository.
|
||||||
The `ConsumePlugin` assembly contains a number of invocations of these source generators,
|
The `ConsumePlugin` assembly contains a number of invocations of these source generators,
|
||||||
so you just need to add copies of your types to that assembly to ensure that I will at least notice if I break the build;
|
so you just need to add copies of your types to that assembly to ensure that I will at least notice if I break the build;
|
||||||
and if you add tests to `WoofWare.Myriad.Plugins.Test` then I will also notice if I break the runtime semantics of the generated code.
|
and if you add tests to `WoofWare.Myriad.Plugins.Test` then I will also notice if I break the runtime semantics of the generated code.
|
||||||
|
|
||||||
|
Currently implemented:
|
||||||
|
|
||||||
|
* `JsonParse` (to stamp out `jsonParse : JsonNode -> 'T` methods);
|
||||||
|
* `JsonSerialize` (to stamp out `toJsonNode : 'T -> JsonNode` methods);
|
||||||
|
* `RemoveOptions` (to strip `option` modifiers from a type).
|
||||||
|
* `HttpClient` (to stamp out a [RestEase](https://github.com/canton7/RestEase)-style HTTP client).
|
||||||
|
* `GenerateMock` (to stamp out a record type corresponding to an interface).
|
||||||
|
* `CreateCatamorphism` (to stamp out a non-stack-overflowing [catamorphism](https://fsharpforfunandprofit.com/posts/recursive-types-and-folds/) for a discriminated union).
|
||||||
|
|
||||||
## `JsonParse`
|
## `JsonParse`
|
||||||
|
|
||||||
Takes records like this:
|
Takes records like this:
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ApiSurface" Version="4.0.41" />
|
<PackageReference Include="ApiSurface" Version="4.0.40" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0"/>
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0"/>
|
||||||
<PackageReference Include="NUnit" Version="4.1.0"/>
|
<PackageReference Include="NUnit" Version="4.1.0"/>
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
|
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
|
||||||
|
@@ -58,7 +58,7 @@ module PureGymDtos =
|
|||||||
[
|
[
|
||||||
"""{"latitude": 1.0, "longitude": 3.0}""",
|
"""{"latitude": 1.0, "longitude": 3.0}""",
|
||||||
{
|
{
|
||||||
GymLocation.Latitude = 1.0<measure>
|
GymLocation.Latitude = 1.0
|
||||||
Longitude = 3.0
|
Longitude = 3.0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -96,7 +96,7 @@ module PureGymDtos =
|
|||||||
Location =
|
Location =
|
||||||
{
|
{
|
||||||
Longitude = -0.110252
|
Longitude = -0.110252
|
||||||
Latitude = 51.480401<measure>
|
Latitude = 51.480401
|
||||||
}
|
}
|
||||||
TimeZone = "Europe/London"
|
TimeZone = "Europe/London"
|
||||||
ReopenDate = "2021-04-12T00:00:00+01 Europe/London"
|
ReopenDate = "2021-04-12T00:00:00+01 Europe/London"
|
||||||
|
@@ -77,18 +77,7 @@ module TestJsonSerde =
|
|||||||
let! depth = Gen.choose (0, 2)
|
let! depth = Gen.choose (0, 2)
|
||||||
let! d = innerGen depth
|
let! d = innerGen depth
|
||||||
let! e = Gen.arrayOf Arb.generate<NonNull<string>>
|
let! e = Gen.arrayOf Arb.generate<NonNull<string>>
|
||||||
let! arr = Gen.arrayOf Arb.generate<int>
|
let! f = Gen.arrayOf Arb.generate<int>
|
||||||
let! byte = Arb.generate
|
|
||||||
let! sbyte = Arb.generate
|
|
||||||
let! i = Arb.generate
|
|
||||||
let! i32 = Arb.generate
|
|
||||||
let! i64 = Arb.generate
|
|
||||||
let! u = Arb.generate
|
|
||||||
let! u32 = Arb.generate
|
|
||||||
let! u64 = Arb.generate
|
|
||||||
let! f = Arb.generate |> Gen.filter (fun s -> Double.IsFinite (s / 1.0<measure>))
|
|
||||||
let! f32 = Arb.generate |> Gen.filter (fun s -> Single.IsFinite (s / 1.0f<measure>))
|
|
||||||
let! single = Arb.generate |> Gen.filter (fun s -> Single.IsFinite (s / 1.0f<measure>))
|
|
||||||
|
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
@@ -97,18 +86,7 @@ module TestJsonSerde =
|
|||||||
C = c
|
C = c
|
||||||
D = d
|
D = d
|
||||||
E = e |> Array.map _.Get
|
E = e |> Array.map _.Get
|
||||||
Arr = arr
|
|
||||||
Byte = byte
|
|
||||||
Sbyte = sbyte
|
|
||||||
I = i
|
|
||||||
I32 = i32
|
|
||||||
I64 = i64
|
|
||||||
U = u
|
|
||||||
U32 = u32
|
|
||||||
U64 = u64
|
|
||||||
F = f
|
F = f
|
||||||
F32 = f32
|
|
||||||
Single = single
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +140,8 @@ module TestJsonSerde =
|
|||||||
}
|
}
|
||||||
|
|
||||||
let sanitiseRec (r : JsonRecordTypeWithBoth) : JsonRecordTypeWithBoth =
|
let sanitiseRec (r : JsonRecordTypeWithBoth) : JsonRecordTypeWithBoth =
|
||||||
{ r with
|
{
|
||||||
|
A = r.A
|
||||||
B = if isNull r.B then "<null>" else r.B
|
B = if isNull r.B then "<null>" else r.B
|
||||||
C =
|
C =
|
||||||
if Object.ReferenceEquals (r.C, (null : obj)) then
|
if Object.ReferenceEquals (r.C, (null : obj)) then
|
||||||
@@ -171,11 +150,11 @@ module TestJsonSerde =
|
|||||||
r.C
|
r.C
|
||||||
D = sanitiseInner r.D
|
D = sanitiseInner r.D
|
||||||
E = if isNull r.E then [||] else r.E
|
E = if isNull r.E then [||] else r.E
|
||||||
Arr =
|
F =
|
||||||
if Object.ReferenceEquals (r.Arr, (null : obj)) then
|
if Object.ReferenceEquals (r.F, (null : obj)) then
|
||||||
[||]
|
[||]
|
||||||
else
|
else
|
||||||
r.Arr
|
r.F
|
||||||
}
|
}
|
||||||
|
|
||||||
let duGen =
|
let duGen =
|
||||||
|
@@ -12,8 +12,7 @@ module TestSurface =
|
|||||||
let ``Ensure API surface has not been modified`` () = ApiSurface.assertIdentical assembly
|
let ``Ensure API surface has not been modified`` () = ApiSurface.assertIdentical assembly
|
||||||
|
|
||||||
[<Test>]
|
[<Test>]
|
||||||
// https://github.com/nunit/nunit3-vs-adapter/issues/876
|
let ``Check version against remote`` () =
|
||||||
let CheckVersionAgainstRemote () =
|
|
||||||
MonotonicVersion.validate assembly "WoofWare.Myriad.Plugins"
|
MonotonicVersion.validate assembly "WoofWare.Myriad.Plugins"
|
||||||
|
|
||||||
[<Test ; Explicit>]
|
[<Test ; Explicit>]
|
||||||
|
@@ -33,7 +33,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ApiSurface" Version="4.0.41"/>
|
<PackageReference Include="ApiSurface" Version="4.0.40"/>
|
||||||
<PackageReference Include="FsCheck" Version="2.16.6"/>
|
<PackageReference Include="FsCheck" Version="2.16.6"/>
|
||||||
<PackageReference Include="FsUnit" Version="6.0.0"/>
|
<PackageReference Include="FsUnit" Version="6.0.0"/>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0"/>
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0"/>
|
||||||
|
@@ -43,14 +43,9 @@ module internal InterfaceMockGenerator =
|
|||||||
)
|
)
|
||||||
|> Set.ofSeq
|
|> Set.ofSeq
|
||||||
|
|
||||||
let failwithFun (SynField (_, _, idOpt, _, _, _, _, _, _)) =
|
let failwithFun =
|
||||||
let failString =
|
|
||||||
match idOpt with
|
|
||||||
| None -> SynExpr.CreateConst "Unimplemented mock function"
|
|
||||||
| Some ident -> SynExpr.CreateConst $"Unimplemented mock function: %s{ident.idText}"
|
|
||||||
|
|
||||||
SynExpr.createLongIdent [ "System" ; "NotImplementedException" ]
|
SynExpr.createLongIdent [ "System" ; "NotImplementedException" ]
|
||||||
|> SynExpr.applyTo failString
|
|> SynExpr.applyTo (SynExpr.CreateConst "Unimplemented mock function")
|
||||||
|> SynExpr.paren
|
|> SynExpr.paren
|
||||||
|> SynExpr.applyFunction (SynExpr.createIdent "raise")
|
|> SynExpr.applyFunction (SynExpr.createIdent "raise")
|
||||||
|> SynExpr.createLambda "_"
|
|> SynExpr.createLambda "_"
|
||||||
@@ -77,7 +72,7 @@ module internal InterfaceMockGenerator =
|
|||||||
|
|
||||||
let nonExtras =
|
let nonExtras =
|
||||||
fields
|
fields
|
||||||
|> List.map (fun field -> (SynLongIdent.createI (getName field), true), Some (failwithFun field))
|
|> List.map (fun field -> (SynLongIdent.createI (getName field), true), Some failwithFun)
|
||||||
|
|
||||||
extras @ nonExtras
|
extras @ nonExtras
|
||||||
|
|
||||||
|
@@ -106,8 +106,14 @@ module internal JsonParseGenerator =
|
|||||||
]
|
]
|
||||||
|> SynExpr.createMatch node
|
|> SynExpr.createMatch node
|
||||||
|
|
||||||
let dotParse (typeName : LongIdent) : LongIdent =
|
/// Given e.g. "float", returns "System.Double.Parse"
|
||||||
List.append typeName [ Ident.create "Parse" ]
|
let parseFunction (typeName : string) : LongIdent =
|
||||||
|
let qualified =
|
||||||
|
match Primitives.qualifyType typeName with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> failwith $"Could not recognise type %s{typeName} as a primitive."
|
||||||
|
|
||||||
|
List.append qualified [ Ident.create "Parse" ]
|
||||||
|
|
||||||
/// fun kvp -> let key = {key(kvp)} in let value = {value(kvp)} in (key, value))
|
/// fun kvp -> let key = {key(kvp)} in let value = {value(kvp)} in (key, value))
|
||||||
/// The inputs will be fed with appropriate SynExprs to apply them to the `kvp.Key` and `kvp.Value` args.
|
/// The inputs will be fed with appropriate SynExprs to apply them to the `kvp.Key` and `kvp.Value` args.
|
||||||
@@ -134,47 +140,6 @@ module internal JsonParseGenerator =
|
|||||||
failwithf
|
failwithf
|
||||||
$"Unable to parse the key type %+A{desiredType} of a JSON object. Keys are strings, and this plugin does not know how to convert to that from a string."
|
$"Unable to parse the key type %+A{desiredType} of a JSON object. Keys are strings, and this plugin does not know how to convert to that from a string."
|
||||||
|
|
||||||
let private parseNumberType
|
|
||||||
(options : JsonParseOption)
|
|
||||||
(propertyName : SynExpr option)
|
|
||||||
(node : SynExpr)
|
|
||||||
(typeName : LongIdent)
|
|
||||||
=
|
|
||||||
let basic = asValueGetValueIdent propertyName typeName node
|
|
||||||
|
|
||||||
match options.JsonNumberHandlingArg with
|
|
||||||
| None -> basic
|
|
||||||
| Some option ->
|
|
||||||
let cond =
|
|
||||||
SynExpr.DotGet (SynExpr.createIdent "exc", range0, SynLongIdent.createS "Message", range0)
|
|
||||||
|> SynExpr.callMethodArg "Contains" (SynExpr.CreateConst "cannot be converted to")
|
|
||||||
|
|
||||||
let handler =
|
|
||||||
asValueGetValue propertyName "string" node
|
|
||||||
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent' (typeName |> dotParse))
|
|
||||||
|> SynExpr.ifThenElse
|
|
||||||
(SynExpr.equals
|
|
||||||
option
|
|
||||||
(SynExpr.createLongIdent
|
|
||||||
[
|
|
||||||
"System"
|
|
||||||
"Text"
|
|
||||||
"Json"
|
|
||||||
"Serialization"
|
|
||||||
"JsonNumberHandling"
|
|
||||||
"AllowReadingFromString"
|
|
||||||
]))
|
|
||||||
SynExpr.reraise
|
|
||||||
|> SynExpr.ifThenElse cond SynExpr.reraise
|
|
||||||
|
|
||||||
basic
|
|
||||||
|> SynExpr.pipeThroughTryWith
|
|
||||||
(SynPat.IsInst (
|
|
||||||
SynType.LongIdent (SynLongIdent.createS' [ "System" ; "InvalidOperationException" ]),
|
|
||||||
range0
|
|
||||||
))
|
|
||||||
handler
|
|
||||||
|
|
||||||
/// Given `node.["town"]`, for example, choose how to obtain a JSON value from it.
|
/// Given `node.["town"]`, for example, choose how to obtain a JSON value from it.
|
||||||
/// The property name is used in error messages at runtime to show where a JSON
|
/// The property name is used in error messages at runtime to show where a JSON
|
||||||
/// parse error occurred; supply `None` to indicate "don't validate".
|
/// parse error occurred; supply `None` to indicate "don't validate".
|
||||||
@@ -203,7 +168,41 @@ module internal JsonParseGenerator =
|
|||||||
node
|
node
|
||||||
|> asValueGetValue propertyName "string"
|
|> asValueGetValue propertyName "string"
|
||||||
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent [ "System" ; "DateTime" ; "Parse" ])
|
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent [ "System" ; "DateTime" ; "Parse" ])
|
||||||
| NumberType typeName -> parseNumberType options propertyName node typeName
|
| NumberType typeName ->
|
||||||
|
let basic = asValueGetValue propertyName typeName node
|
||||||
|
|
||||||
|
match options.JsonNumberHandlingArg with
|
||||||
|
| None -> basic
|
||||||
|
| Some option ->
|
||||||
|
let cond =
|
||||||
|
SynExpr.DotGet (SynExpr.createIdent "exc", range0, SynLongIdent.createS "Message", range0)
|
||||||
|
|> SynExpr.callMethodArg "Contains" (SynExpr.CreateConst "cannot be converted to")
|
||||||
|
|
||||||
|
let handler =
|
||||||
|
asValueGetValue propertyName "string" node
|
||||||
|
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent' (parseFunction typeName))
|
||||||
|
|> SynExpr.ifThenElse
|
||||||
|
(SynExpr.equals
|
||||||
|
option
|
||||||
|
(SynExpr.createLongIdent
|
||||||
|
[
|
||||||
|
"System"
|
||||||
|
"Text"
|
||||||
|
"Json"
|
||||||
|
"Serialization"
|
||||||
|
"JsonNumberHandling"
|
||||||
|
"AllowReadingFromString"
|
||||||
|
]))
|
||||||
|
SynExpr.reraise
|
||||||
|
|> SynExpr.ifThenElse cond SynExpr.reraise
|
||||||
|
|
||||||
|
basic
|
||||||
|
|> SynExpr.pipeThroughTryWith
|
||||||
|
(SynPat.IsInst (
|
||||||
|
SynType.LongIdent (SynLongIdent.createS' [ "System" ; "InvalidOperationException" ]),
|
||||||
|
range0
|
||||||
|
))
|
||||||
|
handler
|
||||||
| PrimitiveType typeName -> asValueGetValueIdent propertyName typeName node
|
| PrimitiveType typeName -> asValueGetValueIdent propertyName typeName node
|
||||||
| OptionType ty ->
|
| OptionType ty ->
|
||||||
parseNode None options ty (SynExpr.createIdent "v")
|
parseNode None options ty (SynExpr.createIdent "v")
|
||||||
@@ -262,9 +261,6 @@ module internal JsonParseGenerator =
|
|||||||
|> SynExpr.callMethod "ToJsonString"
|
|> SynExpr.callMethod "ToJsonString"
|
||||||
|> SynExpr.paren
|
|> SynExpr.paren
|
||||||
|> SynExpr.applyFunction (SynExpr.createLongIdent [ "System" ; "Numerics" ; "BigInteger" ; "Parse" ])
|
|> SynExpr.applyFunction (SynExpr.createLongIdent [ "System" ; "Numerics" ; "BigInteger" ; "Parse" ])
|
||||||
| Measure (_measure, primType) ->
|
|
||||||
parseNumberType options propertyName node primType
|
|
||||||
|> SynExpr.pipeThroughFunction (Measure.getLanguagePrimitivesMeasure primType)
|
|
||||||
| _ ->
|
| _ ->
|
||||||
// Let's just hope that we've also got our own type annotation!
|
// Let's just hope that we've also got our own type annotation!
|
||||||
let typeName =
|
let typeName =
|
||||||
@@ -482,7 +478,7 @@ module internal JsonParseGenerator =
|
|||||||
let (SynTypeDefn (synComponentInfo, synTypeDefnRepr, _members, _implicitCtor, _, _)) =
|
let (SynTypeDefn (synComponentInfo, synTypeDefnRepr, _members, _implicitCtor, _, _)) =
|
||||||
typeDefn
|
typeDefn
|
||||||
|
|
||||||
let (SynComponentInfo (_attributes, _typeParams, _constraints, ident, _, _preferPostfix, access, _)) =
|
let (SynComponentInfo (_attributes, _typeParams, _constraints, ident, _, _preferPostfix, _access, _)) =
|
||||||
synComponentInfo
|
synComponentInfo
|
||||||
|
|
||||||
let attributes =
|
let attributes =
|
||||||
@@ -521,7 +517,6 @@ module internal JsonParseGenerator =
|
|||||||
let info =
|
let info =
|
||||||
SynComponentInfo.createLong moduleName
|
SynComponentInfo.createLong moduleName
|
||||||
|> SynComponentInfo.withDocString xmlDoc
|
|> SynComponentInfo.withDocString xmlDoc
|
||||||
|> SynComponentInfo.setAccessibility access
|
|
||||||
|> SynComponentInfo.addAttributes attributes
|
|> SynComponentInfo.addAttributes attributes
|
||||||
|
|
||||||
let decl =
|
let decl =
|
||||||
|
@@ -21,7 +21,6 @@ module internal JsonSerializeGenerator =
|
|||||||
| DateOnly
|
| DateOnly
|
||||||
| DateTime
|
| DateTime
|
||||||
| NumberType _
|
| NumberType _
|
||||||
| Measure _
|
|
||||||
| PrimitiveType _
|
| PrimitiveType _
|
||||||
| Guid
|
| Guid
|
||||||
| Uri ->
|
| Uri ->
|
||||||
@@ -324,7 +323,7 @@ module internal JsonSerializeGenerator =
|
|||||||
let (SynTypeDefn (synComponentInfo, synTypeDefnRepr, _members, _implicitCtor, _, _)) =
|
let (SynTypeDefn (synComponentInfo, synTypeDefnRepr, _members, _implicitCtor, _, _)) =
|
||||||
typeDefn
|
typeDefn
|
||||||
|
|
||||||
let (SynComponentInfo (_attributes, _typeParams, _constraints, ident, _, _preferPostfix, access, _)) =
|
let (SynComponentInfo (_attributes, _typeParams, _constraints, ident, _, _preferPostfix, _access, _)) =
|
||||||
synComponentInfo
|
synComponentInfo
|
||||||
|
|
||||||
let attributes =
|
let attributes =
|
||||||
@@ -363,7 +362,6 @@ module internal JsonSerializeGenerator =
|
|||||||
let info =
|
let info =
|
||||||
SynComponentInfo.createLong moduleName
|
SynComponentInfo.createLong moduleName
|
||||||
|> SynComponentInfo.addAttributes attributes
|
|> SynComponentInfo.addAttributes attributes
|
||||||
|> SynComponentInfo.setAccessibility access
|
|
||||||
|> SynComponentInfo.withDocString xmlDoc
|
|> SynComponentInfo.withDocString xmlDoc
|
||||||
|
|
||||||
let decls =
|
let decls =
|
||||||
|
@@ -1,24 +0,0 @@
|
|||||||
namespace WoofWare.Myriad.Plugins
|
|
||||||
|
|
||||||
open Fantomas.FCS.Syntax
|
|
||||||
|
|
||||||
[<RequireQualifiedAccess>]
|
|
||||||
module internal Measure =
|
|
||||||
|
|
||||||
let getLanguagePrimitivesMeasure (typeName : LongIdent) : SynExpr =
|
|
||||||
match typeName |> List.map _.idText with
|
|
||||||
| [ "System" ; "Single" ] -> [ "LanguagePrimitives" ; "Float32WithMeasure" ]
|
|
||||||
| [ "System" ; "Double" ] -> [ "LanguagePrimitives" ; "FloatWithMeasure" ]
|
|
||||||
| [ "System" ; "Byte" ] -> [ "LanguagePrimitives" ; "ByteWithMeasure" ]
|
|
||||||
| [ "System" ; "SByte" ] -> [ "LanguagePrimitives" ; "SByteWithMeasure" ]
|
|
||||||
| [ "System" ; "Int16" ] -> [ "LanguagePrimitives" ; "Int16WithMeasure" ]
|
|
||||||
| [ "System" ; "Int32" ] -> [ "LanguagePrimitives" ; "Int32WithMeasure" ]
|
|
||||||
| [ "System" ; "Int64" ] -> [ "LanguagePrimitives" ; "Int64WithMeasure" ]
|
|
||||||
| [ "System" ; "UInt16" ] -> [ "LanguagePrimitives" ; "UInt16WithMeasure" ]
|
|
||||||
| [ "System" ; "UInt32" ] -> [ "LanguagePrimitives" ; "UInt32WithMeasure" ]
|
|
||||||
| [ "System" ; "UInt64" ] -> [ "LanguagePrimitives" ; "UInt64WithMeasure" ]
|
|
||||||
| l ->
|
|
||||||
let l = String.concat "." l
|
|
||||||
failwith $"unrecognised type for measure: %s{l}"
|
|
||||||
|
|
||||||
|> SynExpr.createLongIdent
|
|
@@ -26,7 +26,5 @@ module internal Primitives =
|
|||||||
| "uint64" -> [ "System" ; "UInt64" ] |> Some
|
| "uint64" -> [ "System" ; "UInt64" ] |> Some
|
||||||
| "char" -> [ "System" ; "Char" ] |> Some
|
| "char" -> [ "System" ; "Char" ] |> Some
|
||||||
| "decimal" -> [ "System" ; "Decimal" ] |> Some
|
| "decimal" -> [ "System" ; "Decimal" ] |> Some
|
||||||
| "string" -> [ "System" ; "String" ] |> Some
|
|
||||||
| "bool" -> [ "System" ; "Boolean" ] |> Some
|
|
||||||
| _ -> None
|
| _ -> None
|
||||||
|> Option.map (List.map (fun i -> (Ident (i, range0))))
|
|> Option.map (List.map (fun i -> (Ident (i, range0))))
|
||||||
|
@@ -87,20 +87,6 @@ module internal SynExpr =
|
|||||||
)
|
)
|
||||||
|> applyTo b
|
|> applyTo b
|
||||||
|
|
||||||
/// {a} * {b}
|
|
||||||
let times (a : SynExpr) (b : SynExpr) =
|
|
||||||
SynExpr.CreateAppInfix (
|
|
||||||
SynExpr.CreateLongIdent (
|
|
||||||
SynLongIdent.SynLongIdent (
|
|
||||||
Ident.CreateLong "op_Multiply",
|
|
||||||
[],
|
|
||||||
[ Some (IdentTrivia.OriginalNotation "*") ]
|
|
||||||
)
|
|
||||||
),
|
|
||||||
a
|
|
||||||
)
|
|
||||||
|> applyTo b
|
|
||||||
|
|
||||||
let rec stripOptionalParen (expr : SynExpr) : SynExpr =
|
let rec stripOptionalParen (expr : SynExpr) : SynExpr =
|
||||||
match expr with
|
match expr with
|
||||||
| SynExpr.Paren (expr, _, _, _) -> stripOptionalParen expr
|
| SynExpr.Paren (expr, _, _, _) -> stripOptionalParen expr
|
||||||
|
@@ -193,30 +193,10 @@ module internal SynTypePatterns =
|
|||||||
match fieldType with
|
match fieldType with
|
||||||
| SynType.LongIdent ident ->
|
| SynType.LongIdent ident ->
|
||||||
match ident.LongIdent with
|
match ident.LongIdent with
|
||||||
| [ i ] ->
|
| [ i ] -> [ "string" ; "float" ; "int" ; "bool" ] |> List.tryFind (fun s -> s = i.idText)
|
||||||
// We won't bother with the case that the user has done e.g. `Single` (relying on `System` being open).
|
|
||||||
match Primitives.qualifyType i.idText with
|
|
||||||
| Some qualified ->
|
|
||||||
match i.idText with
|
|
||||||
| "char"
|
|
||||||
| "string" -> None
|
|
||||||
| _ -> Some qualified
|
|
||||||
| None -> None
|
|
||||||
| _ -> None
|
| _ -> None
|
||||||
| _ -> None
|
| _ -> None
|
||||||
|
|
||||||
/// Returns the name of the measure, and the outer type.
|
|
||||||
let (|Measure|_|) (fieldType : SynType) : (Ident * LongIdent) option =
|
|
||||||
match fieldType with
|
|
||||||
| SynType.App (NumberType outer,
|
|
||||||
_,
|
|
||||||
[ SynType.LongIdent (SynLongIdent.SynLongIdent ([ ident ], _, _)) ],
|
|
||||||
_,
|
|
||||||
_,
|
|
||||||
_,
|
|
||||||
_) -> Some (ident, outer)
|
|
||||||
| _ -> None
|
|
||||||
|
|
||||||
let (|DateOnly|_|) (fieldType : SynType) =
|
let (|DateOnly|_|) (fieldType : SynType) =
|
||||||
match fieldType with
|
match fieldType with
|
||||||
| SynType.LongIdent (SynLongIdent.SynLongIdent (ident, _, _)) ->
|
| SynType.LongIdent (SynLongIdent.SynLongIdent (ident, _, _)) ->
|
||||||
|
@@ -46,7 +46,6 @@
|
|||||||
<Compile Include="SynExpr\SynAttribute.fs" />
|
<Compile Include="SynExpr\SynAttribute.fs" />
|
||||||
<Compile Include="SynExpr\SynModuleDecl.fs" />
|
<Compile Include="SynExpr\SynModuleDecl.fs" />
|
||||||
<Compile Include="SynExpr\SynModuleOrNamespace.fs" />
|
<Compile Include="SynExpr\SynModuleOrNamespace.fs" />
|
||||||
<Compile Include="Measure.fs" />
|
|
||||||
<Compile Include="AstHelper.fs" />
|
<Compile Include="AstHelper.fs" />
|
||||||
<Compile Include="RemoveOptionsGenerator.fs"/>
|
<Compile Include="RemoveOptionsGenerator.fs"/>
|
||||||
<Compile Include="InterfaceMockGenerator.fs"/>
|
<Compile Include="InterfaceMockGenerator.fs"/>
|
||||||
|
@@ -4,11 +4,10 @@
|
|||||||
"^refs/heads/main$"
|
"^refs/heads/main$"
|
||||||
],
|
],
|
||||||
"pathFilters": [
|
"pathFilters": [
|
||||||
"./",
|
":/",
|
||||||
":/WoofWare.Myriad.Plugins.Attributes",
|
":^WoofWare.Myriad.Plugins.Test/",
|
||||||
"^:/WoofWare.Myriad.Plugins.Attributes/WoofWare.Myriad.Plugins.Attributes.Test",
|
":^WoofWare.Myriad.Plugins.Attributes/Test/",
|
||||||
":/global.json",
|
":^/.github/",
|
||||||
":/README.md",
|
":^/CHANGELOG.md"
|
||||||
":/Directory.Build.props"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
27
nix/deps.nix
27
nix/deps.nix
@@ -3,13 +3,13 @@
|
|||||||
{fetchNuGet}: [
|
{fetchNuGet}: [
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "ApiSurface";
|
pname = "ApiSurface";
|
||||||
version = "4.0.41";
|
version = "4.0.40";
|
||||||
sha256 = "03kfa5ngmgkik9lc58sp8s9rrh9g40hhgjnrv662ks0d0y2i9i89";
|
sha256 = "1c9z0b6minlripwrjmv4yd5w8zj4lcpak4x41izh7ygx8kgmbvx0";
|
||||||
})
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "fantomas";
|
pname = "fantomas";
|
||||||
version = "6.3.9";
|
version = "6.3.4";
|
||||||
sha256 = "1b34iiiff02bbzjv03zyna8xmrgs6y87zdvp5i5k58fcqpjw44sx";
|
sha256 = "1bf57pzvl0i1bgic2vf08mqlzzbd5kys1ip9klrhm4f155ksm9fm";
|
||||||
})
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "Fantomas.Core";
|
pname = "Fantomas.Core";
|
||||||
@@ -76,6 +76,11 @@
|
|||||||
version = "6.0.26";
|
version = "6.0.26";
|
||||||
sha256 = "02src68hd3213sd1a2ms1my7i92knfmdxclvv90il9cky2zsq8kw";
|
sha256 = "02src68hd3213sd1a2ms1my7i92knfmdxclvv90il9cky2zsq8kw";
|
||||||
})
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "Microsoft.Build.Tasks.Git";
|
||||||
|
version = "8.0.0";
|
||||||
|
sha256 = "0055f69q3hbagqp8gl3nk0vfn4qyqyxsxyy7pd0g7wm3z28byzmx";
|
||||||
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "Microsoft.CodeCoverage";
|
pname = "Microsoft.CodeCoverage";
|
||||||
version = "17.10.0";
|
version = "17.10.0";
|
||||||
@@ -151,6 +156,16 @@
|
|||||||
version = "1.1.3";
|
version = "1.1.3";
|
||||||
sha256 = "05smkcyxir59rgrmp7d6327vvrlacdgldfxhmyr1azclvga1zfsq";
|
sha256 = "05smkcyxir59rgrmp7d6327vvrlacdgldfxhmyr1azclvga1zfsq";
|
||||||
})
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "Microsoft.SourceLink.Common";
|
||||||
|
version = "8.0.0";
|
||||||
|
sha256 = "0xrr8yd34ij7dqnyddkp2awfmf9qn3c89xmw2f3npaa4wnajmx81";
|
||||||
|
})
|
||||||
|
(fetchNuGet {
|
||||||
|
pname = "Microsoft.SourceLink.GitHub";
|
||||||
|
version = "8.0.0";
|
||||||
|
sha256 = "1gdx7n45wwia3yvang3ls92sk3wrymqcx9p349j8wba2lyjf9m44";
|
||||||
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "Microsoft.TestPlatform.ObjectModel";
|
pname = "Microsoft.TestPlatform.ObjectModel";
|
||||||
version = "17.10.0";
|
version = "17.10.0";
|
||||||
@@ -173,8 +188,8 @@
|
|||||||
})
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "Nerdbank.GitVersioning";
|
pname = "Nerdbank.GitVersioning";
|
||||||
version = "3.6.139";
|
version = "3.6.133";
|
||||||
sha256 = "0npcryhq3r0c2zi940jk39h13mzc4hyg7z8gm6jdmxi1aqv1vh8c";
|
sha256 = "1cdw8krvsnx0n34f7fm5hiiy7bs6h3asvncqcikc0g46l50w2j80";
|
||||||
})
|
})
|
||||||
(fetchNuGet {
|
(fetchNuGet {
|
||||||
pname = "NETStandard.Library";
|
pname = "NETStandard.Library";
|
||||||
|
Reference in New Issue
Block a user