mirror of
https://github.com/Smaug123/WoofWare.Myriad
synced 2025-10-08 13:38:39 +00:00
Compare commits
4 Commits
WoofWare.M
...
WoofWare.M
Author | SHA1 | Date | |
---|---|---|---|
|
6a81513a93 | ||
|
ba31689145 | ||
|
85929d49d5 | ||
|
db4694f6e7 |
8
.github/workflows/dotnet.yaml
vendored
8
.github/workflows/dotnet.yaml
vendored
@@ -236,7 +236,7 @@ jobs:
|
|||||||
name: nuget-package-attribute
|
name: nuget-package-attribute
|
||||||
path: packed
|
path: packed
|
||||||
- name: Attest Build Provenance
|
- name: Attest Build Provenance
|
||||||
uses: actions/attest-build-provenance@897ed5eab6ed058a474202017ada7f40bfa52940 # v1.0.0
|
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
||||||
with:
|
with:
|
||||||
subject-path: "packed/*.nupkg"
|
subject-path: "packed/*.nupkg"
|
||||||
|
|
||||||
@@ -255,7 +255,7 @@ jobs:
|
|||||||
name: nuget-package-plugin
|
name: nuget-package-plugin
|
||||||
path: packed
|
path: packed
|
||||||
- name: Attest Build Provenance
|
- name: Attest Build Provenance
|
||||||
uses: actions/attest-build-provenance@897ed5eab6ed058a474202017ada7f40bfa52940 # v1.0.0
|
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
||||||
with:
|
with:
|
||||||
subject-path: "packed/*.nupkg"
|
subject-path: "packed/*.nupkg"
|
||||||
|
|
||||||
@@ -297,7 +297,7 @@ jobs:
|
|||||||
run: 'bash ./.github/workflows/assert-contents.sh'
|
run: 'bash ./.github/workflows/assert-contents.sh'
|
||||||
- name: Attest Build Provenance
|
- name: Attest Build Provenance
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
if: steps.publish-success.outputs.result == 'published'
|
||||||
uses: actions/attest-build-provenance@897ed5eab6ed058a474202017ada7f40bfa52940 # v1.0.0
|
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
||||||
with:
|
with:
|
||||||
subject-path: "from-nuget.nupkg"
|
subject-path: "from-nuget.nupkg"
|
||||||
|
|
||||||
@@ -339,7 +339,7 @@ jobs:
|
|||||||
run: 'bash ./.github/workflows/assert-contents.sh'
|
run: 'bash ./.github/workflows/assert-contents.sh'
|
||||||
- name: Attest Build Provenance
|
- name: Attest Build Provenance
|
||||||
if: steps.publish-success.outputs.result == 'published'
|
if: steps.publish-success.outputs.result == 'published'
|
||||||
uses: actions/attest-build-provenance@897ed5eab6ed058a474202017ada7f40bfa52940 # v1.0.0
|
uses: actions/attest-build-provenance@bdd51370e0416ac948727f861e03c2f05d32d78e # v1.3.2
|
||||||
with:
|
with:
|
||||||
subject-path: "from-nuget.nupkg"
|
subject-path: "from-nuget.nupkg"
|
||||||
|
|
||||||
|
24
.gitignore
vendored
24
.gitignore
vendored
@@ -1,12 +1,12 @@
|
|||||||
bin/
|
bin/
|
||||||
obj/
|
obj/
|
||||||
/packages/
|
/packages/
|
||||||
riderModule.iml
|
riderModule.iml
|
||||||
/_ReSharper.Caches/
|
/_ReSharper.Caches/
|
||||||
.idea/
|
.idea/
|
||||||
*.sln.DotSettings.user
|
*.sln.DotSettings.user
|
||||||
.DS_Store
|
.DS_Store
|
||||||
result
|
result
|
||||||
.analyzerpackages/
|
.analyzerpackages/
|
||||||
analysis.sarif
|
analysis.sarif
|
||||||
.direnv/
|
.direnv/
|
||||||
|
@@ -1,5 +1,10 @@
|
|||||||
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.
|
||||||
|
@@ -14,7 +14,7 @@ module internal InternalTypeNotExtensionSerial =
|
|||||||
/// Serialize to a JSON node
|
/// Serialize to a JSON node
|
||||||
let toJsonNode (input : InternalTypeNotExtensionSerial) : System.Text.Json.Nodes.JsonNode =
|
let toJsonNode (input : InternalTypeNotExtensionSerial) : System.Text.Json.Nodes.JsonNode =
|
||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
let node = System.Text.Json.Nodes.JsonObject ()
|
||||||
do node.Add ((Literals.something), System.Text.Json.Nodes.JsonValue.Create<string> input.InternalThing2)
|
do node.Add ((Literals.something), (input.InternalThing2 |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node :> _
|
node :> _
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ module internal InternalTypeExtensionJsonSerializeExtension =
|
|||||||
/// Serialize to a JSON node
|
/// Serialize to a JSON node
|
||||||
static member toJsonNode (input : InternalTypeExtension) : System.Text.Json.Nodes.JsonNode =
|
static member toJsonNode (input : InternalTypeExtension) : System.Text.Json.Nodes.JsonNode =
|
||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
let node = System.Text.Json.Nodes.JsonObject ()
|
||||||
do node.Add ((Literals.something), System.Text.Json.Nodes.JsonValue.Create<string> input.ExternalThing)
|
do node.Add ((Literals.something), (input.ExternalThing |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node :> _
|
node :> _
|
||||||
|
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
@@ -49,7 +49,7 @@ module InnerType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Thing = arg_0
|
Thing = arg_0
|
||||||
@@ -71,7 +71,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
@@ -84,7 +84,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
@@ -109,7 +109,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
@@ -122,7 +122,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["a"] with
|
(match node.["a"] with
|
||||||
@@ -134,7 +134,7 @@ module JsonRecordType =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
A = arg_0
|
A = arg_0
|
||||||
@@ -161,7 +161,7 @@ module internal InternalTypeNotExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
InternalThing = arg_0
|
InternalThing = arg_0
|
||||||
@@ -186,7 +186,7 @@ module internal InternalTypeExtensionJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
ExternalThing = arg_0
|
ExternalThing = arg_0
|
||||||
@@ -345,7 +345,7 @@ module ToGetExtensionMethodJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_7 =
|
let arg_7 =
|
||||||
(match node.["hotel"] with
|
(match node.["hotel"] with
|
||||||
@@ -417,7 +417,7 @@ module ToGetExtensionMethodJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<float> ()
|
.GetValue<System.Double> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["bravo"] with
|
(match node.["bravo"] with
|
||||||
@@ -442,7 +442,7 @@ module ToGetExtensionMethodJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Alpha = arg_0
|
Alpha = arg_0
|
||||||
|
@@ -20,21 +20,26 @@ module MemberJsonSerializeExtension =
|
|||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
let node = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
do
|
do
|
||||||
node.Add ("id", System.Text.Json.Nodes.JsonValue.Create<int> input.Id)
|
node.Add ("id", (input.Id |> System.Text.Json.Nodes.JsonValue.Create<int>))
|
||||||
node.Add ("compoundMemberId", System.Text.Json.Nodes.JsonValue.Create<string> input.CompoundMemberId)
|
|
||||||
node.Add ("firstName", System.Text.Json.Nodes.JsonValue.Create<string> input.FirstName)
|
node.Add (
|
||||||
node.Add ("lastName", System.Text.Json.Nodes.JsonValue.Create<string> input.LastName)
|
"compoundMemberId",
|
||||||
node.Add ("homeGymId", System.Text.Json.Nodes.JsonValue.Create<int> input.HomeGymId)
|
(input.CompoundMemberId |> System.Text.Json.Nodes.JsonValue.Create<string>)
|
||||||
node.Add ("homeGymName", System.Text.Json.Nodes.JsonValue.Create<string> input.HomeGymName)
|
)
|
||||||
node.Add ("emailAddress", System.Text.Json.Nodes.JsonValue.Create<string> input.EmailAddress)
|
|
||||||
node.Add ("gymAccessPin", System.Text.Json.Nodes.JsonValue.Create<string> input.GymAccessPin)
|
node.Add ("firstName", (input.FirstName |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node.Add ("dateofBirth", System.Text.Json.Nodes.JsonValue.Create<DateOnly> input.DateOfBirth)
|
node.Add ("lastName", (input.LastName |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node.Add ("mobileNumber", System.Text.Json.Nodes.JsonValue.Create<string> input.MobileNumber)
|
node.Add ("homeGymId", (input.HomeGymId |> System.Text.Json.Nodes.JsonValue.Create<int>))
|
||||||
node.Add ("postCode", System.Text.Json.Nodes.JsonValue.Create<string> input.Postcode)
|
node.Add ("homeGymName", (input.HomeGymName |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node.Add ("membershipName", System.Text.Json.Nodes.JsonValue.Create<string> input.MembershipName)
|
node.Add ("emailAddress", (input.EmailAddress |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node.Add ("membershipLevel", System.Text.Json.Nodes.JsonValue.Create<int> input.MembershipLevel)
|
node.Add ("gymAccessPin", (input.GymAccessPin |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
node.Add ("suspendedReason", System.Text.Json.Nodes.JsonValue.Create<int> input.SuspendedReason)
|
node.Add ("dateofBirth", (input.DateOfBirth |> System.Text.Json.Nodes.JsonValue.Create<DateOnly>))
|
||||||
node.Add ("memberStatus", System.Text.Json.Nodes.JsonValue.Create<int> input.MemberStatus)
|
node.Add ("mobileNumber", (input.MobileNumber |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
|
node.Add ("postCode", (input.Postcode |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
|
node.Add ("membershipName", (input.MembershipName |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
|
node.Add ("membershipLevel", (input.MembershipLevel |> System.Text.Json.Nodes.JsonValue.Create<int>))
|
||||||
|
node.Add ("suspendedReason", (input.SuspendedReason |> System.Text.Json.Nodes.JsonValue.Create<int>))
|
||||||
|
node.Add ("memberStatus", (input.MemberStatus |> System.Text.Json.Nodes.JsonValue.Create<int>))
|
||||||
|
|
||||||
node :> _
|
node :> _
|
||||||
|
|
||||||
@@ -55,7 +60,7 @@ module GymOpeningHours =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
@@ -68,7 +73,7 @@ module GymOpeningHours =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
IsAlwaysOpen = arg_0
|
IsAlwaysOpen = arg_0
|
||||||
@@ -91,7 +96,7 @@ module GymAccessOptions =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["pinAccess"] with
|
(match node.["pinAccess"] with
|
||||||
@@ -103,7 +108,7 @@ module GymAccessOptions =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
PinAccess = arg_0
|
PinAccess = arg_0
|
||||||
@@ -127,7 +132,7 @@ module GymLocation =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<float> ()
|
.GetValue<System.Double> ()
|
||||||
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,6 +153,7 @@ module GymLocation =
|
|||||||
reraise ()
|
reraise ()
|
||||||
else
|
else
|
||||||
reraise ()
|
reraise ()
|
||||||
|
|> LanguagePrimitives.FloatWithMeasure
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
try
|
try
|
||||||
@@ -160,7 +166,7 @@ module GymLocation =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<float> ()
|
.GetValue<System.Double> ()
|
||||||
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
|
||||||
@@ -203,12 +209,12 @@ module GymAddress =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
match node.["county"] with
|
match node.["county"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<string> () |> Some
|
| v -> v.AsValue().GetValue<System.String> () |> Some
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
(match node.["town"] with
|
(match node.["town"] with
|
||||||
@@ -220,17 +226,17 @@ module GymAddress =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
match node.["addressLine3"] with
|
match node.["addressLine3"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<string> () |> Some
|
| v -> v.AsValue().GetValue<System.String> () |> Some
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
match node.["addressLine2"] with
|
match node.["addressLine2"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<string> () |> Some
|
| v -> v.AsValue().GetValue<System.String> () |> Some
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["addressLine1"] with
|
(match node.["addressLine1"] with
|
||||||
@@ -242,7 +248,7 @@ module GymAddress =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
AddressLine1 = arg_0
|
AddressLine1 = arg_0
|
||||||
@@ -269,7 +275,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_9 =
|
let arg_9 =
|
||||||
(match node.["timeZone"] with
|
(match node.["timeZone"] with
|
||||||
@@ -281,7 +287,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_8 =
|
let arg_8 =
|
||||||
GymLocation.jsonParse (
|
GymLocation.jsonParse (
|
||||||
@@ -329,7 +335,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
(match node.["phoneNumber"] with
|
(match node.["phoneNumber"] with
|
||||||
@@ -341,7 +347,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
GymAddress.jsonParse (
|
GymAddress.jsonParse (
|
||||||
@@ -365,7 +371,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["id"] with
|
(match node.["id"] with
|
||||||
@@ -377,7 +383,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["name"] with
|
(match node.["name"] with
|
||||||
@@ -389,7 +395,7 @@ module Gym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Name = arg_0
|
Name = arg_0
|
||||||
@@ -424,7 +430,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_13 =
|
let arg_13 =
|
||||||
(match node.["suspendedReason"] with
|
(match node.["suspendedReason"] with
|
||||||
@@ -436,7 +442,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_12 =
|
let arg_12 =
|
||||||
(match node.["membershipLevel"] with
|
(match node.["membershipLevel"] with
|
||||||
@@ -448,7 +454,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_11 =
|
let arg_11 =
|
||||||
(match node.["membershipName"] with
|
(match node.["membershipName"] with
|
||||||
@@ -460,7 +466,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_10 =
|
let arg_10 =
|
||||||
(match node.["postCode"] with
|
(match node.["postCode"] with
|
||||||
@@ -472,7 +478,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_9 =
|
let arg_9 =
|
||||||
(match node.["mobileNumber"] with
|
(match node.["mobileNumber"] with
|
||||||
@@ -484,7 +490,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_8 =
|
let arg_8 =
|
||||||
(match node.["dateofBirth"] with
|
(match node.["dateofBirth"] with
|
||||||
@@ -509,7 +515,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_6 =
|
let arg_6 =
|
||||||
(match node.["emailAddress"] with
|
(match node.["emailAddress"] with
|
||||||
@@ -521,7 +527,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_5 =
|
let arg_5 =
|
||||||
(match node.["homeGymName"] with
|
(match node.["homeGymName"] with
|
||||||
@@ -533,7 +539,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
(match node.["homeGymId"] with
|
(match node.["homeGymId"] with
|
||||||
@@ -545,7 +551,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
(match node.["lastName"] with
|
(match node.["lastName"] with
|
||||||
@@ -557,7 +563,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["firstName"] with
|
(match node.["firstName"] with
|
||||||
@@ -569,7 +575,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["compoundMemberId"] with
|
(match node.["compoundMemberId"] with
|
||||||
@@ -581,7 +587,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["id"] with
|
(match node.["id"] with
|
||||||
@@ -593,7 +599,7 @@ module MemberJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Id = arg_0
|
Id = arg_0
|
||||||
@@ -629,7 +635,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_7 =
|
let arg_7 =
|
||||||
(match node.["lastRefreshedPeopleInClasses"] with
|
(match node.["lastRefreshedPeopleInClasses"] with
|
||||||
@@ -680,12 +686,12 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
match node.["totalPeopleSuffix"] with
|
match node.["totalPeopleSuffix"] with
|
||||||
| null -> None
|
| null -> None
|
||||||
| v -> v.AsValue().GetValue<string> () |> Some
|
| v -> v.AsValue().GetValue<System.String> () |> Some
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["totalPeopleInClasses"] with
|
(match node.["totalPeopleInClasses"] with
|
||||||
@@ -697,7 +703,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["totalPeopleInGym"] with
|
(match node.["totalPeopleInGym"] with
|
||||||
@@ -709,7 +715,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["description"] with
|
(match node.["description"] with
|
||||||
@@ -721,7 +727,7 @@ module GymAttendance =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Description = arg_0
|
Description = arg_0
|
||||||
@@ -764,7 +770,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
(match node.["totalClasses"] with
|
(match node.["totalClasses"] with
|
||||||
@@ -776,7 +782,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_2 =
|
let arg_2 =
|
||||||
(match node.["totalVisits"] with
|
(match node.["totalVisits"] with
|
||||||
@@ -788,7 +794,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["averageDuration"] with
|
(match node.["averageDuration"] with
|
||||||
@@ -800,7 +806,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["totalDuration"] with
|
(match node.["totalDuration"] with
|
||||||
@@ -812,7 +818,7 @@ module MemberActivityDto =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
TotalDuration = arg_0
|
TotalDuration = arg_0
|
||||||
@@ -839,7 +845,7 @@ module SessionsAggregate =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["Visits"] with
|
(match node.["Visits"] with
|
||||||
@@ -851,7 +857,7 @@ module SessionsAggregate =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["Activities"] with
|
(match node.["Activities"] with
|
||||||
@@ -863,7 +869,7 @@ module SessionsAggregate =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Activities = arg_0
|
Activities = arg_0
|
||||||
@@ -887,7 +893,7 @@ module VisitGym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["Name"] with
|
(match node.["Name"] with
|
||||||
@@ -899,7 +905,7 @@ module VisitGym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["Id"] with
|
(match node.["Id"] with
|
||||||
@@ -911,7 +917,7 @@ module VisitGym =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
Id = arg_0
|
Id = arg_0
|
||||||
@@ -947,7 +953,7 @@ module Visit =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
(match node.["StartTime"] with
|
(match node.["StartTime"] with
|
||||||
@@ -972,7 +978,7 @@ module Visit =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> Map.ofSeq
|
|> Map.ofSeq
|
||||||
|
@@ -21,69 +21,69 @@ module InnerTypeWithBothJsonSerializeExtension =
|
|||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
let node = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
do
|
do
|
||||||
node.Add (("it's-a-me"), System.Text.Json.Nodes.JsonValue.Create<Guid> input.Thing)
|
node.Add (("it's-a-me"), (input.Thing |> System.Text.Json.Nodes.JsonValue.Create<Guid>))
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"map",
|
"map",
|
||||||
(fun field ->
|
(input.Map
|
||||||
let ret = System.Text.Json.Nodes.JsonObject ()
|
|> (fun field ->
|
||||||
|
let ret = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
for (KeyValue (key, value)) in field do
|
for (KeyValue (key, value)) in field do
|
||||||
ret.Add (key.ToString (), System.Text.Json.Nodes.JsonValue.Create<Uri> value)
|
ret.Add (key.ToString (), System.Text.Json.Nodes.JsonValue.Create<Uri> value)
|
||||||
|
|
||||||
ret
|
ret
|
||||||
)
|
))
|
||||||
input.Map
|
|
||||||
)
|
)
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"readOnlyDict",
|
"readOnlyDict",
|
||||||
(fun field ->
|
(input.ReadOnlyDict
|
||||||
let ret = System.Text.Json.Nodes.JsonObject ()
|
|> (fun field ->
|
||||||
|
let ret = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
for (KeyValue (key, value)) in field do
|
for (KeyValue (key, value)) in field do
|
||||||
ret.Add (
|
ret.Add (
|
||||||
key.ToString (),
|
key.ToString (),
|
||||||
(fun field ->
|
(fun field ->
|
||||||
let arr = System.Text.Json.Nodes.JsonArray ()
|
let arr = System.Text.Json.Nodes.JsonArray ()
|
||||||
|
|
||||||
for mem in field do
|
for mem in field do
|
||||||
arr.Add (System.Text.Json.Nodes.JsonValue.Create<char> mem)
|
arr.Add (System.Text.Json.Nodes.JsonValue.Create<char> mem)
|
||||||
|
|
||||||
arr
|
arr
|
||||||
)
|
)
|
||||||
value
|
value
|
||||||
)
|
)
|
||||||
|
|
||||||
ret
|
ret
|
||||||
)
|
))
|
||||||
input.ReadOnlyDict
|
|
||||||
)
|
)
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"dict",
|
"dict",
|
||||||
(fun field ->
|
(input.Dict
|
||||||
let ret = System.Text.Json.Nodes.JsonObject ()
|
|> (fun field ->
|
||||||
|
let ret = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
for (KeyValue (key, value)) in field do
|
for (KeyValue (key, value)) in field do
|
||||||
ret.Add (key.ToString (), System.Text.Json.Nodes.JsonValue.Create<bool> value)
|
ret.Add (key.ToString (), System.Text.Json.Nodes.JsonValue.Create<bool> value)
|
||||||
|
|
||||||
ret
|
ret
|
||||||
)
|
))
|
||||||
input.Dict
|
|
||||||
)
|
)
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"concreteDict",
|
"concreteDict",
|
||||||
(fun field ->
|
(input.ConcreteDict
|
||||||
let ret = System.Text.Json.Nodes.JsonObject ()
|
|> (fun field ->
|
||||||
|
let ret = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
for (KeyValue (key, value)) in field do
|
for (KeyValue (key, value)) in field do
|
||||||
ret.Add (key.ToString (), InnerTypeWithBoth.toJsonNode value)
|
ret.Add (key.ToString (), InnerTypeWithBoth.toJsonNode value)
|
||||||
|
|
||||||
ret
|
ret
|
||||||
)
|
))
|
||||||
input.ConcreteDict
|
|
||||||
)
|
)
|
||||||
|
|
||||||
node :> _
|
node :> _
|
||||||
@@ -104,48 +104,84 @@ module JsonRecordTypeWithBothJsonSerializeExtension =
|
|||||||
let node = System.Text.Json.Nodes.JsonObject ()
|
let node = System.Text.Json.Nodes.JsonObject ()
|
||||||
|
|
||||||
do
|
do
|
||||||
node.Add ("a", System.Text.Json.Nodes.JsonValue.Create<int> input.A)
|
node.Add ("a", (input.A |> System.Text.Json.Nodes.JsonValue.Create<int>))
|
||||||
node.Add ("b", System.Text.Json.Nodes.JsonValue.Create<string> input.B)
|
node.Add ("b", (input.B |> System.Text.Json.Nodes.JsonValue.Create<string>))
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"c",
|
"c",
|
||||||
(fun field ->
|
(input.C
|
||||||
let arr = System.Text.Json.Nodes.JsonArray ()
|
|> (fun field ->
|
||||||
|
let arr = System.Text.Json.Nodes.JsonArray ()
|
||||||
|
|
||||||
for mem in field do
|
for mem in field do
|
||||||
arr.Add (System.Text.Json.Nodes.JsonValue.Create<int> mem)
|
arr.Add (System.Text.Json.Nodes.JsonValue.Create<int> mem)
|
||||||
|
|
||||||
arr
|
arr
|
||||||
)
|
))
|
||||||
input.C
|
|
||||||
)
|
)
|
||||||
|
|
||||||
node.Add ("d", InnerTypeWithBoth.toJsonNode input.D)
|
node.Add ("d", (input.D |> InnerTypeWithBoth.toJsonNode))
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"e",
|
"e",
|
||||||
(fun field ->
|
(input.E
|
||||||
let arr = System.Text.Json.Nodes.JsonArray ()
|
|> (fun field ->
|
||||||
|
let arr = System.Text.Json.Nodes.JsonArray ()
|
||||||
|
|
||||||
for mem in field do
|
for mem in field do
|
||||||
arr.Add (System.Text.Json.Nodes.JsonValue.Create<string> mem)
|
arr.Add (System.Text.Json.Nodes.JsonValue.Create<string> mem)
|
||||||
|
|
||||||
arr
|
arr
|
||||||
)
|
))
|
||||||
input.E
|
|
||||||
)
|
)
|
||||||
|
|
||||||
node.Add (
|
node.Add (
|
||||||
"f",
|
"arr",
|
||||||
(fun field ->
|
(input.Arr
|
||||||
let arr = System.Text.Json.Nodes.JsonArray ()
|
|> (fun field ->
|
||||||
|
let arr = System.Text.Json.Nodes.JsonArray ()
|
||||||
|
|
||||||
for mem in field do
|
for mem in field do
|
||||||
arr.Add (System.Text.Json.Nodes.JsonValue.Create<int> mem)
|
arr.Add (System.Text.Json.Nodes.JsonValue.Create<int> mem)
|
||||||
|
|
||||||
arr
|
arr
|
||||||
)
|
))
|
||||||
input.F
|
)
|
||||||
|
|
||||||
|
node.Add ("byte", (input.Byte |> System.Text.Json.Nodes.JsonValue.Create<byte<measure>>))
|
||||||
|
node.Add ("sbyte", (input.Sbyte |> System.Text.Json.Nodes.JsonValue.Create<sbyte<measure>>))
|
||||||
|
node.Add ("i", (input.I |> System.Text.Json.Nodes.JsonValue.Create<int<measure>>))
|
||||||
|
node.Add ("i32", (input.I32 |> System.Text.Json.Nodes.JsonValue.Create<int32<measure>>))
|
||||||
|
node.Add ("i64", (input.I64 |> System.Text.Json.Nodes.JsonValue.Create<int64<measure>>))
|
||||||
|
node.Add ("u", (input.U |> System.Text.Json.Nodes.JsonValue.Create<uint<measure>>))
|
||||||
|
node.Add ("u32", (input.U32 |> System.Text.Json.Nodes.JsonValue.Create<uint32<measure>>))
|
||||||
|
node.Add ("u64", (input.U64 |> System.Text.Json.Nodes.JsonValue.Create<uint64<measure>>))
|
||||||
|
node.Add ("f", (input.F |> System.Text.Json.Nodes.JsonValue.Create<float<measure>>))
|
||||||
|
node.Add ("f32", (input.F32 |> System.Text.Json.Nodes.JsonValue.Create<float32<measure>>))
|
||||||
|
node.Add ("single", (input.Single |> System.Text.Json.Nodes.JsonValue.Create<single<measure>>))
|
||||||
|
|
||||||
|
node.Add (
|
||||||
|
"intMeasureOption",
|
||||||
|
(input.IntMeasureOption
|
||||||
|
|> (fun field ->
|
||||||
|
match field with
|
||||||
|
| None -> null :> System.Text.Json.Nodes.JsonNode
|
||||||
|
| Some field ->
|
||||||
|
(System.Text.Json.Nodes.JsonValue.Create<int<measure>> field)
|
||||||
|
:> System.Text.Json.Nodes.JsonNode
|
||||||
|
))
|
||||||
|
)
|
||||||
|
|
||||||
|
node.Add (
|
||||||
|
"intMeasureNullable",
|
||||||
|
(input.IntMeasureNullable
|
||||||
|
|> (fun field ->
|
||||||
|
if field.HasValue then
|
||||||
|
System.Text.Json.Nodes.JsonValue.Create<int<measure>> field.Value
|
||||||
|
:> System.Text.Json.Nodes.JsonNode
|
||||||
|
else
|
||||||
|
null :> System.Text.Json.Nodes.JsonNode
|
||||||
|
))
|
||||||
)
|
)
|
||||||
|
|
||||||
node :> _
|
node :> _
|
||||||
@@ -221,7 +257,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<bool> ()
|
let value = (kvp.Value).AsValue().GetValue<System.Boolean> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> dict
|
|> dict
|
||||||
@@ -295,7 +331,49 @@ 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_5 =
|
let arg_18 =
|
||||||
|
match node.["intMeasureNullable"] with
|
||||||
|
| null -> System.Nullable ()
|
||||||
|
| v ->
|
||||||
|
v.AsValue().GetValue<System.Int32> ()
|
||||||
|
|> LanguagePrimitives.Int32WithMeasure
|
||||||
|
|> System.Nullable
|
||||||
|
|
||||||
|
let arg_17 =
|
||||||
|
match node.["intMeasureOption"] with
|
||||||
|
| null -> None
|
||||||
|
| v ->
|
||||||
|
v.AsValue().GetValue<System.Int32> ()
|
||||||
|
|> LanguagePrimitives.Int32WithMeasure
|
||||||
|
|> Some
|
||||||
|
|
||||||
|
let arg_16 =
|
||||||
|
(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 (
|
||||||
@@ -303,9 +381,126 @@ 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<int> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_4 =
|
let arg_4 =
|
||||||
@@ -318,7 +513,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<string> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
||||||
|> Array.ofSeq
|
|> Array.ofSeq
|
||||||
|
|
||||||
let arg_3 =
|
let arg_3 =
|
||||||
@@ -343,7 +538,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsArray ()
|
.AsArray ()
|
||||||
|> Seq.map (fun elt -> elt.AsValue().GetValue<int> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.Int32> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
@@ -356,7 +551,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
let arg_0 =
|
let arg_0 =
|
||||||
(match node.["a"] with
|
(match node.["a"] with
|
||||||
@@ -368,7 +563,7 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
A = arg_0
|
A = arg_0
|
||||||
@@ -376,7 +571,20 @@ module JsonRecordTypeWithBothJsonParseExtension =
|
|||||||
C = arg_2
|
C = arg_2
|
||||||
D = arg_3
|
D = arg_3
|
||||||
E = arg_4
|
E = arg_4
|
||||||
F = arg_5
|
Arr = 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
|
||||||
|
IntMeasureOption = arg_17
|
||||||
|
IntMeasureNullable = arg_18
|
||||||
}
|
}
|
||||||
namespace ConsumePlugin
|
namespace ConsumePlugin
|
||||||
|
|
||||||
@@ -422,7 +630,7 @@ module FirstDuJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.String> ()
|
||||||
)
|
)
|
||||||
| "case2" ->
|
| "case2" ->
|
||||||
let node =
|
let node =
|
||||||
@@ -455,6 +663,6 @@ module FirstDuJsonParseExtension =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
)
|
)
|
||||||
| 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<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
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<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
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<string> ()
|
.GetValue<System.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<string> ()
|
.GetValue<System.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<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
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<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
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<string> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.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<string> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.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<string> ())
|
|> Seq.map (fun elt -> elt.AsValue().GetValue<System.String> ())
|
||||||
|> List.ofSeq
|
|> List.ofSeq
|
||||||
|
|
||||||
let arg_1 =
|
let arg_1 =
|
||||||
@@ -133,7 +133,7 @@ module JwtVaultAuthResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<string> ()
|
.GetValue<System.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<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
ClientToken = arg_0
|
ClientToken = arg_0
|
||||||
@@ -189,7 +189,7 @@ module JwtVaultResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
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<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
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<string> ()
|
.GetValue<System.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<string> ()
|
.GetValue<System.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<int> ()
|
let value = (kvp.Value).AsValue().GetValue<System.Int32> ()
|
||||||
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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.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<string> ()
|
let value = (kvp.Value).AsValue().GetValue<System.String> ()
|
||||||
key, value
|
key, value
|
||||||
)
|
)
|
||||||
|> readOnlyDict
|
|> readOnlyDict
|
||||||
@@ -389,7 +389,7 @@ module JwtSecretResponse =
|
|||||||
)
|
)
|
||||||
| v -> v)
|
| v -> v)
|
||||||
.AsValue()
|
.AsValue()
|
||||||
.GetValue<int> ()
|
.GetValue<System.Int32> ()
|
||||||
|
|
||||||
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<bool> ()
|
.GetValue<System.Boolean> ()
|
||||||
|
|
||||||
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<string> ()
|
.GetValue<System.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<string> ()
|
.GetValue<System.String> ()
|
||||||
|
|
||||||
{
|
{
|
||||||
RequestId = arg_0
|
RequestId = arg_0
|
||||||
|
@@ -19,13 +19,16 @@ 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
|
Latitude : float<measure>
|
||||||
}
|
}
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonParse>]
|
[<WoofWare.Myriad.Plugins.JsonParse>]
|
||||||
|
@@ -16,6 +16,9 @@ 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 =
|
||||||
@@ -25,7 +28,20 @@ type JsonRecordTypeWithBoth =
|
|||||||
C : int list
|
C : int list
|
||||||
D : InnerTypeWithBoth
|
D : InnerTypeWithBoth
|
||||||
E : string array
|
E : string array
|
||||||
F : int[]
|
Arr : 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>
|
||||||
|
IntMeasureOption : int<measure> option
|
||||||
|
IntMeasureNullable : int<measure> Nullable
|
||||||
}
|
}
|
||||||
|
|
||||||
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
[<WoofWare.Myriad.Plugins.JsonSerialize true>]
|
||||||
|
@@ -58,7 +58,7 @@ module PureGymDtos =
|
|||||||
[
|
[
|
||||||
"""{"latitude": 1.0, "longitude": 3.0}""",
|
"""{"latitude": 1.0, "longitude": 3.0}""",
|
||||||
{
|
{
|
||||||
GymLocation.Latitude = 1.0
|
GymLocation.Latitude = 1.0<measure>
|
||||||
Longitude = 3.0
|
Longitude = 3.0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -96,7 +96,7 @@ module PureGymDtos =
|
|||||||
Location =
|
Location =
|
||||||
{
|
{
|
||||||
Longitude = -0.110252
|
Longitude = -0.110252
|
||||||
Latitude = 51.480401
|
Latitude = 51.480401<measure>
|
||||||
}
|
}
|
||||||
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,7 +77,20 @@ 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! f = Gen.arrayOf Arb.generate<int>
|
let! arr = 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>))
|
||||||
|
let! intMeasureOption = Arb.generate
|
||||||
|
let! intMeasureNullable = Arb.generate
|
||||||
|
|
||||||
return
|
return
|
||||||
{
|
{
|
||||||
@@ -86,7 +99,20 @@ 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
|
||||||
|
IntMeasureOption = intMeasureOption
|
||||||
|
IntMeasureNullable = intMeasureNullable
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,8 +166,7 @@ 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
|
||||||
@@ -150,11 +175,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
|
||||||
F =
|
Arr =
|
||||||
if Object.ReferenceEquals (r.F, (null : obj)) then
|
if Object.ReferenceEquals (r.Arr, (null : obj)) then
|
||||||
[||]
|
[||]
|
||||||
else
|
else
|
||||||
r.F
|
r.Arr
|
||||||
}
|
}
|
||||||
|
|
||||||
let duGen =
|
let duGen =
|
||||||
|
@@ -95,25 +95,8 @@ module internal JsonParseGenerator =
|
|||||||
)
|
)
|
||||||
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent [ collectionType ; "ofSeq" ])
|
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent [ collectionType ; "ofSeq" ])
|
||||||
|
|
||||||
/// match {node} with | null -> None | v -> {body} |> Some
|
let dotParse (typeName : LongIdent) : LongIdent =
|
||||||
/// Use the variable `v` to get access to the `Some`.
|
List.append typeName [ Ident.create "Parse" ]
|
||||||
let createParseLineOption (node : SynExpr) (body : SynExpr) : SynExpr =
|
|
||||||
let body = SynExpr.pipeThroughFunction (SynExpr.createIdent "Some") body
|
|
||||||
|
|
||||||
[
|
|
||||||
SynMatchClause.create SynPat.createNull (SynExpr.createIdent "None")
|
|
||||||
SynMatchClause.create (SynPat.named "v") body
|
|
||||||
]
|
|
||||||
|> SynExpr.createMatch node
|
|
||||||
|
|
||||||
/// Given e.g. "float", returns "System.Double.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.
|
||||||
@@ -140,6 +123,47 @@ 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".
|
||||||
@@ -168,45 +192,32 @@ 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 ->
|
| NumberType typeName -> parseNumberType options propertyName node 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")
|
let someClause =
|
||||||
|> createParseLineOption node
|
parseNode None options ty (SynExpr.createIdent "v")
|
||||||
|
|> SynExpr.pipeThroughFunction (SynExpr.createIdent "Some")
|
||||||
|
|> SynMatchClause.create (SynPat.named "v")
|
||||||
|
|
||||||
|
[
|
||||||
|
SynMatchClause.create SynPat.createNull (SynExpr.createIdent "None")
|
||||||
|
someClause
|
||||||
|
]
|
||||||
|
|> SynExpr.createMatch node
|
||||||
|
| NullableType ty ->
|
||||||
|
let someClause =
|
||||||
|
parseNode None options ty (SynExpr.createIdent "v")
|
||||||
|
|> SynExpr.pipeThroughFunction (SynExpr.createLongIdent [ "System" ; "Nullable" ])
|
||||||
|
|> SynMatchClause.create (SynPat.named "v")
|
||||||
|
|
||||||
|
[
|
||||||
|
SynMatchClause.create
|
||||||
|
SynPat.createNull
|
||||||
|
(SynExpr.applyFunction (SynExpr.createLongIdent [ "System" ; "Nullable" ]) (SynExpr.CreateConst ()))
|
||||||
|
someClause
|
||||||
|
]
|
||||||
|
|> SynExpr.createMatch node
|
||||||
| ListType ty ->
|
| ListType ty ->
|
||||||
parseNode None options ty (SynExpr.createIdent "elt")
|
parseNode None options ty (SynExpr.createIdent "elt")
|
||||||
|> asArrayMapped propertyName "List" node
|
|> asArrayMapped propertyName "List" node
|
||||||
@@ -261,6 +272,9 @@ 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 =
|
||||||
|
@@ -13,6 +13,14 @@ type internal JsonSerializeOutputSpec =
|
|||||||
module internal JsonSerializeGenerator =
|
module internal JsonSerializeGenerator =
|
||||||
open Fantomas.FCS.Text.Range
|
open Fantomas.FCS.Text.Range
|
||||||
|
|
||||||
|
|
||||||
|
// The absolutely galaxy-brained implementation of JsonValue has `JsonValue.Parse "null"`
|
||||||
|
// identically equal to null. We have to work around this later, but we might as well just
|
||||||
|
// be efficient here and whip up the null directly.
|
||||||
|
let private jsonNull () =
|
||||||
|
SynExpr.createNull ()
|
||||||
|
|> SynExpr.upcast' (SynType.createLongIdent' [ "System" ; "Text" ; "Json" ; "Nodes" ; "JsonNode" ])
|
||||||
|
|
||||||
/// Given `input.Ident`, for example, choose how to add it to the ambient `node`.
|
/// Given `input.Ident`, for example, choose how to add it to the ambient `node`.
|
||||||
/// The result is a line like `(fun ident -> InnerType.toJsonNode ident)` or `(fun ident -> JsonValue.Create ident)`.
|
/// The result is a line like `(fun ident -> InnerType.toJsonNode ident)` or `(fun ident -> JsonValue.Create ident)`.
|
||||||
let rec serializeNode (fieldType : SynType) : SynExpr =
|
let rec serializeNode (fieldType : SynType) : SynExpr =
|
||||||
@@ -21,6 +29,7 @@ module internal JsonSerializeGenerator =
|
|||||||
| DateOnly
|
| DateOnly
|
||||||
| DateTime
|
| DateTime
|
||||||
| NumberType _
|
| NumberType _
|
||||||
|
| Measure _
|
||||||
| PrimitiveType _
|
| PrimitiveType _
|
||||||
| Guid
|
| Guid
|
||||||
| Uri ->
|
| Uri ->
|
||||||
@@ -34,15 +43,15 @@ module internal JsonSerializeGenerator =
|
|||||||
range0,
|
range0,
|
||||||
range0
|
range0
|
||||||
)
|
)
|
||||||
|
| NullableType ty ->
|
||||||
|
// fun field -> if field.HasValue then {serializeNode ty} field.Value else JsonValue.Create null
|
||||||
|
SynExpr.applyFunction (serializeNode ty) (SynExpr.createLongIdent [ "field" ; "Value" ])
|
||||||
|
|> SynExpr.upcast' (SynType.createLongIdent' [ "System" ; "Text" ; "Json" ; "Nodes" ; "JsonNode" ])
|
||||||
|
|> SynExpr.ifThenElse (SynExpr.createLongIdent [ "field" ; "HasValue" ]) (jsonNull ())
|
||||||
|
|> SynExpr.createLambda "field"
|
||||||
| OptionType ty ->
|
| OptionType ty ->
|
||||||
// fun field -> match field with | None -> JsonValue.Create null | Some v -> {serializeNode ty} field
|
// fun field -> match field with | None -> JsonValue.Create null | Some v -> {serializeNode ty} field
|
||||||
let noneClause =
|
let noneClause = jsonNull () |> SynMatchClause.create (SynPat.named "None")
|
||||||
// The absolutely galaxy-brained implementation of JsonValue has `JsonValue.Parse "null"`
|
|
||||||
// identically equal to null. We have to work around this later, but we might as well just
|
|
||||||
// be efficient here and whip up the null directly.
|
|
||||||
SynExpr.createNull ()
|
|
||||||
|> SynExpr.upcast' (SynType.createLongIdent' [ "System" ; "Text" ; "Json" ; "Nodes" ; "JsonNode" ])
|
|
||||||
|> SynMatchClause.create (SynPat.named "None")
|
|
||||||
|
|
||||||
let someClause =
|
let someClause =
|
||||||
SynExpr.applyFunction (serializeNode ty) (SynExpr.createIdent "field")
|
SynExpr.applyFunction (serializeNode ty) (SynExpr.createIdent "field")
|
||||||
@@ -139,9 +148,10 @@ module internal JsonSerializeGenerator =
|
|||||||
let createSerializeRhsRecord (propertyName : SynExpr) (fieldId : Ident) (fieldType : SynType) : SynExpr =
|
let createSerializeRhsRecord (propertyName : SynExpr) (fieldId : Ident) (fieldType : SynType) : SynExpr =
|
||||||
[
|
[
|
||||||
propertyName
|
propertyName
|
||||||
SynExpr.applyFunction
|
SynExpr.pipeThroughFunction
|
||||||
(serializeNode fieldType)
|
(serializeNode fieldType)
|
||||||
(SynExpr.createLongIdent' [ Ident.create "input" ; fieldId ])
|
(SynExpr.createLongIdent' [ Ident.create "input" ; fieldId ])
|
||||||
|
|> SynExpr.paren
|
||||||
]
|
]
|
||||||
|> SynExpr.tuple
|
|> SynExpr.tuple
|
||||||
|> SynExpr.applyFunction (SynExpr.createLongIdent [ "node" ; "Add" ])
|
|> SynExpr.applyFunction (SynExpr.createLongIdent [ "node" ; "Add" ])
|
||||||
|
24
WoofWare.Myriad.Plugins/Measure.fs
Normal file
24
WoofWare.Myriad.Plugins/Measure.fs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
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,5 +26,7 @@ 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,35 @@ 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
|
||||||
| expr -> expr
|
| expr -> expr
|
||||||
|
|
||||||
/// {obj}.{meth} {arg}
|
let dotGet (field : string) (obj : SynExpr) : SynExpr =
|
||||||
let callMethodArg (meth : string) (arg : SynExpr) (obj : SynExpr) : SynExpr =
|
|
||||||
SynExpr.DotGet (
|
SynExpr.DotGet (
|
||||||
obj,
|
obj,
|
||||||
range0,
|
range0,
|
||||||
SynLongIdent.SynLongIdent (id = [ Ident.create meth ], dotRanges = [], trivia = [ None ]),
|
SynLongIdent.SynLongIdent (id = [ Ident.create field ], dotRanges = [], trivia = [ None ]),
|
||||||
range0
|
range0
|
||||||
)
|
)
|
||||||
|> applyTo arg
|
|
||||||
|
/// {obj}.{meth} {arg}
|
||||||
|
let callMethodArg (meth : string) (arg : SynExpr) (obj : SynExpr) : SynExpr = dotGet meth obj |> applyTo arg
|
||||||
|
|
||||||
/// {obj}.{meth}()
|
/// {obj}.{meth}()
|
||||||
let callMethod (meth : string) (obj : SynExpr) : SynExpr =
|
let callMethod (meth : string) (obj : SynExpr) : SynExpr =
|
||||||
|
@@ -70,6 +70,12 @@ module internal SynLongIdent =
|
|||||||
// TODO: consider Microsoft.FSharp.Option or whatever it is
|
// TODO: consider Microsoft.FSharp.Option or whatever it is
|
||||||
| _ -> false
|
| _ -> false
|
||||||
|
|
||||||
|
let isNullable (ident : SynLongIdent) : bool =
|
||||||
|
match ident.LongIdent |> List.map _.idText with
|
||||||
|
| [ "System" ; "Nullable" ]
|
||||||
|
| [ "Nullable" ] -> true
|
||||||
|
| _ -> false
|
||||||
|
|
||||||
let isResponse (ident : SynLongIdent) : bool =
|
let isResponse (ident : SynLongIdent) : bool =
|
||||||
match ident.LongIdent |> List.map _.idText with
|
match ident.LongIdent |> List.map _.idText with
|
||||||
| [ "Response" ]
|
| [ "Response" ]
|
||||||
|
@@ -59,6 +59,12 @@ module internal SynTypePatterns =
|
|||||||
Some innerType
|
Some innerType
|
||||||
| _ -> None
|
| _ -> None
|
||||||
|
|
||||||
|
let (|NullableType|_|) (fieldType : SynType) =
|
||||||
|
match fieldType with
|
||||||
|
| SynType.App (SynType.LongIdent ident, _, [ innerType ], _, _, _, _) when SynLongIdent.isNullable ident ->
|
||||||
|
Some innerType
|
||||||
|
| _ -> None
|
||||||
|
|
||||||
let (|UnitType|_|) (fieldType : SynType) : unit option =
|
let (|UnitType|_|) (fieldType : SynType) : unit option =
|
||||||
match fieldType with
|
match fieldType with
|
||||||
| SynType.LongIdent ident when SynLongIdent.isUnit ident -> Some ()
|
| SynType.LongIdent ident when SynLongIdent.isUnit ident -> Some ()
|
||||||
@@ -193,10 +199,30 @@ module internal SynTypePatterns =
|
|||||||
match fieldType with
|
match fieldType with
|
||||||
| SynType.LongIdent ident ->
|
| SynType.LongIdent ident ->
|
||||||
match ident.LongIdent with
|
match ident.LongIdent with
|
||||||
| [ i ] -> [ "string" ; "float" ; "int" ; "bool" ] |> List.tryFind (fun s -> s = i.idText)
|
| [ i ] ->
|
||||||
|
// 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,6 +46,7 @@
|
|||||||
<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"/>
|
||||||
|
Reference in New Issue
Block a user