starlight-fsharp-oracle 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/Extensions/StringBuilder.js +2 -5
  2. package/dist/Extensions/TextNode.js +29 -54
  3. package/dist/FSharp.Oracle.Schema/Schema.js +113 -218
  4. package/dist/Generate.js +33 -63
  5. package/dist/Helpers.js +1 -2
  6. package/dist/Plugin.js +17 -31
  7. package/dist/Render/Documentation.js +1 -2
  8. package/dist/Render/Entries.js +29 -34
  9. package/dist/Render/Pages.js +10 -19
  10. package/dist/Render/Primitives.js +19 -32
  11. package/dist/Themes.js +3 -5
  12. package/dist/fable_modules/Fable.Promise.3.2.0/AsyncIterable.fs +57 -0
  13. package/dist/fable_modules/Fable.Promise.3.2.0/AsyncIterable.fs.js +105 -0
  14. package/dist/fable_modules/Fable.Promise.3.2.0/Fable.Promise.fableproj +20 -0
  15. package/dist/fable_modules/Fable.Promise.3.2.0/Promise.fs +766 -0
  16. package/dist/fable_modules/Fable.Promise.3.2.0/Promise.fs.js +232 -0
  17. package/dist/fable_modules/Fable.Promise.3.2.0/PromiseImpl.fs +31 -0
  18. package/dist/fable_modules/Fable.Promise.3.2.0/PromiseImpl.fs.js +20 -0
  19. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Decode.fs +1592 -0
  20. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Decode.fs.js +1417 -0
  21. package/dist/fable_modules/Thoth.Json.Core.0.9.0/DecoderCE.fs +106 -0
  22. package/dist/fable_modules/Thoth.Json.Core.0.9.0/DecoderCE.fs.js +63 -0
  23. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Encode.fs +380 -0
  24. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Encode.fs.js +289 -0
  25. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Thoth.Json.Core.fableproj +37 -0
  26. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Types.fs +76 -0
  27. package/dist/fable_modules/Thoth.Json.Core.0.9.0/Types.fs.js +37 -0
  28. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Casing.fs +113 -0
  29. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Casing.fs.js +173 -0
  30. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Decode.fs +1153 -0
  31. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Decode.fs.js +622 -0
  32. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Domain.fs +91 -0
  33. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Domain.fs.js +103 -0
  34. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Encode.fs +893 -0
  35. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Encode.fs.js +836 -0
  36. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Prelude.fs +435 -0
  37. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Prelude.fs.js +389 -0
  38. package/dist/fable_modules/Thoth.Json.Core.Auto.0.1.0/Thoth.Json.Core.Auto.fableproj +43 -0
  39. package/dist/fable_modules/Thoth.Json.JavaScript.0.5.0/Decode.fs +88 -0
  40. package/dist/fable_modules/Thoth.Json.JavaScript.0.5.0/Decode.fs.js +102 -0
  41. package/dist/fable_modules/Thoth.Json.JavaScript.0.5.0/Encode.fs +40 -0
  42. package/dist/fable_modules/Thoth.Json.JavaScript.0.5.0/Encode.fs.js +59 -0
  43. package/dist/fable_modules/Thoth.Json.JavaScript.0.5.0/Thoth.Json.JavaScript.fableproj +31 -0
  44. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Array.js +1347 -0
  45. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Async.js +134 -0
  46. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/AsyncBuilder.js +183 -0
  47. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/BigInt.js +306 -0
  48. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/BitConverter.js +138 -0
  49. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Boolean.js +22 -0
  50. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/CHANGELOG.md +191 -0
  51. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Char.js +202 -0
  52. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Choice.js +184 -0
  53. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/CollectionUtil.js +182 -0
  54. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/ConditionalWeakTable.js +21 -0
  55. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Date.js +755 -0
  56. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/DateOffset.js +261 -0
  57. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/DateOnly.js +124 -0
  58. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Decimal.js +236 -0
  59. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Double.js +47 -0
  60. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Encoding.js +185 -0
  61. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Event.js +93 -0
  62. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/FSharp.Collections.js +45 -0
  63. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/FSharp.Core.CompilerServices.js +27 -0
  64. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/FSharp.Core.js +156 -0
  65. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Global.js +29 -0
  66. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Guid.js +161 -0
  67. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Int32.js +135 -0
  68. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/List.js +1323 -0
  69. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Long.js +47 -0
  70. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/MailboxProcessor.js +94 -0
  71. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Map.js +1396 -0
  72. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/MapUtil.js +130 -0
  73. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/MutableMap.js +339 -0
  74. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/MutableSet.js +233 -0
  75. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Native.js +14 -0
  76. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Numeric.js +75 -0
  77. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Observable.js +113 -0
  78. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Option.js +104 -0
  79. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/README.md +3 -0
  80. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Random.js +172 -0
  81. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Range.js +45 -0
  82. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Reflection.js +460 -0
  83. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/RegExp.js +141 -0
  84. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Result.js +165 -0
  85. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Seq.js +1409 -0
  86. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Seq2.js +111 -0
  87. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Set.js +1788 -0
  88. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/String.js +649 -0
  89. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/System.Collections.Generic.js +333 -0
  90. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/System.Text.js +168 -0
  91. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/System.js +283 -0
  92. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/TimeOnly.js +122 -0
  93. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/TimeSpan.js +180 -0
  94. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Timer.js +67 -0
  95. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Types.js +198 -0
  96. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Unicode.13.0.0.js +4 -0
  97. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Uri.js +165 -0
  98. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/Util.js +792 -0
  99. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/big.d.ts +338 -0
  100. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/lib/big.js +825 -0
  101. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/package.json +24 -0
  102. package/dist/fable_modules/fable-library-js.5.0.0-rc.7/quotation.js +618 -0
  103. package/package.json +4 -5
  104. package/packages/FSharp.Oracle/XmlDoc.fs +12 -1
  105. package/packages/FSharp.Oracle/obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.fs +3 -0
  106. package/packages/FSharp.Oracle/obj/Debug/net10.0/FSharp.Oracle.AssemblyInfo.fs +17 -0
  107. package/packages/FSharp.Oracle/obj/Release/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.fs +3 -0
  108. package/packages/FSharp.Oracle/obj/Release/net10.0/FSharp.Oracle.AssemblyInfo.fs +17 -0
  109. package/packages/FSharp.Oracle.Schema/obj/Debug/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.fs +3 -0
  110. package/packages/FSharp.Oracle.Schema/obj/Debug/net10.0/FSharp.Oracle.Schema.AssemblyInfo.fs +17 -0
  111. package/packages/FSharp.Oracle.Schema/obj/Release/net10.0/.NETCoreApp,Version=v10.0.AssemblyAttributes.fs +3 -0
  112. package/packages/FSharp.Oracle.Schema/obj/Release/net10.0/FSharp.Oracle.Schema.AssemblyInfo.fs +17 -0
  113. package/oracle-bin/FSharp.Compiler.Service.dll +0 -0
  114. package/oracle-bin/FSharp.Core.dll +0 -0
  115. package/oracle-bin/FSharp.DependencyManager.Nuget.dll +0 -0
  116. package/oracle-bin/FSharp.Oracle.Schema.dll +0 -0
  117. package/oracle-bin/FSharp.Oracle.Schema.pdb +0 -0
  118. package/oracle-bin/FSharp.Oracle.Schema.xml +0 -219
  119. package/oracle-bin/Fable.Core.dll +0 -0
  120. package/oracle-bin/Oracle +0 -0
  121. package/oracle-bin/Oracle.deps.json +0 -280
  122. package/oracle-bin/Oracle.dll +0 -0
  123. package/oracle-bin/Oracle.pdb +0 -0
  124. package/oracle-bin/Oracle.runtimeconfig.json +0 -13
  125. package/oracle-bin/Oracle.xml +0 -111
  126. package/oracle-bin/Thoth.Json.Core.Auto.dll +0 -0
  127. package/oracle-bin/Thoth.Json.Core.dll +0 -0
  128. package/oracle-bin/Thoth.Json.System.Text.Json.dll +0 -0
  129. package/oracle-bin/cs/FSharp.Compiler.Service.resources.dll +0 -0
  130. package/oracle-bin/cs/FSharp.Core.resources.dll +0 -0
  131. package/oracle-bin/cs/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  132. package/oracle-bin/de/FSharp.Compiler.Service.resources.dll +0 -0
  133. package/oracle-bin/de/FSharp.Core.resources.dll +0 -0
  134. package/oracle-bin/de/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  135. package/oracle-bin/es/FSharp.Compiler.Service.resources.dll +0 -0
  136. package/oracle-bin/es/FSharp.Core.resources.dll +0 -0
  137. package/oracle-bin/es/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  138. package/oracle-bin/fr/FSharp.Compiler.Service.resources.dll +0 -0
  139. package/oracle-bin/fr/FSharp.Core.resources.dll +0 -0
  140. package/oracle-bin/fr/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  141. package/oracle-bin/it/FSharp.Compiler.Service.resources.dll +0 -0
  142. package/oracle-bin/it/FSharp.Core.resources.dll +0 -0
  143. package/oracle-bin/it/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  144. package/oracle-bin/ja/FSharp.Compiler.Service.resources.dll +0 -0
  145. package/oracle-bin/ja/FSharp.Core.resources.dll +0 -0
  146. package/oracle-bin/ja/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  147. package/oracle-bin/ko/FSharp.Compiler.Service.resources.dll +0 -0
  148. package/oracle-bin/ko/FSharp.Core.resources.dll +0 -0
  149. package/oracle-bin/ko/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  150. package/oracle-bin/pl/FSharp.Compiler.Service.resources.dll +0 -0
  151. package/oracle-bin/pl/FSharp.Core.resources.dll +0 -0
  152. package/oracle-bin/pl/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  153. package/oracle-bin/pt-BR/FSharp.Compiler.Service.resources.dll +0 -0
  154. package/oracle-bin/pt-BR/FSharp.Core.resources.dll +0 -0
  155. package/oracle-bin/pt-BR/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  156. package/oracle-bin/ru/FSharp.Compiler.Service.resources.dll +0 -0
  157. package/oracle-bin/ru/FSharp.Core.resources.dll +0 -0
  158. package/oracle-bin/ru/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  159. package/oracle-bin/tr/FSharp.Compiler.Service.resources.dll +0 -0
  160. package/oracle-bin/tr/FSharp.Core.resources.dll +0 -0
  161. package/oracle-bin/tr/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  162. package/oracle-bin/zh-Hans/FSharp.Compiler.Service.resources.dll +0 -0
  163. package/oracle-bin/zh-Hans/FSharp.Core.resources.dll +0 -0
  164. package/oracle-bin/zh-Hans/FSharp.DependencyManager.Nuget.resources.dll +0 -0
  165. package/oracle-bin/zh-Hant/FSharp.Compiler.Service.resources.dll +0 -0
  166. package/oracle-bin/zh-Hant/FSharp.Core.resources.dll +0 -0
  167. package/oracle-bin/zh-Hant/FSharp.DependencyManager.Nuget.resources.dll +0 -0
@@ -0,0 +1,106 @@
1
+ namespace Thoth.Json.Core
2
+
3
+ [<AutoOpen>]
4
+ module DecoderCE =
5
+
6
+ type DecoderBuilder internal () =
7
+ member inline _.Bind(m, f) = Decode.andThen f m
8
+
9
+ member _.BindReturn(m, f) = Decode.map f m
10
+
11
+ member _.Bind2Return(d1, d2, ctor: struct ('a * 'b) -> 't) =
12
+ Decode.map2 (fun a b -> ctor struct (a, b)) d1 d2
13
+
14
+ member _.Bind3Return(d1, d2, d3, ctor: struct ('a * 'b * 'c) -> 't) =
15
+ Decode.map3 (fun a b c -> ctor struct (a, b, c)) d1 d2 d3
16
+
17
+ member _.Bind4Return
18
+ (d1, d2, d3, d4, ctor: struct ('a * 'b * 'c * 'd) -> 't)
19
+ =
20
+ Decode.map4 (fun a b c d -> ctor struct (a, b, c, d)) d1 d2 d3 d4
21
+
22
+ member _.Bind5Return
23
+ (d1, d2, d3, d4, d5, ctor: struct ('a * 'b * 'c * 'd * 'e) -> 't)
24
+ =
25
+ Decode.map5
26
+ (fun a b c d e -> ctor struct (a, b, c, d, e))
27
+ d1
28
+ d2
29
+ d3
30
+ d4
31
+ d5
32
+
33
+ member _.Bind6Return
34
+ (
35
+ d1,
36
+ d2,
37
+ d3,
38
+ d4,
39
+ d5,
40
+ d6,
41
+ ctor: struct ('a * 'b * 'c * 'd * 'e * 'f) -> 't
42
+ )
43
+ =
44
+ Decode.map6
45
+ (fun a b c d e f -> ctor struct (a, b, c, d, e, f))
46
+ d1
47
+ d2
48
+ d3
49
+ d4
50
+ d5
51
+ d6
52
+
53
+ member _.Bind7Return
54
+ (
55
+ d1,
56
+ d2,
57
+ d3,
58
+ d4,
59
+ d5,
60
+ d6,
61
+ d7,
62
+ ctor: struct ('a * 'b * 'c * 'd * 'e * 'f * 'g) -> 't
63
+ )
64
+ =
65
+ Decode.map7
66
+ (fun a b c d e f g -> ctor struct (a, b, c, d, e, f, g))
67
+ d1
68
+ d2
69
+ d3
70
+ d4
71
+ d5
72
+ d6
73
+ d7
74
+
75
+ member _.Bind8Return
76
+ (
77
+ d1,
78
+ d2,
79
+ d3,
80
+ d4,
81
+ d5,
82
+ d6,
83
+ d7,
84
+ d8,
85
+ ctor: struct ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h) -> 't
86
+ )
87
+ =
88
+ Decode.map8
89
+ (fun a b c d e f g h -> ctor struct (a, b, c, d, e, f, g, h))
90
+ d1
91
+ d2
92
+ d3
93
+ d4
94
+ d5
95
+ d6
96
+ d7
97
+ d8
98
+
99
+ member _.MergeSources(d1, d2) =
100
+ Decode.map2 (fun a b -> struct (a, b)) d1 d2
101
+
102
+ member _.Return(x) = Decode.succeed x
103
+
104
+ member _.ReturnFrom(x: Decoder<'a>) = x
105
+
106
+ let decoder = DecoderBuilder()
@@ -0,0 +1,63 @@
1
+
2
+ import { class_type } from "../fable-library-js.5.0.0-rc.7/Reflection.js";
3
+ import { succeed, map8, map7, map6, map5, map4, map3, map2, map } from "./Decode.fs.js";
4
+
5
+ export class DecoderBuilder {
6
+ constructor() {
7
+ }
8
+ }
9
+
10
+ export function DecoderBuilder_$reflection() {
11
+ return class_type("Thoth.Json.Core.DecoderCE.DecoderBuilder", undefined, DecoderBuilder);
12
+ }
13
+
14
+ export function DecoderBuilder_$ctor() {
15
+ return new DecoderBuilder();
16
+ }
17
+
18
+ export function DecoderBuilder__BindReturn_6BCFE77E(_, m, f) {
19
+ return map(f, m);
20
+ }
21
+
22
+ export function DecoderBuilder__Bind2Return_Z12312F75(_, d1, d2, ctor) {
23
+ return map2((a, b) => ctor([a, b]), d1, d2);
24
+ }
25
+
26
+ export function DecoderBuilder__Bind3Return_B877D49(_, d1, d2, d3, ctor) {
27
+ return map3((a, b, c) => ctor([a, b, c]), d1, d2, d3);
28
+ }
29
+
30
+ export function DecoderBuilder__Bind4Return_Z70E81EB5(_, d1, d2, d3, d4, ctor) {
31
+ return map4((a, b, c, d) => ctor([a, b, c, d]), d1, d2, d3, d4);
32
+ }
33
+
34
+ export function DecoderBuilder__Bind5Return_1A977209(_, d1, d2, d3, d4, d5, ctor) {
35
+ return map5((a, b, c, d, e) => ctor([a, b, c, d, e]), d1, d2, d3, d4, d5);
36
+ }
37
+
38
+ export function DecoderBuilder__Bind6Return_Z1E2849F5(_, d1, d2, d3, d4, d5, d6, ctor) {
39
+ return map6((a, b, c, d, e, f) => ctor([a, b, c, d, e, f]), d1, d2, d3, d4, d5, d6);
40
+ }
41
+
42
+ export function DecoderBuilder__Bind7Return_Z16900C37(_, d1, d2, d3, d4, d5, d6, d7, ctor) {
43
+ return map7((a, b, c, d, e, f, g) => ctor([a, b, c, d, e, f, g]), d1, d2, d3, d4, d5, d6, d7);
44
+ }
45
+
46
+ export function DecoderBuilder__Bind8Return_512F4ECB(_, d1, d2, d3, d4, d5, d6, d7, d8, ctor) {
47
+ return map8((a, b, c, d, e, f, g, h) => ctor([a, b, c, d, e, f, g, h]), d1, d2, d3, d4, d5, d6, d7, d8);
48
+ }
49
+
50
+ export function DecoderBuilder__MergeSources_83ADF00(_, d1, d2) {
51
+ return map2((a, b) => [a, b], d1, d2);
52
+ }
53
+
54
+ export function DecoderBuilder__Return_1505(_, x) {
55
+ return succeed(x);
56
+ }
57
+
58
+ export function DecoderBuilder__ReturnFrom_1FBE35A8(_, x) {
59
+ return x;
60
+ }
61
+
62
+ export const decoder = DecoderBuilder_$ctor();
63
+
@@ -0,0 +1,380 @@
1
+ namespace Thoth.Json.Core
2
+
3
+ open System.Globalization
4
+ open System
5
+
6
+ [<RequireQualifiedAccess>]
7
+ module Encode =
8
+
9
+ let inline string value =
10
+ { new IEncodable with
11
+ member _.Encode(helpers) = helpers.encodeString value
12
+ }
13
+
14
+ let inline char value =
15
+ { new IEncodable with
16
+ member _.Encode(helpers) = helpers.encodeChar value
17
+ }
18
+
19
+ let inline guid value = value.ToString() |> string
20
+
21
+ let inline float value =
22
+ { new IEncodable with
23
+ member _.Encode(helpers) = helpers.encodeDecimalNumber value
24
+ }
25
+
26
+ let float32 (value: float32) = float (Operators.float value)
27
+
28
+ let inline decimal (value: decimal) =
29
+ value.ToString(CultureInfo.InvariantCulture) |> string
30
+
31
+ let inline nil<'T> =
32
+ { new IEncodable with
33
+ member _.Encode(helpers) = helpers.encodeNull ()
34
+ }
35
+
36
+ let inline bool value =
37
+ { new IEncodable with
38
+ member _.Encode(helpers) = helpers.encodeBool value
39
+ }
40
+
41
+ let inline object (values: seq<string * IEncodable>) =
42
+ { new IEncodable with
43
+ member _.Encode(helpers) =
44
+ values
45
+ |> Seq.map (fun (k, v) -> (k, v.Encode(helpers)))
46
+ |> helpers.encodeObject
47
+ }
48
+
49
+ let inline array (values: IEncodable array) =
50
+ { new IEncodable with
51
+ member _.Encode(helpers) =
52
+ values
53
+ |> Array.map (fun v -> v.Encode(helpers))
54
+ |> helpers.encodeArray
55
+ }
56
+
57
+ let list (values: IEncodable list) =
58
+ { new IEncodable with
59
+ member _.Encode(helpers) =
60
+ values
61
+ |> List.map (fun v -> v.Encode(helpers))
62
+ |> helpers.encodeList
63
+ }
64
+
65
+ let seq (values: IEncodable seq) =
66
+ { new IEncodable with
67
+ member _.Encode(helpers) =
68
+ values
69
+ |> Seq.map (fun v -> v.Encode(helpers))
70
+ |> helpers.encodeSeq
71
+ }
72
+
73
+ let resizeArray (values: IEncodable ResizeArray) =
74
+ { new IEncodable with
75
+ member _.Encode(helpers) =
76
+ let result = ResizeArray(values.Count)
77
+
78
+ for v in values do
79
+ result.Add(v.Encode(helpers))
80
+
81
+ helpers.encodeResizeArray result
82
+ }
83
+
84
+ let dict (values: Map<string, IEncodable>) : IEncodable =
85
+ values |> Map.toSeq |> object
86
+
87
+ let inline bigint (value: bigint) = value.ToString() |> string
88
+
89
+ let inline datetimeOffset (value: DateTimeOffset) =
90
+ value.ToString("O", CultureInfo.InvariantCulture) |> string
91
+
92
+ let inline timespan value = value.ToString() |> string
93
+
94
+ let inline datetime (value: DateTime) =
95
+ value.ToString("O", CultureInfo.InvariantCulture) |> string
96
+
97
+ let inline sbyte (value: sbyte) =
98
+ { new IEncodable with
99
+ member _.Encode(helpers) =
100
+ helpers.encodeSignedIntegralNumber (int32 value)
101
+ }
102
+
103
+ let inline byte (value: byte) =
104
+ { new IEncodable with
105
+ member _.Encode(helpers) =
106
+ helpers.encodeUnsignedIntegralNumber (uint32 value)
107
+ }
108
+
109
+ let inline int16 (value: int16) =
110
+ { new IEncodable with
111
+ member _.Encode(helpers) =
112
+ helpers.encodeSignedIntegralNumber (int32 value)
113
+ }
114
+
115
+ let inline uint16 (value: uint16) =
116
+ { new IEncodable with
117
+ member _.Encode(helpers) =
118
+ helpers.encodeUnsignedIntegralNumber (uint32 value)
119
+ }
120
+
121
+ let inline int (value: int) =
122
+ { new IEncodable with
123
+ member _.Encode(helpers) =
124
+ helpers.encodeSignedIntegralNumber value
125
+ }
126
+
127
+ let inline uint32 (value: uint32) =
128
+ { new IEncodable with
129
+ member _.Encode(helpers) =
130
+ helpers.encodeUnsignedIntegralNumber value
131
+ }
132
+
133
+ let inline int64 (value: int64) =
134
+ value.ToString(CultureInfo.InvariantCulture) |> string
135
+
136
+ let inline uint64 (value: uint64) =
137
+ value.ToString(CultureInfo.InvariantCulture) |> string
138
+
139
+ let inline unit () = nil
140
+
141
+ let tuple2 (enc1: Encoder<'T1>) (enc2: Encoder<'T2>) (v1, v2) : IEncodable =
142
+ array
143
+ [|
144
+ enc1 v1
145
+ enc2 v2
146
+ |]
147
+
148
+ let tuple3
149
+ (enc1: Encoder<'T1>)
150
+ (enc2: Encoder<'T2>)
151
+ (enc3: Encoder<'T3>)
152
+ (v1, v2, v3)
153
+ : IEncodable
154
+ =
155
+ array
156
+ [|
157
+ enc1 v1
158
+ enc2 v2
159
+ enc3 v3
160
+ |]
161
+
162
+ let tuple4
163
+ (enc1: Encoder<'T1>)
164
+ (enc2: Encoder<'T2>)
165
+ (enc3: Encoder<'T3>)
166
+ (enc4: Encoder<'T4>)
167
+ (v1, v2, v3, v4)
168
+ : IEncodable
169
+ =
170
+ array
171
+ [|
172
+ enc1 v1
173
+ enc2 v2
174
+ enc3 v3
175
+ enc4 v4
176
+ |]
177
+
178
+ let tuple5
179
+ (enc1: Encoder<'T1>)
180
+ (enc2: Encoder<'T2>)
181
+ (enc3: Encoder<'T3>)
182
+ (enc4: Encoder<'T4>)
183
+ (enc5: Encoder<'T5>)
184
+ (v1, v2, v3, v4, v5)
185
+ : IEncodable
186
+ =
187
+ array
188
+ [|
189
+ enc1 v1
190
+ enc2 v2
191
+ enc3 v3
192
+ enc4 v4
193
+ enc5 v5
194
+ |]
195
+
196
+ let tuple6
197
+ (enc1: Encoder<'T1>)
198
+ (enc2: Encoder<'T2>)
199
+ (enc3: Encoder<'T3>)
200
+ (enc4: Encoder<'T4>)
201
+ (enc5: Encoder<'T5>)
202
+ (enc6: Encoder<'T6>)
203
+ (v1, v2, v3, v4, v5, v6)
204
+ : IEncodable
205
+ =
206
+ array
207
+ [|
208
+ enc1 v1
209
+ enc2 v2
210
+ enc3 v3
211
+ enc4 v4
212
+ enc5 v5
213
+ enc6 v6
214
+ |]
215
+
216
+ let tuple7
217
+ (enc1: Encoder<'T1>)
218
+ (enc2: Encoder<'T2>)
219
+ (enc3: Encoder<'T3>)
220
+ (enc4: Encoder<'T4>)
221
+ (enc5: Encoder<'T5>)
222
+ (enc6: Encoder<'T6>)
223
+ (enc7: Encoder<'T7>)
224
+ (v1, v2, v3, v4, v5, v6, v7)
225
+ : IEncodable
226
+ =
227
+ array
228
+ [|
229
+ enc1 v1
230
+ enc2 v2
231
+ enc3 v3
232
+ enc4 v4
233
+ enc5 v5
234
+ enc6 v6
235
+ enc7 v7
236
+ |]
237
+
238
+ let tuple8
239
+ (enc1: Encoder<'T1>)
240
+ (enc2: Encoder<'T2>)
241
+ (enc3: Encoder<'T3>)
242
+ (enc4: Encoder<'T4>)
243
+ (enc5: Encoder<'T5>)
244
+ (enc6: Encoder<'T6>)
245
+ (enc7: Encoder<'T7>)
246
+ (enc8: Encoder<'T8>)
247
+ (v1, v2, v3, v4, v5, v6, v7, v8)
248
+ : IEncodable
249
+ =
250
+ array
251
+ [|
252
+ enc1 v1
253
+ enc2 v2
254
+ enc3 v3
255
+ enc4 v4
256
+ enc5 v5
257
+ enc6 v6
258
+ enc7 v7
259
+ enc8 v8
260
+ |]
261
+
262
+
263
+ let map
264
+ (keyEncoder: Encoder<'key>)
265
+ (valueEncoder: Encoder<'value>)
266
+ (values: Map<'key, 'value>)
267
+ : IEncodable
268
+ =
269
+ values
270
+ |> Map.toList
271
+ |> List.map (tuple2 keyEncoder valueEncoder)
272
+ |> list
273
+
274
+ let lazily<'t> (enc: Lazy<Encoder<'t>>) : Encoder<'t> =
275
+ fun (x: 't) -> enc.Value x
276
+
277
+ ////////////
278
+ /// Enum ///
279
+ ///////////
280
+
281
+ module Enum =
282
+
283
+ let byte<'TEnum when 'TEnum: enum<byte>> (value: 'TEnum) : IEncodable =
284
+ LanguagePrimitives.EnumToValue value |> byte
285
+
286
+ let sbyte<'TEnum when 'TEnum: enum<sbyte>>
287
+ (value: 'TEnum)
288
+ : IEncodable
289
+ =
290
+ LanguagePrimitives.EnumToValue value |> sbyte
291
+
292
+ let int16<'TEnum when 'TEnum: enum<int16>>
293
+ (value: 'TEnum)
294
+ : IEncodable
295
+ =
296
+ LanguagePrimitives.EnumToValue value |> int16
297
+
298
+ let uint16<'TEnum when 'TEnum: enum<uint16>>
299
+ (value: 'TEnum)
300
+ : IEncodable
301
+ =
302
+ LanguagePrimitives.EnumToValue value |> uint16
303
+
304
+ let int<'TEnum when 'TEnum: enum<int>> (value: 'TEnum) : IEncodable =
305
+ LanguagePrimitives.EnumToValue value |> int
306
+
307
+ let uint32<'TEnum when 'TEnum: enum<uint32>>
308
+ (value: 'TEnum)
309
+ : IEncodable
310
+ =
311
+ LanguagePrimitives.EnumToValue value |> uint32
312
+
313
+ /// <summary>
314
+ /// Encodes an option value using the provided encoder.
315
+ ///
316
+ /// Attention, this encoder is lossy, it's result will not be able to distinguish between `'T option` and `'T option option`.
317
+ ///
318
+ /// If you need to distinguish between `'T option` and `'T option option`, use `losslessOption`.
319
+ /// </summary>
320
+ /// <param name="encoder">The encoder to apply if the value is Some</param>
321
+ /// <typeparam name="'a">The type of the value to encode</typeparam>
322
+ /// <returns>
323
+ /// The result of the encoder if the value is Some, otherwise nil
324
+ /// </returns>
325
+ let lossyOption (encoder: Encoder<'a>) =
326
+ Option.map encoder >> Option.defaultWith (fun _ -> nil)
327
+
328
+ /// <summary>
329
+ /// Encodes an option value using the provided encoder.
330
+ ///
331
+ /// This encoder is lossless, it's result will be able to distinguish between `'T option` and `'T option option`.
332
+ ///
333
+ /// If you don't need to distinguish between `'T option` and `'T option option`, use `lossyOption`.
334
+ /// </summary>
335
+ /// <param name="encoder">The encoder to apply if the value is Some</param>
336
+ /// <typeparam name="'a">The type of the value to encode</typeparam>
337
+ /// <returns>
338
+ /// If the value is Some, the object will have the following fields:
339
+ ///
340
+ /// - `$type` field set to `option`
341
+ /// - `$case` field set to `some`
342
+ /// - `$value` field set to the result of the encoder.
343
+ ///
344
+ /// If the value is None, the object will have the following fields:
345
+ ///
346
+ /// - `$type` field set to `option`
347
+ /// - `$case` field set to `none`
348
+ /// </returns>
349
+ let losslessOption (encoder: Encoder<'a>) (value: 'a option) =
350
+ match value with
351
+ | Some v ->
352
+ object
353
+ [
354
+ "$type", string "option"
355
+ "$case", string "some"
356
+ "$value", encoder v
357
+ ]
358
+ | None ->
359
+ object
360
+ [
361
+ "$type", string "option"
362
+ "$case", string "none"
363
+ ]
364
+
365
+ let rec value: Encoder<Json> =
366
+ fun json ->
367
+ match json with
368
+ | Json.Null -> nil
369
+ | Json.Boolean b -> bool b
370
+ | Json.String s -> string s
371
+ | Json.Number f -> float f
372
+ | Json.Array xs -> list (List.map value xs)
373
+ | Json.Object kvps ->
374
+ kvps |> Seq.map (fun (k, v) -> k, value v) |> object
375
+
376
+ let inline toJsonValue
377
+ (helpers: IEncoderHelpers<'JsonValue>)
378
+ (json: IEncodable)
379
+ =
380
+ json.Encode(helpers)