@sdkgen/fsharp-generator 0.0.0-dev.20230109134521 → 0.0.0-dev.20230109212108

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,2 @@
1
+ import type { AstRoot } from "@sdkgen/parser";
2
+ export declare function generateFSharpServerSource(ast: AstRoot): string;
@@ -0,0 +1,90 @@
1
+ import { astToJson, VoidPrimitiveType } from "@sdkgen/parser";
2
+ import { capitalize, decodeType, encodeType, generateEnum, generateStruct, generateTypeName, ident } from "./helpers.js";
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnNoYXJwLXNlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mc2hhcnAtc2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFekgsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEdBQVk7SUFDckQsSUFBSSxJQUFJLEdBQUc7Ozs7Ozs7Ozs7OztDQVlaLENBQUM7SUFFQSxLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDOUIsSUFBSSxJQUFJO09BQ0wsS0FBSyxDQUFDLElBQUk7Ozs7K0JBSWMsS0FBSyxDQUFDLElBQUk7Ozs7K0JBSVYsS0FBSyxDQUFDLElBQUk7TUFDbkMsQ0FBQztLQUNKO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFO1FBQ2hDLElBQUksSUFBSSxLQUFLLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ3JDO0lBRUQsS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO1FBQ2xDLElBQUksSUFBSSxLQUFLLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ3ZDO0lBRUQsSUFBSSxJQUFJO2FBQ0csQ0FBQztJQUVaLEtBQUssTUFBTSxFQUFFLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRTtRQUMvQixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsVUFBVSxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUM7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QUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1NBQ2xIO0tBQ0Y7SUFFRCxJQUFJLElBQUk7OztrQkFHUSxDQUFDO0lBRWpCLElBQUksSUFBSTtrQ0FDd0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUU1RyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFzdFJvb3QgfSBmcm9tIFwiQHNka2dlbi9wYXJzZXJcIjtcbmltcG9ydCB7IGFzdFRvSnNvbiwgVm9pZFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNka2dlbi9wYXJzZXJcIjtcblxuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgZGVjb2RlVHlwZSwgZW5jb2RlVHlwZSwgZ2VuZXJhdGVFbnVtLCBnZW5lcmF0ZVN0cnVjdCwgZ2VuZXJhdGVUeXBlTmFtZSwgaWRlbnQgfSBmcm9tIFwiLi9oZWxwZXJzLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZTaGFycFNlcnZlclNvdXJjZShhc3Q6IEFzdFJvb3QpOiBzdHJpbmcge1xuICBsZXQgY29kZSA9IGBtb2R1bGUgcmVjIFNka2dlbkdlbmVyYXRlZFxub3BlbiBTZGtnZW4uUnVudGltZVxub3BlbiBTZGtnZW4uSGVscGVyc1xub3BlbiBTZGtnZW4uQ29udGV4dFxub3BlbiBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzXG5vcGVuIFN5c3RlbS5UZXh0Lkpzb25cbm9wZW4gU3lzdGVtXG5vcGVuIFN5c3RlbS5HbG9iYWxpemF0aW9uXG4jaWYgTkVUNV8wXG4vLyBUbyB1c2UgdGFza3MgYXMgY29tcHV0YXRpb24gZXhwcmVzc2lvbiBpbiAuTkVUIDUgaW5zdGFsbCBodHRwczovL3d3dy5udWdldC5vcmcvcGFja2FnZXMvVGFza0J1aWxkZXIuZnMvXG5vcGVuIEZTaGFycC5Db250cm9sLlRhc2tzLlYyLkNvbnRleHRJbnNlbnNpdGl2ZVxuI2VuZGlmXG5gO1xuXG4gIGZvciAoY29uc3QgZXJyb3Igb2YgYXN0LmVycm9ycykge1xuICAgIGNvZGUgKz0gYFxudHlwZSAke2Vycm9yLm5hbWV9RXhjZXB0aW9uID1cbiAgaW5oZXJpdCBTZGtnZW5FeGNlcHRpb25cblxuICBuZXcobWVzc2FnZTogc3RyaW5nKSA9IHtcbiAgICBpbmhlcml0IFNka2dlbkV4Y2VwdGlvbihcIiR7ZXJyb3IubmFtZX1cIiwgbWVzc2FnZSwgbnVsbClcbiAgfVxuXG4gIG5ldyhtZXNzYWdlOiBzdHJpbmcsIGlubmVyOiBFeGNlcHRpb24pID0ge1xuICAgIGluaGVyaXQgU2RrZ2VuRXhjZXB0aW9uKFwiJHtlcnJvci5uYW1lfVwiLCBtZXNzYWdlLCBpbm5lcilcbiAgfVxcbmA7XG4gIH1cblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgYXN0LmVudW1UeXBlcykge1xuICAgIGNvZGUgKz0gYFxcbiR7Z2VuZXJhdGVFbnVtKHR5cGUpfVxcbmA7XG4gIH1cblxuICBmb3IgKGNvbnN0IHR5cGUgb2YgYXN0LnN0cnVjdFR5cGVzKSB7XG4gICAgY29kZSArPSBgXFxuJHtnZW5lcmF0ZVN0cnVjdCh0eXBlKX1cXG5gO1xuICB9XG5cbiAgY29kZSArPSBgXG50eXBlIEFwaSgpID1gO1xuXG4gIGZvciAoY29uc3Qgb3Agb2YgYXN0Lm9wZXJhdGlvbnMpIHtcbiAgICBjb25zdCByZXR1cm5UeXBlQW5nbGUgPSBvcC5yZXR1cm5UeXBlIGluc3RhbmNlb2YgVm9pZFByaW1pdGl2ZVR5cGUgPyBcIlwiIDogYDwke2dlbmVyYXRlVHlwZU5hbWUob3AucmV0dXJuVHlwZSl9PmA7XG5cbiAgICBjb25zdCBhcmdzSW5SZWNvcmQgPSBvcC5hcmdzLmxlbmd0aCA+IDAgPyBge3wgJHtvcC5hcmdzLm1hcChhcmcgPT4gYCR7YXJnLm5hbWV9OiAke2dlbmVyYXRlVHlwZU5hbWUoYXJnLnR5cGUpfTtgKS5qb2luKFwiXCIpfSB8fSAtPmAgOiBcIlwiO1xuXG4gICAgY29kZSArPSBgXG4gIG1lbWJlciB2YWwgJHtjYXBpdGFsaXplKG9wLm5hbWUpfTogQ29udGV4dCAtPiAke2FyZ3NJblJlY29yZH0gVGFzayR7cmV0dXJuVHlwZUFuZ2xlfSA9XG4gICAgZnVuIF8gLT4gKHJhaXNlIChGYXRhbEV4Y2VwdGlvbihcIkZ1bmN0aW9uICcke29wLm5hbWV9JyBub3QgaW1wbGVtZW50ZWQuXCIpKSlcbiAgICB3aXRoIGdldCwgc2V0XG4gICAgYDtcbiAgfVxuXG4gIGNvZGUgKz0gYFxuICBpbnRlcmZhY2UgQmFzZUFwaSB3aXRoXG4gICAgbWVtYmVyIF9fLkV4ZWN1dGVGdW5jdGlvbihjb250ZXh0XzogQ29udGV4dCwgcmVzdWx0V3JpdGVyXzogVXRmOEpzb25Xcml0ZXIpIDogVGFzayA9XG4gICAgICAgIHRhc2sge1xuICAgICAgICAgIG1hdGNoIGNvbnRleHRfLk5hbWUgd2l0aGA7XG5cbiAgZm9yIChjb25zdCBvcCBvZiBhc3Qub3BlcmF0aW9ucykge1xuICAgIGNvZGUgKz0gYFxuICAgICAgICAgIHwgJHtKU09OLnN0cmluZ2lmeShvcC5uYW1lKX0gLT5gO1xuICAgIGZvciAoY29uc3QgYXJnIG9mIG9wLmFyZ3MpIHtcbiAgICAgIGNvZGUgKz0gYFxuICAgICAgICAgICAgbGV0ICR7YXJnLm5hbWV9SnNvbl8gPVxuICAgICAgICAgICAgICBtYXRjaCBjb250ZXh0Xy5BcmdzLlRyeUdldFZhbHVlKCR7SlNPTi5zdHJpbmdpZnkoYXJnLm5hbWUpfSkgd2l0aFxuICAgICAgICAgICAgICB8IHRydWUsIHYgLT4gdlxuICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgKEZhdGFsRXhjZXB0aW9uKFwiJyR7b3AubmFtZX0oKS5hcmdzLiR7YXJnLm5hbWV9JyBtdXN0IGJlIHNldCB0byBhIHZhbHVlIG9mIHR5cGUgJHthcmcudHlwZS5uYW1lfS5cIikpXG5cbiAgICAgICAgICAgIGxldCAke2lkZW50KGFyZy5uYW1lKX0gPVxuICAgICAgICAgICAgICAke2RlY29kZVR5cGUoYXJnLnR5cGUsIGAke2FyZy5uYW1lfUpzb25fYCwgYFwiJHtvcC5uYW1lfSgpLmFyZ3MuJHthcmcubmFtZX1cImAsIGlkZW50KGFyZy5uYW1lKSkucmVwbGFjZSgvXFxuL2d1LCBcIlxcbiAgICAgICAgICAgIFwiKX1gO1xuICAgIH1cblxuICAgIGlmIChvcC5yZXR1cm5UeXBlIGluc3RhbmNlb2YgVm9pZFByaW1pdGl2ZVR5cGUpIHtcbiAgICAgIGNvZGUgKz0gYFxuXG4gICAgICAgICAgICBkbyEgKF9fLiR7Y2FwaXRhbGl6ZShvcC5uYW1lKX0gY29udGV4dF8gJHtvcC5hcmdzLmxlbmd0aCA+IDAgPyBcInt8XCIgOiBcIlwifSAke29wLmFyZ3NcbiAgICAgICAgLm1hcChhcmcgPT4gYCR7YXJnLm5hbWV9ID0gJHtpZGVudChhcmcubmFtZSl9YClcbiAgICAgICAgLmpvaW4oXCI7IFwiKX0gJHtvcC5hcmdzLmxlbmd0aCA+IDAgPyBcInx9XCIgOiBcIlwifSlcbiAgICAgIGA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvZGUgKz0gYFxuXG4gICAgICAgICAgICBsZXQhIHJlc3VsdF8gPSAoX18uJHtjYXBpdGFsaXplKG9wLm5hbWUpfSBjb250ZXh0XyAke29wLmFyZ3MubGVuZ3RoID4gMCA/IFwie3xcIiA6IFwiXCJ9ICR7b3AuYXJnc1xuICAgICAgICAubWFwKGFyZyA9PiBgJHthcmcubmFtZX0gPSAke2lkZW50KGFyZy5uYW1lKX1gKVxuICAgICAgICAuam9pbihcIjsgXCIpfSAke29wLmFyZ3MubGVuZ3RoID4gMCA/IFwifH1cIiA6IFwiXCJ9KVxuICAgICAgICAgICAgJHtlbmNvZGVUeXBlKG9wLnJldHVyblR5cGUsIGByZXN1bHRfYCwgYFwiJHtvcC5uYW1lfSgpLnJldFwiYCwgMSwgZmFsc2UpLnJlcGxhY2UoL1xcbi9ndSwgXCJcXG4gICAgICAgICAgICBcIil9YDtcbiAgICB9XG4gIH1cblxuICBjb2RlICs9IGBcblxuICAgICAgICAgIHwgXyAtPiByYWlzZSAoRmF0YWxFeGNlcHRpb24oJFwiVW5rbm93biBmdW5jdGlvbiAne2NvbnRleHRfLk5hbWV9Jy5cIikpXG4gICAgICAgIH0gOj4gVGFza2A7XG5cbiAgY29kZSArPSBgXG4gICAgbWVtYmVyIF9fLkdldEFzdEpzb24oKSA9IFwiXCJcIiR7SlNPTi5zdHJpbmdpZnkoYXN0VG9Kc29uKGFzdCksIG51bGwsIDQpLnJlcGxhY2UoL1xcbi9ndSwgXCJcXG4gICAgICAgIFwiKX1cIlwiXCI7YDtcblxuICByZXR1cm4gY29kZTtcbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ import type { Type } from "@sdkgen/parser";
2
+ import { EnumType, StructType } from "@sdkgen/parser";
3
+ export declare function ident(name: string): string;
4
+ export declare function capitalize(name: string): string;
5
+ export declare function generateTypeName(type: Type): string;
6
+ export declare function decodeType(type: Type, jsonElementVar: string, path: string, targetVar: string, suffix?: number, maybeNull?: boolean): string;
7
+ export declare function encodeType(type: Type, valueVar: string, path: string, suffix?: number, isRef?: boolean): string;
8
+ export declare function generateStruct(struct: StructType): string;
9
+ export declare function generateEnum(type: EnumType): string;