@sdkgen/fsharp-generator 0.0.0-dev.20230109202609 → 0.0.0-dev.20230110171718
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/src/fsharp-server.d.ts +2 -0
- package/dist/src/fsharp-server.js +90 -0
- package/dist/src/helpers.d.ts +9 -0
- package/dist/src/helpers.js +488 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +2 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -3
- package/dist/fsharp-server.js +0 -90
- package/dist/helpers.js +0 -488
- package/dist/index.js +0 -2
|
@@ -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;
|