@sdkgen/fsharp-generator 0.0.0-dev.20231221180829 → 0.0.0-dev.20240110140542

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.
@@ -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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
@@ -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
@@ -0,0 +1,2 @@
1
+ export * from "./fsharp-server";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQyJ9
package/package.json CHANGED
@@ -1,8 +1,15 @@
1
1
  {
2
2
  "name": "@sdkgen/fsharp-generator",
3
- "version": "0.0.0-dev.20231221180829",
3
+ "version": "0.0.0-dev.20240110140542",
4
4
  "description": "",
5
- "main": "dist/src/index.js",
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'",
@@ -19,19 +26,31 @@
19
26
  "url": "https://github.com/sdkgen/sdkgen/issues"
20
27
  },
21
28
  "publishConfig": {
22
- "access": "public"
29
+ "access": "public",
30
+ "provenance": true
23
31
  },
24
32
  "homepage": "https://github.com/sdkgen/sdkgen#readme",
33
+ "dependencies": {
34
+ "@sdkgen/parser": "^0.0.0-dev.20240110140542"
35
+ },
25
36
  "devDependencies": {
26
37
  "@cubos/eslint-config": "^2.2.0",
27
- "@types/jest": "^29.0.0",
38
+ "@types/jest": "^29.5.5",
28
39
  "@types/node": "^16.7.0",
29
- "jest": "^29.0.0",
30
- "ts-jest": "^29.0.0",
31
- "typescript": "^4.3.5"
40
+ "jest": "^29.7.0",
41
+ "ts-jest": "^29.1.1",
42
+ "typescript": "^5.2.2"
32
43
  },
33
44
  "jest": {
34
45
  "transform": {
46
+ "^.+\\.js$": [
47
+ "babel-jest",
48
+ {
49
+ "plugins": [
50
+ "@babel/plugin-transform-modules-commonjs"
51
+ ]
52
+ }
53
+ ],
35
54
  "^.+\\.tsx?$": "ts-jest"
36
55
  },
37
56
  "transformIgnorePatterns": [
@@ -48,8 +67,5 @@
48
67
  "/node_modules/"
49
68
  ]
50
69
  },
51
- "dependencies": {
52
- "@sdkgen/parser": "0.0.0-dev.20231221180829"
53
- },
54
- "types": "dist/src/index.d.ts"
70
+ "gitHead": "8dff1c41d3a7a9791871fd7d9382995746feadd6"
55
71
  }
package/.eslintrc.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "extends": ["@cubos"]
3
- }