@sdkgen/fsharp-generator 0.0.0-dev.20231002135133 → 0.0.0-dev.20231002175619
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.
- package/dist/fsharp-server.js +90 -0
- package/dist/helpers.js +488 -0
- package/dist/index.js +2 -0
- package/package.json +13 -6
- package/.eslintrc.json +0 -3
- package/.prettierrc +0 -12
- package/dist/src/fsharp-server.js +0 -93
- package/dist/src/helpers.js +0 -497
- package/dist/src/index.js +0 -17
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/{src/fsharp-server.d.ts → fsharp-server.d.ts} +0 -0
- /package/dist/{src/helpers.d.ts → helpers.d.ts} +0 -0
- /package/dist/{src/index.d.ts → index.d.ts} +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { astToJson, VoidPrimitiveType } from "@sdkgen/parser";
|
|
2
|
+
import { capitalize, decodeType, encodeType, generateEnum, generateStruct, generateTypeName, ident } from "./helpers";
|
|
3
|
+
export function generateFSharpServerSource(ast) {
|
|
4
|
+
let code = `module rec SdkgenGenerated
|
|
5
|
+
open Sdkgen.Runtime
|
|
6
|
+
open Sdkgen.Helpers
|
|
7
|
+
open Sdkgen.Context
|
|
8
|
+
open System.Threading.Tasks
|
|
9
|
+
open System.Text.Json
|
|
10
|
+
open System
|
|
11
|
+
open System.Globalization
|
|
12
|
+
#if NET5_0
|
|
13
|
+
// To use tasks as computation expression in .NET 5 install https://www.nuget.org/packages/TaskBuilder.fs/
|
|
14
|
+
open FSharp.Control.Tasks.V2.ContextInsensitive
|
|
15
|
+
#endif
|
|
16
|
+
`;
|
|
17
|
+
for (const error of ast.errors) {
|
|
18
|
+
code += `
|
|
19
|
+
type ${error.name}Exception =
|
|
20
|
+
inherit SdkgenException
|
|
21
|
+
|
|
22
|
+
new(message: string) = {
|
|
23
|
+
inherit SdkgenException("${error.name}", message, null)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
new(message: string, inner: Exception) = {
|
|
27
|
+
inherit SdkgenException("${error.name}", message, inner)
|
|
28
|
+
}\n`;
|
|
29
|
+
}
|
|
30
|
+
for (const type of ast.enumTypes) {
|
|
31
|
+
code += `\n${generateEnum(type)}\n`;
|
|
32
|
+
}
|
|
33
|
+
for (const type of ast.structTypes) {
|
|
34
|
+
code += `\n${generateStruct(type)}\n`;
|
|
35
|
+
}
|
|
36
|
+
code += `
|
|
37
|
+
type Api() =`;
|
|
38
|
+
for (const op of ast.operations) {
|
|
39
|
+
const returnTypeAngle = op.returnType instanceof VoidPrimitiveType ? "" : `<${generateTypeName(op.returnType)}>`;
|
|
40
|
+
const argsInRecord = op.args.length > 0 ? `{| ${op.args.map(arg => `${arg.name}: ${generateTypeName(arg.type)};`).join("")} |} ->` : "";
|
|
41
|
+
code += `
|
|
42
|
+
member val ${capitalize(op.name)}: Context -> ${argsInRecord} Task${returnTypeAngle} =
|
|
43
|
+
fun _ -> (raise (FatalException("Function '${op.name}' not implemented.")))
|
|
44
|
+
with get, set
|
|
45
|
+
`;
|
|
46
|
+
}
|
|
47
|
+
code += `
|
|
48
|
+
interface BaseApi with
|
|
49
|
+
member __.ExecuteFunction(context_: Context, resultWriter_: Utf8JsonWriter) : Task =
|
|
50
|
+
task {
|
|
51
|
+
match context_.Name with`;
|
|
52
|
+
for (const op of ast.operations) {
|
|
53
|
+
code += `
|
|
54
|
+
| ${JSON.stringify(op.name)} ->`;
|
|
55
|
+
for (const arg of op.args) {
|
|
56
|
+
code += `
|
|
57
|
+
let ${arg.name}Json_ =
|
|
58
|
+
match context_.Args.TryGetValue(${JSON.stringify(arg.name)}) with
|
|
59
|
+
| true, v -> v
|
|
60
|
+
| _ -> raise (FatalException("'${op.name}().args.${arg.name}' must be set to a value of type ${arg.type.name}."))
|
|
61
|
+
|
|
62
|
+
let ${ident(arg.name)} =
|
|
63
|
+
${decodeType(arg.type, `${arg.name}Json_`, `"${op.name}().args.${arg.name}"`, ident(arg.name)).replace(/\n/gu, "\n ")}`;
|
|
64
|
+
}
|
|
65
|
+
if (op.returnType instanceof VoidPrimitiveType) {
|
|
66
|
+
code += `
|
|
67
|
+
|
|
68
|
+
do! (__.${capitalize(op.name)} context_ ${op.args.length > 0 ? "{|" : ""} ${op.args
|
|
69
|
+
.map(arg => `${arg.name} = ${ident(arg.name)}`)
|
|
70
|
+
.join("; ")} ${op.args.length > 0 ? "|}" : ""})
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
code += `
|
|
75
|
+
|
|
76
|
+
let! result_ = (__.${capitalize(op.name)} context_ ${op.args.length > 0 ? "{|" : ""} ${op.args
|
|
77
|
+
.map(arg => `${arg.name} = ${ident(arg.name)}`)
|
|
78
|
+
.join("; ")} ${op.args.length > 0 ? "|}" : ""})
|
|
79
|
+
${encodeType(op.returnType, `result_`, `"${op.name}().ret"`, 1, false).replace(/\n/gu, "\n ")}`;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
code += `
|
|
83
|
+
|
|
84
|
+
| _ -> raise (FatalException($"Unknown function '{context_.Name}'."))
|
|
85
|
+
} :> Task`;
|
|
86
|
+
code += `
|
|
87
|
+
member __.GetAstJson() = """${JSON.stringify(astToJson(ast), null, 4).replace(/\n/gu, "\n ")}""";`;
|
|
88
|
+
return code;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnNoYXJwLXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mc2hhcnAtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEgsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEdBQVk7SUFDckQsSUFBSSxJQUFJLEdBQUc7Ozs7Ozs7Ozs7OztDQVlaLENBQUM7SUFFQSxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDOUIsSUFBSSxJQUFJO09BQ0wsS0FBSyxDQUFDLElBQUk7Ozs7K0JBSWMsS0FBSyxDQUFDLElBQUk7Ozs7K0JBSVYsS0FBSyxDQUFDLElBQUk7TUFDbkMsQ0FBQztLQUNKO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFO1FBQ2hDLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ3JDO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO1FBQ2xDLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ3ZDO0lBRUQsSUFBSSxJQUFJO2FBQ0csQ0FBQztJQUVaLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRTtRQUMvQixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7UUFF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
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import { ArrayType, Base64PrimitiveType, BigIntPrimitiveType, BoolPrimitiveType, BytesPrimitiveType, CnpjPrimitiveType, CpfPrimitiveType, DatePrimitiveType, DateTimePrimitiveType, EmailPrimitiveType, EnumType, FloatPrimitiveType, HexPrimitiveType, HtmlPrimitiveType, IntPrimitiveType, JsonPrimitiveType, MoneyPrimitiveType, OptionalType, StringPrimitiveType, StructType, TypeReference, UIntPrimitiveType, UrlPrimitiveType, UuidPrimitiveType, VoidPrimitiveType, XmlPrimitiveType, } from "@sdkgen/parser";
|
|
2
|
+
const reservedWords = [
|
|
3
|
+
"abstract",
|
|
4
|
+
"as",
|
|
5
|
+
"base",
|
|
6
|
+
"bool",
|
|
7
|
+
"break",
|
|
8
|
+
"byte",
|
|
9
|
+
"case",
|
|
10
|
+
"catch",
|
|
11
|
+
"char",
|
|
12
|
+
"checked",
|
|
13
|
+
"class",
|
|
14
|
+
"const",
|
|
15
|
+
"continue",
|
|
16
|
+
"decimal",
|
|
17
|
+
"default",
|
|
18
|
+
"delegate",
|
|
19
|
+
"do",
|
|
20
|
+
"double",
|
|
21
|
+
"else",
|
|
22
|
+
"enum",
|
|
23
|
+
"event",
|
|
24
|
+
"explicit",
|
|
25
|
+
"extern",
|
|
26
|
+
"false",
|
|
27
|
+
"finally",
|
|
28
|
+
"fixed",
|
|
29
|
+
"float",
|
|
30
|
+
"for",
|
|
31
|
+
"foreach",
|
|
32
|
+
"goto",
|
|
33
|
+
"if",
|
|
34
|
+
"implicit",
|
|
35
|
+
"in",
|
|
36
|
+
"int",
|
|
37
|
+
"interface",
|
|
38
|
+
"internal",
|
|
39
|
+
"is",
|
|
40
|
+
"lock",
|
|
41
|
+
"long",
|
|
42
|
+
"namespace",
|
|
43
|
+
"new",
|
|
44
|
+
"null",
|
|
45
|
+
"object",
|
|
46
|
+
"operator",
|
|
47
|
+
"out",
|
|
48
|
+
"override",
|
|
49
|
+
"params",
|
|
50
|
+
"private",
|
|
51
|
+
"protected",
|
|
52
|
+
"public",
|
|
53
|
+
"readonly",
|
|
54
|
+
"ref",
|
|
55
|
+
"return",
|
|
56
|
+
"sbyte",
|
|
57
|
+
"sealed",
|
|
58
|
+
"short",
|
|
59
|
+
"sizeof",
|
|
60
|
+
"stackalloc",
|
|
61
|
+
"static",
|
|
62
|
+
"string",
|
|
63
|
+
"struct",
|
|
64
|
+
"switch",
|
|
65
|
+
"this",
|
|
66
|
+
"throw",
|
|
67
|
+
"true",
|
|
68
|
+
"try",
|
|
69
|
+
"typeof",
|
|
70
|
+
"uint",
|
|
71
|
+
"ulong",
|
|
72
|
+
"unchecked",
|
|
73
|
+
"unsafe",
|
|
74
|
+
"ushort",
|
|
75
|
+
"using",
|
|
76
|
+
"using",
|
|
77
|
+
"static",
|
|
78
|
+
"virtual",
|
|
79
|
+
"void",
|
|
80
|
+
"volatile",
|
|
81
|
+
"while",
|
|
82
|
+
"type",
|
|
83
|
+
"end",
|
|
84
|
+
"id",
|
|
85
|
+
];
|
|
86
|
+
const typesWithNativeNullable = [
|
|
87
|
+
StringPrimitiveType,
|
|
88
|
+
HtmlPrimitiveType,
|
|
89
|
+
CpfPrimitiveType,
|
|
90
|
+
CnpjPrimitiveType,
|
|
91
|
+
BytesPrimitiveType,
|
|
92
|
+
EmailPrimitiveType,
|
|
93
|
+
UrlPrimitiveType,
|
|
94
|
+
UuidPrimitiveType,
|
|
95
|
+
HexPrimitiveType,
|
|
96
|
+
Base64PrimitiveType,
|
|
97
|
+
XmlPrimitiveType,
|
|
98
|
+
StructType,
|
|
99
|
+
ArrayType,
|
|
100
|
+
];
|
|
101
|
+
const needsTempVarForNullable = [
|
|
102
|
+
BigIntPrimitiveType,
|
|
103
|
+
DatePrimitiveType,
|
|
104
|
+
DateTimePrimitiveType,
|
|
105
|
+
FloatPrimitiveType,
|
|
106
|
+
IntPrimitiveType,
|
|
107
|
+
MoneyPrimitiveType,
|
|
108
|
+
UIntPrimitiveType,
|
|
109
|
+
ArrayType,
|
|
110
|
+
];
|
|
111
|
+
export function ident(name) {
|
|
112
|
+
return reservedWords.includes(name) ? `${name}'` : name;
|
|
113
|
+
}
|
|
114
|
+
export function capitalize(name) {
|
|
115
|
+
return name[0].toUpperCase() + name.slice(1);
|
|
116
|
+
}
|
|
117
|
+
export function generateTypeName(type) {
|
|
118
|
+
switch (type.constructor) {
|
|
119
|
+
case StringPrimitiveType:
|
|
120
|
+
return "string";
|
|
121
|
+
case IntPrimitiveType:
|
|
122
|
+
return "int";
|
|
123
|
+
case UIntPrimitiveType:
|
|
124
|
+
return "uint";
|
|
125
|
+
case FloatPrimitiveType:
|
|
126
|
+
return "double";
|
|
127
|
+
case BigIntPrimitiveType:
|
|
128
|
+
return "bigint";
|
|
129
|
+
case DatePrimitiveType:
|
|
130
|
+
case DateTimePrimitiveType:
|
|
131
|
+
return "DateTime";
|
|
132
|
+
case BoolPrimitiveType:
|
|
133
|
+
return "bool";
|
|
134
|
+
case BytesPrimitiveType:
|
|
135
|
+
return "byte[]";
|
|
136
|
+
case MoneyPrimitiveType:
|
|
137
|
+
return "decimal";
|
|
138
|
+
case UuidPrimitiveType:
|
|
139
|
+
return "Guid";
|
|
140
|
+
case CpfPrimitiveType:
|
|
141
|
+
case CnpjPrimitiveType:
|
|
142
|
+
case EmailPrimitiveType:
|
|
143
|
+
case HtmlPrimitiveType:
|
|
144
|
+
case UrlPrimitiveType:
|
|
145
|
+
case HexPrimitiveType:
|
|
146
|
+
case Base64PrimitiveType:
|
|
147
|
+
case XmlPrimitiveType:
|
|
148
|
+
return "string";
|
|
149
|
+
case VoidPrimitiveType:
|
|
150
|
+
return "void";
|
|
151
|
+
case JsonPrimitiveType:
|
|
152
|
+
return "JsonElement";
|
|
153
|
+
case OptionalType:
|
|
154
|
+
return `${generateTypeName(type.base)} option`;
|
|
155
|
+
case ArrayType:
|
|
156
|
+
return `${generateTypeName(type.base)} list`;
|
|
157
|
+
case StructType:
|
|
158
|
+
return type.name;
|
|
159
|
+
case EnumType:
|
|
160
|
+
return type.name;
|
|
161
|
+
case TypeReference:
|
|
162
|
+
return generateTypeName(type.type);
|
|
163
|
+
default:
|
|
164
|
+
throw new Error(`BUG: generateTypeName with ${type.constructor.name}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export function decodeType(type, jsonElementVar, path, targetVar, suffix = 1, maybeNull = true) {
|
|
168
|
+
switch (type.constructor) {
|
|
169
|
+
case IntPrimitiveType: {
|
|
170
|
+
return `
|
|
171
|
+
decodeInt32 ${jsonElementVar} ${path}
|
|
172
|
+
`
|
|
173
|
+
.replace(/\n {16}/gu, "\n")
|
|
174
|
+
.trim();
|
|
175
|
+
}
|
|
176
|
+
case UIntPrimitiveType: {
|
|
177
|
+
return `
|
|
178
|
+
decodeUInt32 ${jsonElementVar} ${path}
|
|
179
|
+
`
|
|
180
|
+
.replace(/\n {16}/gu, "\n")
|
|
181
|
+
.trim();
|
|
182
|
+
}
|
|
183
|
+
case MoneyPrimitiveType: {
|
|
184
|
+
return `
|
|
185
|
+
(decodeMoney ${jsonElementVar} ${path}) / 100m
|
|
186
|
+
`
|
|
187
|
+
.replace(/\n {16}/gu, "\n")
|
|
188
|
+
.trim();
|
|
189
|
+
}
|
|
190
|
+
case FloatPrimitiveType: {
|
|
191
|
+
return `
|
|
192
|
+
decodeFloat ${jsonElementVar} ${path}
|
|
193
|
+
`
|
|
194
|
+
.replace(/\n {16}/gu, "\n")
|
|
195
|
+
.trim();
|
|
196
|
+
}
|
|
197
|
+
case BigIntPrimitiveType: {
|
|
198
|
+
return `
|
|
199
|
+
decodeBigInt ${jsonElementVar} ${path}
|
|
200
|
+
`
|
|
201
|
+
.replace(/\n {16}/gu, "\n")
|
|
202
|
+
.trim();
|
|
203
|
+
}
|
|
204
|
+
case StringPrimitiveType: {
|
|
205
|
+
return `
|
|
206
|
+
decodeString ${jsonElementVar} ${path}
|
|
207
|
+
`
|
|
208
|
+
.replace(/\n {16}/gu, "\n")
|
|
209
|
+
.trim();
|
|
210
|
+
}
|
|
211
|
+
case HtmlPrimitiveType: {
|
|
212
|
+
// TODO: validate HTML
|
|
213
|
+
return `
|
|
214
|
+
decodeHtml ${jsonElementVar} ${path}
|
|
215
|
+
`
|
|
216
|
+
.replace(/\n {16}/gu, "\n")
|
|
217
|
+
.trim();
|
|
218
|
+
}
|
|
219
|
+
case CpfPrimitiveType: {
|
|
220
|
+
// TODO: validate CPF
|
|
221
|
+
return `
|
|
222
|
+
decodeCpf ${jsonElementVar} ${path}
|
|
223
|
+
`
|
|
224
|
+
.replace(/\n {16}/gu, "\n")
|
|
225
|
+
.trim();
|
|
226
|
+
}
|
|
227
|
+
case CnpjPrimitiveType: {
|
|
228
|
+
// TODO: validate CNPJ
|
|
229
|
+
return `
|
|
230
|
+
decodeCnpj ${jsonElementVar} ${path}
|
|
231
|
+
`
|
|
232
|
+
.replace(/\n {16}/gu, "\n")
|
|
233
|
+
.trim();
|
|
234
|
+
}
|
|
235
|
+
case EmailPrimitiveType: {
|
|
236
|
+
// TODO: validate Email
|
|
237
|
+
return `
|
|
238
|
+
decodeEmail ${jsonElementVar} ${path}
|
|
239
|
+
`
|
|
240
|
+
.replace(/\n {16}/gu, "\n")
|
|
241
|
+
.trim();
|
|
242
|
+
}
|
|
243
|
+
case UrlPrimitiveType: {
|
|
244
|
+
// TODO: validate URL
|
|
245
|
+
return `
|
|
246
|
+
decodeUrl ${jsonElementVar} ${path}
|
|
247
|
+
`
|
|
248
|
+
.replace(/\n {16}/gu, "\n")
|
|
249
|
+
.trim();
|
|
250
|
+
}
|
|
251
|
+
case UuidPrimitiveType: {
|
|
252
|
+
// TODO: validate UUID
|
|
253
|
+
return `
|
|
254
|
+
decodeUuid ${jsonElementVar} ${path}
|
|
255
|
+
`
|
|
256
|
+
.replace(/\n {16}/gu, "\n")
|
|
257
|
+
.trim();
|
|
258
|
+
}
|
|
259
|
+
case HexPrimitiveType: {
|
|
260
|
+
// TODO: validate Hex
|
|
261
|
+
return `
|
|
262
|
+
decodeHex ${jsonElementVar} ${path}
|
|
263
|
+
`
|
|
264
|
+
.replace(/\n {16}/gu, "\n")
|
|
265
|
+
.trim();
|
|
266
|
+
}
|
|
267
|
+
case Base64PrimitiveType: {
|
|
268
|
+
// TODO: validate Base64
|
|
269
|
+
return `
|
|
270
|
+
decodeBase64 ${jsonElementVar} ${path}
|
|
271
|
+
`
|
|
272
|
+
.replace(/\n {16}/gu, "\n")
|
|
273
|
+
.trim();
|
|
274
|
+
}
|
|
275
|
+
case XmlPrimitiveType: {
|
|
276
|
+
// TODO: validate XML
|
|
277
|
+
return `
|
|
278
|
+
decodeXml ${jsonElementVar} ${path}
|
|
279
|
+
`
|
|
280
|
+
.replace(/\n {16}/gu, "\n")
|
|
281
|
+
.trim();
|
|
282
|
+
}
|
|
283
|
+
case BoolPrimitiveType: {
|
|
284
|
+
return `
|
|
285
|
+
decodeBool ${jsonElementVar} ${path}
|
|
286
|
+
`
|
|
287
|
+
.replace(/\n {16}/gu, "\n")
|
|
288
|
+
.trim();
|
|
289
|
+
}
|
|
290
|
+
case BytesPrimitiveType: {
|
|
291
|
+
return `
|
|
292
|
+
decodeBytes ${jsonElementVar} ${path}
|
|
293
|
+
`
|
|
294
|
+
.replace(/\n {16}/gu, "\n")
|
|
295
|
+
.trim();
|
|
296
|
+
}
|
|
297
|
+
case TypeReference:
|
|
298
|
+
return decodeType(type.type, jsonElementVar, path, targetVar, suffix);
|
|
299
|
+
case OptionalType:
|
|
300
|
+
if (needsTempVarForNullable.includes(type.base.constructor)) {
|
|
301
|
+
return `match ${jsonElementVar}.ValueKind with
|
|
302
|
+
| JsonValueKind.Null | JsonValueKind.Undefined -> None
|
|
303
|
+
| _ ->
|
|
304
|
+
(${decodeType(type.base, jsonElementVar, path, targetVar, suffix, false).replace(/\n/gu, "\n ")}) |> Some
|
|
305
|
+
`
|
|
306
|
+
.replace(/\n {16}/gu, "\n")
|
|
307
|
+
.trim();
|
|
308
|
+
}
|
|
309
|
+
if (type.base instanceof OptionalType || type.base instanceof ArrayType) {
|
|
310
|
+
return `
|
|
311
|
+
(>.>) decodeOptional ${decodeType(type.base, jsonElementVar, path, targetVar, suffix, false)}
|
|
312
|
+
`
|
|
313
|
+
.replace(/\n {16}/gu, "\n")
|
|
314
|
+
.trim();
|
|
315
|
+
}
|
|
316
|
+
return `
|
|
317
|
+
decodeOptional ${decodeType(type.base, jsonElementVar, path, targetVar, suffix, false)}
|
|
318
|
+
`
|
|
319
|
+
.replace(/\n {16}/gu, "\n")
|
|
320
|
+
.trim();
|
|
321
|
+
case EnumType:
|
|
322
|
+
case StructType:
|
|
323
|
+
return `Decode${type.name} ${jsonElementVar} ${path}`;
|
|
324
|
+
case JsonPrimitiveType:
|
|
325
|
+
if (maybeNull) {
|
|
326
|
+
return `
|
|
327
|
+
${jsonElementVar}
|
|
328
|
+
`
|
|
329
|
+
.replace(/\n {16}/gu, "\n")
|
|
330
|
+
.trim();
|
|
331
|
+
}
|
|
332
|
+
return `${targetVar} <- ${jsonElementVar}`;
|
|
333
|
+
case DateTimePrimitiveType: {
|
|
334
|
+
return `
|
|
335
|
+
decodeDateTime ${jsonElementVar} ${path}
|
|
336
|
+
`
|
|
337
|
+
.replace(/\n {16}/gu, "\n")
|
|
338
|
+
.trim();
|
|
339
|
+
}
|
|
340
|
+
case DatePrimitiveType: {
|
|
341
|
+
return `
|
|
342
|
+
decodeDate ${jsonElementVar} ${path}
|
|
343
|
+
`
|
|
344
|
+
.replace(/\n {16}/gu, "\n")
|
|
345
|
+
.trim();
|
|
346
|
+
}
|
|
347
|
+
case ArrayType: {
|
|
348
|
+
return `
|
|
349
|
+
match ${jsonElementVar}.ValueKind with
|
|
350
|
+
| JsonValueKind.Array ->
|
|
351
|
+
let mutable list_ = List.empty
|
|
352
|
+
for i1 in 0 .. (${jsonElementVar}.GetArrayLength() - 1) do
|
|
353
|
+
let item = ${jsonElementVar}.[i1]
|
|
354
|
+
let partialResult =
|
|
355
|
+
${decodeType(type.base, `${jsonElementVar}.[i1]`, `${path.slice(0, -1)}.{i1}"`, targetVar, suffix, false).replace(/\n/gu, "\n ")}
|
|
356
|
+
list_ <- list_ |> List.append [ partialResult ]
|
|
357
|
+
list_
|
|
358
|
+
| _ -> raise (FatalException(${path.slice(0, -1)} must be an array."))
|
|
359
|
+
`
|
|
360
|
+
.replace(/\n {16}/gu, "\n")
|
|
361
|
+
.trim();
|
|
362
|
+
}
|
|
363
|
+
default:
|
|
364
|
+
throw new Error(`BUG: decodeType with ${type.constructor.name}`);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
export function encodeType(type, valueVar, path, suffix = 1, isRef = true) {
|
|
368
|
+
switch (type.constructor) {
|
|
369
|
+
case StringPrimitiveType: {
|
|
370
|
+
return `resultWriter_.WriteStringValue(${valueVar})`;
|
|
371
|
+
}
|
|
372
|
+
case FloatPrimitiveType:
|
|
373
|
+
case UIntPrimitiveType:
|
|
374
|
+
case IntPrimitiveType: {
|
|
375
|
+
return `resultWriter_.WriteNumberValue(${valueVar})`;
|
|
376
|
+
}
|
|
377
|
+
case MoneyPrimitiveType: {
|
|
378
|
+
return `resultWriter_.WriteNumberValue(int (Math.Round(${valueVar} * 100m)))`;
|
|
379
|
+
}
|
|
380
|
+
case BigIntPrimitiveType: {
|
|
381
|
+
return `resultWriter_.WriteStringValue(${valueVar}.ToString())`;
|
|
382
|
+
}
|
|
383
|
+
case BoolPrimitiveType: {
|
|
384
|
+
return `resultWriter_.WriteBooleanValue(${valueVar})`;
|
|
385
|
+
}
|
|
386
|
+
case BytesPrimitiveType: {
|
|
387
|
+
return `resultWriter_.WriteStringValue(Convert.ToBase64String(${valueVar}))`;
|
|
388
|
+
}
|
|
389
|
+
case DateTimePrimitiveType: {
|
|
390
|
+
return `resultWriter_.WriteStringValue(${valueVar}.ToString("yyyy-MM-ddTHH:mm:ss.FFFFFF'Z'"))`;
|
|
391
|
+
}
|
|
392
|
+
case DatePrimitiveType: {
|
|
393
|
+
return `resultWriter_.WriteStringValue(${valueVar}.ToString("yyyy-MM-dd"))`;
|
|
394
|
+
}
|
|
395
|
+
// TODO: format those
|
|
396
|
+
case CpfPrimitiveType:
|
|
397
|
+
case CnpjPrimitiveType:
|
|
398
|
+
case EmailPrimitiveType:
|
|
399
|
+
case HtmlPrimitiveType:
|
|
400
|
+
case UrlPrimitiveType:
|
|
401
|
+
case UuidPrimitiveType:
|
|
402
|
+
case Base64PrimitiveType:
|
|
403
|
+
case HexPrimitiveType:
|
|
404
|
+
case XmlPrimitiveType: {
|
|
405
|
+
return `resultWriter_.WriteStringValue(${valueVar})`;
|
|
406
|
+
}
|
|
407
|
+
case OptionalType: {
|
|
408
|
+
let realBaseType = type.base;
|
|
409
|
+
while (realBaseType instanceof TypeReference) {
|
|
410
|
+
realBaseType = realBaseType.type;
|
|
411
|
+
}
|
|
412
|
+
return `
|
|
413
|
+
if (${valueVar}.IsNone) then
|
|
414
|
+
resultWriter_.WriteNullValue()
|
|
415
|
+
else
|
|
416
|
+
${encodeType(realBaseType, `${valueVar}.Value`, path, suffix, isRef)}
|
|
417
|
+
`
|
|
418
|
+
.replace(/\n {14}/gu, "\n")
|
|
419
|
+
.trim();
|
|
420
|
+
}
|
|
421
|
+
case TypeReference:
|
|
422
|
+
return encodeType(type.type, valueVar, path, suffix, isRef);
|
|
423
|
+
case EnumType:
|
|
424
|
+
return `Encode${type.name} ${valueVar} resultWriter_ ${path}`;
|
|
425
|
+
case StructType:
|
|
426
|
+
return `Encode${type.name} ${valueVar} resultWriter_ ${path}`;
|
|
427
|
+
case JsonPrimitiveType:
|
|
428
|
+
return `${valueVar}.WriteTo(resultWriter_)`;
|
|
429
|
+
case ArrayType: {
|
|
430
|
+
return `
|
|
431
|
+
resultWriter_.WriteStartArray()
|
|
432
|
+
for i${suffix} in 0..${valueVar}.Length - 1 do
|
|
433
|
+
${encodeType(type.base, `${valueVar}.[i${suffix}]`, `${path}`, suffix + 1).replace(/\n/gu, "\n ")}
|
|
434
|
+
resultWriter_.WriteEndArray()
|
|
435
|
+
`
|
|
436
|
+
.replace(/\n {14}/gu, "\n")
|
|
437
|
+
.trim();
|
|
438
|
+
}
|
|
439
|
+
default:
|
|
440
|
+
throw new Error(`BUG: encodeType with ${type.constructor.name}`);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
export function generateStruct(struct) {
|
|
444
|
+
return `
|
|
445
|
+
type ${struct.name} = {
|
|
446
|
+
${struct.fields.map(field => `${capitalize(field.name)}: ${generateTypeName(field.type)}`).join(";\n ")}
|
|
447
|
+
} with
|
|
448
|
+
static member Create (${struct.fields.map(field => `${ident(field.name)}: ${generateTypeName(field.type)}`).join(", ")}): ${struct.name} =
|
|
449
|
+
{ ${struct.fields.map(field => `${capitalize(field.name)} = ${ident(field.name)}`).join("; ")} }
|
|
450
|
+
|
|
451
|
+
let Decode${struct.name} (json_: JsonElement) (path_: string): ${struct.name} =
|
|
452
|
+
if (json_.ValueKind <> JsonValueKind.Object) then raise (FatalException($"'{path_}' must be an object."))
|
|
453
|
+
${struct.fields
|
|
454
|
+
.map(field => `
|
|
455
|
+
let ${field.name}Json_ = decodeJsonElementStrict ${JSON.stringify(field.name)} json_ $"{path_}.${field.name}"
|
|
456
|
+
let ${ident(field.name)} =
|
|
457
|
+
${decodeType(field.type, `${field.name}Json_`, `$"{path_}.${field.name}"`, ident(field.name)).replace(/\n/gu, "\n ")}
|
|
458
|
+
`)
|
|
459
|
+
.join("")}
|
|
460
|
+
{ ${struct.fields.map(field => `${capitalize(field.name)} = ${ident(field.name)}`).join("; ")} }
|
|
461
|
+
|
|
462
|
+
let Encode${struct.name} (obj_: ${struct.name}) (resultWriter_: Utf8JsonWriter) (path_: string) =
|
|
463
|
+
resultWriter_.WriteStartObject()
|
|
464
|
+
${struct.fields
|
|
465
|
+
.map(field => `
|
|
466
|
+
resultWriter_.WritePropertyName(${JSON.stringify(field.name)})
|
|
467
|
+
${encodeType(field.type, `obj_.${capitalize(field.name)}`, `$"{path_}.${field.name}"`).replace(/\n/gu, "\n ")}`)
|
|
468
|
+
.join("\n")}
|
|
469
|
+
resultWriter_.WriteEndObject()`;
|
|
470
|
+
}
|
|
471
|
+
export function generateEnum(type) {
|
|
472
|
+
return `
|
|
473
|
+
type ${type.name} =
|
|
474
|
+
${type.values.map(({ value }) => `| ${capitalize(value)}`).join("\n ")}
|
|
475
|
+
|
|
476
|
+
let Decode${type.name} (json_: JsonElement) (path_: string): ${type.name} =
|
|
477
|
+
if (json_.ValueKind <> JsonValueKind.String) then raise (FatalException($"'{path_}' must be a string."))
|
|
478
|
+
match json_.GetString() with
|
|
479
|
+
${type.values.map(({ value }) => `| "${value}" -> ${type.name}.${capitalize(value)}`).join("\n ")}
|
|
480
|
+
| _ -> raise (FatalException($"'{path_}' must be one of: (${type.values.map(({ value }) => `'${value}'`).join(", ")})."))
|
|
481
|
+
|
|
482
|
+
let Encode${type.name} (obj_: ${type.name}) (resultWriter_: Utf8JsonWriter) (path_: string) =
|
|
483
|
+
match obj_ with
|
|
484
|
+
${type.values.map(({ value }) => `| ${type.name}.${capitalize(value)} -> resultWriter_.WriteStringValue("${value}")`).join("\n ")}
|
|
485
|
+
|
|
486
|
+
`;
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLG1CQUFtQixFQUNuQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLGFBQWEsRUFDYixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsZ0JBQWdCLEdBQ2pCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsTUFBTSxhQUFhLEdBQUc7SUFDcEIsVUFBVTtJQUNWLElBQUk7SUFDSixNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxNQUFNO0lBQ04sTUFBTTtJQUNOLE9BQU87SUFDUCxNQUFNO0lBQ04sU0FBUztJQUNULE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLFNBQVM7SUFDVCxTQUFTO0lBQ1QsVUFBVTtJQUNWLElBQUk7SUFDSixRQUFRO0lBQ1IsTUFBTTtJQUNOLE1BQU07SUFDTixPQUFPO0lBQ1AsVUFBVTtJQUNWLFFBQVE7SUFDUixPQUFPO0lBQ1AsU0FBUztJQUNULE9BQU87SUFDUCxPQUFPO0lBQ1AsS0FBSztJQUNMLFNBQVM7SUFDVCxNQUFNO0lBQ04sSUFBSTtJQUNKLFVBQVU7SUFDVixJQUFJO0lBQ0osS0FBSztJQUNMLFdBQVc7SUFDWCxVQUFVO0lBQ1YsSUFBSTtJQUNKLE1BQU07SUFDTixNQUFNO0lBQ04sV0FBVztJQUNYLEtBQUs7SUFDTCxNQUFN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TztPQUNGLElBQUksQ0FBQyxJQUFJO0lBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzs7WUFFN0QsSUFBSSxDQUFDLElBQUksMENBQTBDLElBQUksQ0FBQyxJQUFJOzs7SUFHcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQzs4REFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzs7WUFFekcsSUFBSSxDQUFDLElBQUksV0FBVyxJQUFJLENBQUMsSUFBSTs7SUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOztDQUVuSSxDQUFDO0FBQ0YsQ0FBQyJ9
|
package/dist/index.js
ADDED
package/package.json
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sdkgen/fsharp-generator",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
3
|
+
"version": "0.0.0-dev.20231002175619",
|
|
4
4
|
"description": "",
|
|
5
|
-
"main": "dist/
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"directories": {
|
|
8
|
+
"lib": "dist"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
6
13
|
"scripts": {
|
|
7
14
|
"test": "jest --passWithNoTests",
|
|
8
15
|
"eslint:fix": "eslint --fix '{src,spec}/**/*.ts'",
|
|
@@ -22,6 +29,9 @@
|
|
|
22
29
|
"access": "public"
|
|
23
30
|
},
|
|
24
31
|
"homepage": "https://github.com/sdkgen/sdkgen#readme",
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"@sdkgen/parser": "^0.0.0-dev.20231002175619"
|
|
34
|
+
},
|
|
25
35
|
"devDependencies": {
|
|
26
36
|
"@cubos/eslint-config": "^2.2.0",
|
|
27
37
|
"@types/jest": "^29.0.0",
|
|
@@ -48,8 +58,5 @@
|
|
|
48
58
|
"/node_modules/"
|
|
49
59
|
]
|
|
50
60
|
},
|
|
51
|
-
"
|
|
52
|
-
"@sdkgen/parser": "0.0.0-dev.20231002135133"
|
|
53
|
-
},
|
|
54
|
-
"types": "dist/src/index.d.ts"
|
|
61
|
+
"gitHead": "611061fbde3388caebebe076bf41ad78518cbbb0"
|
|
55
62
|
}
|
package/.eslintrc.json
DELETED
package/.prettierrc
DELETED