@sdkgen/fsharp-generator 0.0.0-dev.20220117160225
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/.eslintrc.json +3 -0
- package/.prettierrc +12 -0
- package/LICENSE +7 -0
- package/README.md +3 -0
- 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 +497 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +13 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +52 -0
package/.eslintrc.json
ADDED
package/.prettierrc
ADDED
package/LICENSE
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Copyright 2021 Cubos Tecnologia <cubos.io>
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
|
+
|
|
5
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
6
|
+
|
|
7
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateFSharpServerSource = void 0;
|
|
4
|
+
const parser_1 = require("@sdkgen/parser");
|
|
5
|
+
const helpers_1 = require("./helpers");
|
|
6
|
+
function generateFSharpServerSource(ast) {
|
|
7
|
+
let code = `module rec SdkgenGenerated
|
|
8
|
+
open Sdkgen.Runtime
|
|
9
|
+
open Sdkgen.Helpers
|
|
10
|
+
open Sdkgen.Context
|
|
11
|
+
open System.Threading.Tasks
|
|
12
|
+
open System.Text.Json
|
|
13
|
+
open System
|
|
14
|
+
open System.Globalization
|
|
15
|
+
open FSharp.Control.Tasks.V2.ContextInsensitive
|
|
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${(0, helpers_1.generateEnum)(type)}\n`;
|
|
32
|
+
}
|
|
33
|
+
for (const type of ast.structTypes) {
|
|
34
|
+
code += `\n${(0, helpers_1.generateStruct)(type)}\n`;
|
|
35
|
+
}
|
|
36
|
+
code += `
|
|
37
|
+
type Api() =`;
|
|
38
|
+
for (const op of ast.operations) {
|
|
39
|
+
const returnTypeAngle = op.returnType instanceof parser_1.VoidPrimitiveType ? "" : `<${(0, helpers_1.generateTypeName)(op.returnType)}>`;
|
|
40
|
+
const argsInRecord = op.args.length > 0 ? `{| ${op.args.map(arg => `${arg.name}: ${(0, helpers_1.generateTypeName)(arg.type)};`).join("")} |} ->` : "";
|
|
41
|
+
code += `
|
|
42
|
+
member val ${(0, helpers_1.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 ${(0, helpers_1.ident)(arg.name)} =
|
|
63
|
+
${(0, helpers_1.decodeType)(arg.type, `${arg.name}Json_`, `"${op.name}().args.${arg.name}"`, (0, helpers_1.ident)(arg.name)).replace(/\n/gu, "\n ")}`;
|
|
64
|
+
}
|
|
65
|
+
if (op.returnType instanceof parser_1.VoidPrimitiveType) {
|
|
66
|
+
code += `
|
|
67
|
+
|
|
68
|
+
do! (__.${(0, helpers_1.capitalize)(op.name)} context_ ${op.args.length > 0 ? "{|" : ""} ${op.args
|
|
69
|
+
.map(arg => `${arg.name} = ${(0, helpers_1.ident)(arg.name)}`)
|
|
70
|
+
.join("; ")} ${op.args.length > 0 ? "|}" : ""})
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
code += `
|
|
75
|
+
|
|
76
|
+
let! result_ = (__.${(0, helpers_1.capitalize)(op.name)} context_ ${op.args.length > 0 ? "{|" : ""} ${op.args
|
|
77
|
+
.map(arg => `${arg.name} = ${(0, helpers_1.ident)(arg.name)}`)
|
|
78
|
+
.join("; ")} ${op.args.length > 0 ? "|}" : ""})
|
|
79
|
+
${(0, helpers_1.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((0, parser_1.astToJson)(ast), null, 4).replace(/\n/gu, "\n ")}""";`;
|
|
88
|
+
return code;
|
|
89
|
+
}
|
|
90
|
+
exports.generateFSharpServerSource = generateFSharpServerSource;
|
|
@@ -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;
|
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateEnum = exports.generateStruct = exports.encodeType = exports.decodeType = exports.generateTypeName = exports.capitalize = exports.ident = void 0;
|
|
4
|
+
const parser_1 = require("@sdkgen/parser");
|
|
5
|
+
const reservedWords = [
|
|
6
|
+
"abstract",
|
|
7
|
+
"as",
|
|
8
|
+
"base",
|
|
9
|
+
"bool",
|
|
10
|
+
"break",
|
|
11
|
+
"byte",
|
|
12
|
+
"case",
|
|
13
|
+
"catch",
|
|
14
|
+
"char",
|
|
15
|
+
"checked",
|
|
16
|
+
"class",
|
|
17
|
+
"const",
|
|
18
|
+
"continue",
|
|
19
|
+
"decimal",
|
|
20
|
+
"default",
|
|
21
|
+
"delegate",
|
|
22
|
+
"do",
|
|
23
|
+
"double",
|
|
24
|
+
"else",
|
|
25
|
+
"enum",
|
|
26
|
+
"event",
|
|
27
|
+
"explicit",
|
|
28
|
+
"extern",
|
|
29
|
+
"false",
|
|
30
|
+
"finally",
|
|
31
|
+
"fixed",
|
|
32
|
+
"float",
|
|
33
|
+
"for",
|
|
34
|
+
"foreach",
|
|
35
|
+
"goto",
|
|
36
|
+
"if",
|
|
37
|
+
"implicit",
|
|
38
|
+
"in",
|
|
39
|
+
"int",
|
|
40
|
+
"interface",
|
|
41
|
+
"internal",
|
|
42
|
+
"is",
|
|
43
|
+
"lock",
|
|
44
|
+
"long",
|
|
45
|
+
"namespace",
|
|
46
|
+
"new",
|
|
47
|
+
"null",
|
|
48
|
+
"object",
|
|
49
|
+
"operator",
|
|
50
|
+
"out",
|
|
51
|
+
"override",
|
|
52
|
+
"params",
|
|
53
|
+
"private",
|
|
54
|
+
"protected",
|
|
55
|
+
"public",
|
|
56
|
+
"readonly",
|
|
57
|
+
"ref",
|
|
58
|
+
"return",
|
|
59
|
+
"sbyte",
|
|
60
|
+
"sealed",
|
|
61
|
+
"short",
|
|
62
|
+
"sizeof",
|
|
63
|
+
"stackalloc",
|
|
64
|
+
"static",
|
|
65
|
+
"string",
|
|
66
|
+
"struct",
|
|
67
|
+
"switch",
|
|
68
|
+
"this",
|
|
69
|
+
"throw",
|
|
70
|
+
"true",
|
|
71
|
+
"try",
|
|
72
|
+
"typeof",
|
|
73
|
+
"uint",
|
|
74
|
+
"ulong",
|
|
75
|
+
"unchecked",
|
|
76
|
+
"unsafe",
|
|
77
|
+
"ushort",
|
|
78
|
+
"using",
|
|
79
|
+
"using",
|
|
80
|
+
"static",
|
|
81
|
+
"virtual",
|
|
82
|
+
"void",
|
|
83
|
+
"volatile",
|
|
84
|
+
"while",
|
|
85
|
+
"type",
|
|
86
|
+
"end",
|
|
87
|
+
"id",
|
|
88
|
+
];
|
|
89
|
+
const typesWithNativeNullable = [
|
|
90
|
+
parser_1.StringPrimitiveType,
|
|
91
|
+
parser_1.HtmlPrimitiveType,
|
|
92
|
+
parser_1.CpfPrimitiveType,
|
|
93
|
+
parser_1.CnpjPrimitiveType,
|
|
94
|
+
parser_1.BytesPrimitiveType,
|
|
95
|
+
parser_1.EmailPrimitiveType,
|
|
96
|
+
parser_1.UrlPrimitiveType,
|
|
97
|
+
parser_1.UuidPrimitiveType,
|
|
98
|
+
parser_1.HexPrimitiveType,
|
|
99
|
+
parser_1.Base64PrimitiveType,
|
|
100
|
+
parser_1.XmlPrimitiveType,
|
|
101
|
+
parser_1.StructType,
|
|
102
|
+
parser_1.ArrayType,
|
|
103
|
+
];
|
|
104
|
+
const needsTempVarForNullable = [
|
|
105
|
+
parser_1.BigIntPrimitiveType,
|
|
106
|
+
parser_1.DatePrimitiveType,
|
|
107
|
+
parser_1.DateTimePrimitiveType,
|
|
108
|
+
parser_1.FloatPrimitiveType,
|
|
109
|
+
parser_1.IntPrimitiveType,
|
|
110
|
+
parser_1.MoneyPrimitiveType,
|
|
111
|
+
parser_1.UIntPrimitiveType,
|
|
112
|
+
parser_1.ArrayType,
|
|
113
|
+
];
|
|
114
|
+
function ident(name) {
|
|
115
|
+
return reservedWords.includes(name) ? `${name}'` : name;
|
|
116
|
+
}
|
|
117
|
+
exports.ident = ident;
|
|
118
|
+
function capitalize(name) {
|
|
119
|
+
return name[0].toUpperCase() + name.slice(1);
|
|
120
|
+
}
|
|
121
|
+
exports.capitalize = capitalize;
|
|
122
|
+
function generateTypeName(type) {
|
|
123
|
+
switch (type.constructor) {
|
|
124
|
+
case parser_1.StringPrimitiveType:
|
|
125
|
+
return "string";
|
|
126
|
+
case parser_1.IntPrimitiveType:
|
|
127
|
+
return "int";
|
|
128
|
+
case parser_1.UIntPrimitiveType:
|
|
129
|
+
return "uint";
|
|
130
|
+
case parser_1.FloatPrimitiveType:
|
|
131
|
+
return "double";
|
|
132
|
+
case parser_1.BigIntPrimitiveType:
|
|
133
|
+
return "bigint";
|
|
134
|
+
case parser_1.DatePrimitiveType:
|
|
135
|
+
case parser_1.DateTimePrimitiveType:
|
|
136
|
+
return "DateTime";
|
|
137
|
+
case parser_1.BoolPrimitiveType:
|
|
138
|
+
return "bool";
|
|
139
|
+
case parser_1.BytesPrimitiveType:
|
|
140
|
+
return "byte[]";
|
|
141
|
+
case parser_1.MoneyPrimitiveType:
|
|
142
|
+
return "decimal";
|
|
143
|
+
case parser_1.UuidPrimitiveType:
|
|
144
|
+
return "Guid";
|
|
145
|
+
case parser_1.CpfPrimitiveType:
|
|
146
|
+
case parser_1.CnpjPrimitiveType:
|
|
147
|
+
case parser_1.EmailPrimitiveType:
|
|
148
|
+
case parser_1.HtmlPrimitiveType:
|
|
149
|
+
case parser_1.UrlPrimitiveType:
|
|
150
|
+
case parser_1.HexPrimitiveType:
|
|
151
|
+
case parser_1.Base64PrimitiveType:
|
|
152
|
+
case parser_1.XmlPrimitiveType:
|
|
153
|
+
return "string";
|
|
154
|
+
case parser_1.VoidPrimitiveType:
|
|
155
|
+
return "void";
|
|
156
|
+
case parser_1.JsonPrimitiveType:
|
|
157
|
+
return "JsonElement";
|
|
158
|
+
case parser_1.OptionalType:
|
|
159
|
+
return `${generateTypeName(type.base)} option`;
|
|
160
|
+
case parser_1.ArrayType:
|
|
161
|
+
return `${generateTypeName(type.base)} list`;
|
|
162
|
+
case parser_1.StructType:
|
|
163
|
+
return type.name;
|
|
164
|
+
case parser_1.EnumType:
|
|
165
|
+
return type.name;
|
|
166
|
+
case parser_1.TypeReference:
|
|
167
|
+
return generateTypeName(type.type);
|
|
168
|
+
default:
|
|
169
|
+
throw new Error(`BUG: generateTypeName with ${type.constructor.name}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.generateTypeName = generateTypeName;
|
|
173
|
+
function decodeType(type, jsonElementVar, path, targetVar, suffix = 1, maybeNull = true) {
|
|
174
|
+
switch (type.constructor) {
|
|
175
|
+
case parser_1.IntPrimitiveType: {
|
|
176
|
+
return `
|
|
177
|
+
decodeInt32 ${jsonElementVar} ${path}
|
|
178
|
+
`
|
|
179
|
+
.replace(/\n {16}/gu, "\n")
|
|
180
|
+
.trim();
|
|
181
|
+
}
|
|
182
|
+
case parser_1.UIntPrimitiveType: {
|
|
183
|
+
return `
|
|
184
|
+
decodeUInt32 ${jsonElementVar} ${path}
|
|
185
|
+
`
|
|
186
|
+
.replace(/\n {16}/gu, "\n")
|
|
187
|
+
.trim();
|
|
188
|
+
}
|
|
189
|
+
case parser_1.MoneyPrimitiveType: {
|
|
190
|
+
return `
|
|
191
|
+
(decodeMoney ${jsonElementVar} ${path}) / 100m
|
|
192
|
+
`
|
|
193
|
+
.replace(/\n {16}/gu, "\n")
|
|
194
|
+
.trim();
|
|
195
|
+
}
|
|
196
|
+
case parser_1.FloatPrimitiveType: {
|
|
197
|
+
return `
|
|
198
|
+
decodeFloat ${jsonElementVar} ${path}
|
|
199
|
+
`
|
|
200
|
+
.replace(/\n {16}/gu, "\n")
|
|
201
|
+
.trim();
|
|
202
|
+
}
|
|
203
|
+
case parser_1.BigIntPrimitiveType: {
|
|
204
|
+
return `
|
|
205
|
+
decodeBigInt ${jsonElementVar} ${path}
|
|
206
|
+
`
|
|
207
|
+
.replace(/\n {16}/gu, "\n")
|
|
208
|
+
.trim();
|
|
209
|
+
}
|
|
210
|
+
case parser_1.StringPrimitiveType: {
|
|
211
|
+
return `
|
|
212
|
+
decodeString ${jsonElementVar} ${path}
|
|
213
|
+
`
|
|
214
|
+
.replace(/\n {16}/gu, "\n")
|
|
215
|
+
.trim();
|
|
216
|
+
}
|
|
217
|
+
case parser_1.HtmlPrimitiveType: {
|
|
218
|
+
// TODO: validate HTML
|
|
219
|
+
return `
|
|
220
|
+
decodeHtml ${jsonElementVar} ${path}
|
|
221
|
+
`
|
|
222
|
+
.replace(/\n {16}/gu, "\n")
|
|
223
|
+
.trim();
|
|
224
|
+
}
|
|
225
|
+
case parser_1.CpfPrimitiveType: {
|
|
226
|
+
// TODO: validate CPF
|
|
227
|
+
return `
|
|
228
|
+
decodeCpf ${jsonElementVar} ${path}
|
|
229
|
+
`
|
|
230
|
+
.replace(/\n {16}/gu, "\n")
|
|
231
|
+
.trim();
|
|
232
|
+
}
|
|
233
|
+
case parser_1.CnpjPrimitiveType: {
|
|
234
|
+
// TODO: validate CNPJ
|
|
235
|
+
return `
|
|
236
|
+
decodeCnpj ${jsonElementVar} ${path}
|
|
237
|
+
`
|
|
238
|
+
.replace(/\n {16}/gu, "\n")
|
|
239
|
+
.trim();
|
|
240
|
+
}
|
|
241
|
+
case parser_1.EmailPrimitiveType: {
|
|
242
|
+
// TODO: validate Email
|
|
243
|
+
return `
|
|
244
|
+
decodeEmail ${jsonElementVar} ${path}
|
|
245
|
+
`
|
|
246
|
+
.replace(/\n {16}/gu, "\n")
|
|
247
|
+
.trim();
|
|
248
|
+
}
|
|
249
|
+
case parser_1.UrlPrimitiveType: {
|
|
250
|
+
// TODO: validate URL
|
|
251
|
+
return `
|
|
252
|
+
decodeUrl ${jsonElementVar} ${path}
|
|
253
|
+
`
|
|
254
|
+
.replace(/\n {16}/gu, "\n")
|
|
255
|
+
.trim();
|
|
256
|
+
}
|
|
257
|
+
case parser_1.UuidPrimitiveType: {
|
|
258
|
+
// TODO: validate UUID
|
|
259
|
+
return `
|
|
260
|
+
decodeUuid ${jsonElementVar} ${path}
|
|
261
|
+
`
|
|
262
|
+
.replace(/\n {16}/gu, "\n")
|
|
263
|
+
.trim();
|
|
264
|
+
}
|
|
265
|
+
case parser_1.HexPrimitiveType: {
|
|
266
|
+
// TODO: validate Hex
|
|
267
|
+
return `
|
|
268
|
+
decodeHex ${jsonElementVar} ${path}
|
|
269
|
+
`
|
|
270
|
+
.replace(/\n {16}/gu, "\n")
|
|
271
|
+
.trim();
|
|
272
|
+
}
|
|
273
|
+
case parser_1.Base64PrimitiveType: {
|
|
274
|
+
// TODO: validate Base64
|
|
275
|
+
return `
|
|
276
|
+
decodeBase64 ${jsonElementVar} ${path}
|
|
277
|
+
`
|
|
278
|
+
.replace(/\n {16}/gu, "\n")
|
|
279
|
+
.trim();
|
|
280
|
+
}
|
|
281
|
+
case parser_1.XmlPrimitiveType: {
|
|
282
|
+
// TODO: validate XML
|
|
283
|
+
return `
|
|
284
|
+
decodeXml ${jsonElementVar} ${path}
|
|
285
|
+
`
|
|
286
|
+
.replace(/\n {16}/gu, "\n")
|
|
287
|
+
.trim();
|
|
288
|
+
}
|
|
289
|
+
case parser_1.BoolPrimitiveType: {
|
|
290
|
+
return `
|
|
291
|
+
decodeBool ${jsonElementVar} ${path}
|
|
292
|
+
`
|
|
293
|
+
.replace(/\n {16}/gu, "\n")
|
|
294
|
+
.trim();
|
|
295
|
+
}
|
|
296
|
+
case parser_1.BytesPrimitiveType: {
|
|
297
|
+
return `
|
|
298
|
+
decodeBytes ${jsonElementVar} ${path}
|
|
299
|
+
`
|
|
300
|
+
.replace(/\n {16}/gu, "\n")
|
|
301
|
+
.trim();
|
|
302
|
+
}
|
|
303
|
+
case parser_1.TypeReference:
|
|
304
|
+
return decodeType(type.type, jsonElementVar, path, targetVar, suffix);
|
|
305
|
+
case parser_1.OptionalType:
|
|
306
|
+
if (needsTempVarForNullable.includes(type.base.constructor)) {
|
|
307
|
+
return `match ${jsonElementVar}.ValueKind with
|
|
308
|
+
| JsonValueKind.Null | JsonValueKind.Undefined -> None
|
|
309
|
+
| _ ->
|
|
310
|
+
(${decodeType(type.base, jsonElementVar, path, targetVar, suffix, false).replace(/\n/gu, "\n ")}) |> Some
|
|
311
|
+
`
|
|
312
|
+
.replace(/\n {16}/gu, "\n")
|
|
313
|
+
.trim();
|
|
314
|
+
}
|
|
315
|
+
if (type.base instanceof parser_1.OptionalType || type.base instanceof parser_1.ArrayType) {
|
|
316
|
+
return `
|
|
317
|
+
(>.>) decodeOptional ${decodeType(type.base, jsonElementVar, path, targetVar, suffix, false)}
|
|
318
|
+
`
|
|
319
|
+
.replace(/\n {16}/gu, "\n")
|
|
320
|
+
.trim();
|
|
321
|
+
}
|
|
322
|
+
return `
|
|
323
|
+
decodeOptional ${decodeType(type.base, jsonElementVar, path, targetVar, suffix, false)}
|
|
324
|
+
`
|
|
325
|
+
.replace(/\n {16}/gu, "\n")
|
|
326
|
+
.trim();
|
|
327
|
+
case parser_1.EnumType:
|
|
328
|
+
case parser_1.StructType:
|
|
329
|
+
return `Decode${type.name} ${jsonElementVar} ${path}`;
|
|
330
|
+
case parser_1.JsonPrimitiveType:
|
|
331
|
+
if (maybeNull) {
|
|
332
|
+
return `
|
|
333
|
+
${jsonElementVar}
|
|
334
|
+
`
|
|
335
|
+
.replace(/\n {16}/gu, "\n")
|
|
336
|
+
.trim();
|
|
337
|
+
}
|
|
338
|
+
return `${targetVar} <- ${jsonElementVar}`;
|
|
339
|
+
case parser_1.DateTimePrimitiveType: {
|
|
340
|
+
return `
|
|
341
|
+
decodeDateTime ${jsonElementVar} ${path}
|
|
342
|
+
`
|
|
343
|
+
.replace(/\n {16}/gu, "\n")
|
|
344
|
+
.trim();
|
|
345
|
+
}
|
|
346
|
+
case parser_1.DatePrimitiveType: {
|
|
347
|
+
return `
|
|
348
|
+
decodeDate ${jsonElementVar} ${path}
|
|
349
|
+
`
|
|
350
|
+
.replace(/\n {16}/gu, "\n")
|
|
351
|
+
.trim();
|
|
352
|
+
}
|
|
353
|
+
case parser_1.ArrayType: {
|
|
354
|
+
return `
|
|
355
|
+
match ${jsonElementVar}.ValueKind with
|
|
356
|
+
| JsonValueKind.Array ->
|
|
357
|
+
let mutable list_ = List.empty
|
|
358
|
+
for i1 in 0 .. (${jsonElementVar}.GetArrayLength() - 1) do
|
|
359
|
+
let item = ${jsonElementVar}.[i1]
|
|
360
|
+
let partialResult =
|
|
361
|
+
${decodeType(type.base, `${jsonElementVar}.[i1]`, `${path.slice(0, -1)}.{i1}"`, targetVar, suffix, false).replace(/\n/gu, "\n ")}
|
|
362
|
+
list_ <- list_ |> List.append [ partialResult ]
|
|
363
|
+
list_
|
|
364
|
+
| _ -> raise (FatalException(${path.slice(0, -1)} must be an array."))
|
|
365
|
+
`
|
|
366
|
+
.replace(/\n {16}/gu, "\n")
|
|
367
|
+
.trim();
|
|
368
|
+
}
|
|
369
|
+
default:
|
|
370
|
+
throw new Error(`BUG: decodeType with ${type.constructor.name}`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
exports.decodeType = decodeType;
|
|
374
|
+
function encodeType(type, valueVar, path, suffix = 1, isRef = true) {
|
|
375
|
+
switch (type.constructor) {
|
|
376
|
+
case parser_1.StringPrimitiveType: {
|
|
377
|
+
return `resultWriter_.WriteStringValue(${valueVar})`;
|
|
378
|
+
}
|
|
379
|
+
case parser_1.FloatPrimitiveType:
|
|
380
|
+
case parser_1.UIntPrimitiveType:
|
|
381
|
+
case parser_1.IntPrimitiveType: {
|
|
382
|
+
return `resultWriter_.WriteNumberValue(${valueVar})`;
|
|
383
|
+
}
|
|
384
|
+
case parser_1.MoneyPrimitiveType: {
|
|
385
|
+
return `resultWriter_.WriteNumberValue(int (Math.Round(${valueVar} * 100m)))`;
|
|
386
|
+
}
|
|
387
|
+
case parser_1.BigIntPrimitiveType: {
|
|
388
|
+
return `resultWriter_.WriteStringValue(${valueVar}.ToString())`;
|
|
389
|
+
}
|
|
390
|
+
case parser_1.BoolPrimitiveType: {
|
|
391
|
+
return `resultWriter_.WriteBooleanValue(${valueVar})`;
|
|
392
|
+
}
|
|
393
|
+
case parser_1.BytesPrimitiveType: {
|
|
394
|
+
return `resultWriter_.WriteStringValue(Convert.ToBase64String(${valueVar}))`;
|
|
395
|
+
}
|
|
396
|
+
case parser_1.DateTimePrimitiveType: {
|
|
397
|
+
return `resultWriter_.WriteStringValue(${valueVar}.ToString("yyyy-MM-ddTHH:mm:ss.FFFFFF'Z'"))`;
|
|
398
|
+
}
|
|
399
|
+
case parser_1.DatePrimitiveType: {
|
|
400
|
+
return `resultWriter_.WriteStringValue(${valueVar}.ToString("yyyy-MM-dd"))`;
|
|
401
|
+
}
|
|
402
|
+
// TODO: format those
|
|
403
|
+
case parser_1.CpfPrimitiveType:
|
|
404
|
+
case parser_1.CnpjPrimitiveType:
|
|
405
|
+
case parser_1.EmailPrimitiveType:
|
|
406
|
+
case parser_1.HtmlPrimitiveType:
|
|
407
|
+
case parser_1.UrlPrimitiveType:
|
|
408
|
+
case parser_1.UuidPrimitiveType:
|
|
409
|
+
case parser_1.Base64PrimitiveType:
|
|
410
|
+
case parser_1.HexPrimitiveType:
|
|
411
|
+
case parser_1.XmlPrimitiveType: {
|
|
412
|
+
return `resultWriter_.WriteStringValue(${valueVar})`;
|
|
413
|
+
}
|
|
414
|
+
case parser_1.OptionalType: {
|
|
415
|
+
let realBaseType = type.base;
|
|
416
|
+
while (realBaseType instanceof parser_1.TypeReference) {
|
|
417
|
+
realBaseType = realBaseType.type;
|
|
418
|
+
}
|
|
419
|
+
return `
|
|
420
|
+
if (${valueVar}.IsNone) then
|
|
421
|
+
resultWriter_.WriteNullValue()
|
|
422
|
+
else
|
|
423
|
+
${encodeType(realBaseType, `${valueVar}.Value`, path, suffix, isRef)}
|
|
424
|
+
`
|
|
425
|
+
.replace(/\n {14}/gu, "\n")
|
|
426
|
+
.trim();
|
|
427
|
+
}
|
|
428
|
+
case parser_1.TypeReference:
|
|
429
|
+
return encodeType(type.type, valueVar, path, suffix, isRef);
|
|
430
|
+
case parser_1.EnumType:
|
|
431
|
+
return `Encode${type.name} ${valueVar} resultWriter_ ${path}`;
|
|
432
|
+
case parser_1.StructType:
|
|
433
|
+
return `Encode${type.name} ${valueVar} resultWriter_ ${path}`;
|
|
434
|
+
case parser_1.JsonPrimitiveType:
|
|
435
|
+
return `${valueVar}.WriteTo(resultWriter_)`;
|
|
436
|
+
case parser_1.ArrayType: {
|
|
437
|
+
return `
|
|
438
|
+
resultWriter_.WriteStartArray()
|
|
439
|
+
for i${suffix} in 0..${valueVar}.Length - 1 do
|
|
440
|
+
${encodeType(type.base, `${valueVar}.[i${suffix}]`, `${path}`, suffix + 1).replace(/\n/gu, "\n ")}
|
|
441
|
+
resultWriter_.WriteEndArray()
|
|
442
|
+
`
|
|
443
|
+
.replace(/\n {14}/gu, "\n")
|
|
444
|
+
.trim();
|
|
445
|
+
}
|
|
446
|
+
default:
|
|
447
|
+
throw new Error(`BUG: encodeType with ${type.constructor.name}`);
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
exports.encodeType = encodeType;
|
|
451
|
+
function generateStruct(struct) {
|
|
452
|
+
return `
|
|
453
|
+
type ${struct.name} = {
|
|
454
|
+
${struct.fields.map(field => `${capitalize(field.name)}: ${generateTypeName(field.type)}`).join(";\n ")}
|
|
455
|
+
} with
|
|
456
|
+
static member Create (${struct.fields.map(field => `${ident(field.name)}: ${generateTypeName(field.type)}`).join(", ")}): ${struct.name} =
|
|
457
|
+
{ ${struct.fields.map(field => `${capitalize(field.name)} = ${ident(field.name)}`).join("; ")} }
|
|
458
|
+
|
|
459
|
+
let Decode${struct.name} (json_: JsonElement) (path_: string): ${struct.name} =
|
|
460
|
+
if (json_.ValueKind <> JsonValueKind.Object) then raise (FatalException($"'{path_}' must be an object."))
|
|
461
|
+
${struct.fields
|
|
462
|
+
.map(field => `
|
|
463
|
+
let ${field.name}Json_ = decodeJsonElementStrict ${JSON.stringify(field.name)} json_ $"{path_}.${field.name}"
|
|
464
|
+
let ${ident(field.name)} =
|
|
465
|
+
${decodeType(field.type, `${field.name}Json_`, `$"{path_}.${field.name}"`, ident(field.name)).replace(/\n/gu, "\n ")}
|
|
466
|
+
`)
|
|
467
|
+
.join("")}
|
|
468
|
+
{ ${struct.fields.map(field => `${capitalize(field.name)} = ${ident(field.name)}`).join("; ")} }
|
|
469
|
+
|
|
470
|
+
let Encode${struct.name} (obj_: ${struct.name}) (resultWriter_: Utf8JsonWriter) (path_: string) =
|
|
471
|
+
resultWriter_.WriteStartObject()
|
|
472
|
+
${struct.fields
|
|
473
|
+
.map(field => `
|
|
474
|
+
resultWriter_.WritePropertyName(${JSON.stringify(field.name)})
|
|
475
|
+
${encodeType(field.type, `obj_.${capitalize(field.name)}`, `$"{path_}.${field.name}"`).replace(/\n/gu, "\n ")}`)
|
|
476
|
+
.join("\n")}
|
|
477
|
+
resultWriter_.WriteEndObject()`;
|
|
478
|
+
}
|
|
479
|
+
exports.generateStruct = generateStruct;
|
|
480
|
+
function generateEnum(type) {
|
|
481
|
+
return `
|
|
482
|
+
type ${type.name} =
|
|
483
|
+
${type.values.map(({ value }) => `| ${capitalize(value)}`).join("\n ")}
|
|
484
|
+
|
|
485
|
+
let Decode${type.name} (json_: JsonElement) (path_: string): ${type.name} =
|
|
486
|
+
if (json_.ValueKind <> JsonValueKind.String) then raise (FatalException($"'{path_}' must be a string."))
|
|
487
|
+
match json_.GetString() with
|
|
488
|
+
${type.values.map(({ value }) => `| "${value}" -> ${type.name}.${capitalize(value)}`).join("\n ")}
|
|
489
|
+
| _ -> raise (FatalException($"'{path_}' must be one of: (${type.values.map(({ value }) => `'${value}'`).join(", ")})."))
|
|
490
|
+
|
|
491
|
+
let Encode${type.name} (obj_: ${type.name}) (resultWriter_: Utf8JsonWriter) (path_: string) =
|
|
492
|
+
match obj_ with
|
|
493
|
+
${type.values.map(({ value }) => `| ${type.name}.${capitalize(value)} -> resultWriter_.WriteStringValue("${value}")`).join("\n ")}
|
|
494
|
+
|
|
495
|
+
`;
|
|
496
|
+
}
|
|
497
|
+
exports.generateEnum = generateEnum;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./fsharp-server";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./fsharp-server"), exports);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.dom.iterable.d.ts","../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../node_modules/typescript/lib/lib.scripthost.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.es2017.full.d.ts","../node_modules/@sdkgen/parser/src/token.ts","../node_modules/@sdkgen/parser/src/ast.ts","../node_modules/@sdkgen/parser/src/compatibility/index.ts","../node_modules/@sdkgen/parser/src/semantic/visitor.ts","../node_modules/@sdkgen/parser/src/semantic/01_check_multiple_declaration.ts","../node_modules/@sdkgen/parser/src/semantic/02_give_struct_and_enum_names.ts","../node_modules/@sdkgen/parser/src/semantic/03_match_type_definitions.ts","../node_modules/@sdkgen/parser/src/semantic/04_check_dont_return_secret.ts","../node_modules/@sdkgen/parser/src/semantic/05_expand_spreads.ts","../node_modules/@sdkgen/parser/src/semantic/06_check_empty_struct_or_enum.ts","../node_modules/@sdkgen/parser/src/semantic/07_validate_recursive_types.ts","../node_modules/@sdkgen/parser/src/semantic/08_collect_struct_and_enum_types.ts","../node_modules/@sdkgen/parser/src/semantic/09_validate_annotations.ts","../node_modules/@sdkgen/parser/src/semantic/analyser.ts","../node_modules/@sdkgen/parser/src/utils.ts","../node_modules/@sdkgen/parser/src/json.ts","../node_modules/@sdkgen/parser/src/lexer.ts","../node_modules/@sdkgen/parser/src/restparser.ts","../node_modules/@sdkgen/parser/src/parser.ts","../node_modules/@sdkgen/parser/src/index.ts","../src/helpers.ts","../src/fsharp-server.ts","../src/index.ts","../node_modules/@babel/types/lib/index.d.ts","../node_modules/@types/babel__generator/index.d.ts","../node_modules/@babel/parser/typings/babel-parser.d.ts","../node_modules/@types/babel__template/index.d.ts","../node_modules/@types/babel__traverse/index.d.ts","../node_modules/@types/babel__core/index.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/@types/graceful-fs/index.d.ts","../node_modules/@types/istanbul-lib-coverage/index.d.ts","../node_modules/@types/istanbul-lib-report/index.d.ts","../node_modules/@types/istanbul-reports/index.d.ts","../node_modules/jest-diff/build/cleanupSemantic.d.ts","../node_modules/pretty-format/build/types.d.ts","../node_modules/pretty-format/build/index.d.ts","../node_modules/jest-diff/build/types.d.ts","../node_modules/jest-diff/build/diffLines.d.ts","../node_modules/jest-diff/build/printDiffs.d.ts","../node_modules/jest-diff/build/index.d.ts","../node_modules/@types/jest/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/prettier/index.d.ts","../node_modules/@types/stack-utils/index.d.ts","../node_modules/@types/yargs-parser/index.d.ts","../node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"89f78430e422a0f06d13019d60d5a45b37ec2d28e67eb647f73b1b0d19a46b72","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"927cb2b60048e1395b183bf74b2b80a75bdb1dbe384e1d9fac654313ea2fb136","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed","abcce357d43321346018f0a447aae8396df4b6e3c8a71a07a698852c010659e6","86d002626bd91aade1394d368f8745b5b5fbe7ba6c8fda6d30c2959dac0a1795","e9b6d6b1c360f61d701fec2ac49dcf6a7a11fd26b209d0da366a48ab2cbfa759","50ba5c02af36d9f80c7da35962cb61d1088a7af05ef5930d417981baccfbc9c3","32e2cd21e5b2b1f554c8b78d526790c53aebde93764ca0a62198a3fafd702ced","de598f66a813cce8393cbb4b610c8ffe4788f0341d084e32f750d6e0e69f7f54","481a4131dcbf468c936b2101e8b57aa2e6e06132f6cab7b2da37a346b10e0aef","ec1b879eff21a88a63438fdcba018128906ed10d59929679b2c62b63af87e6ec","71b016c31de70df11b74578155fbf01b7b3f2a007ee2a3f664a16e0e3db07a0a","c9a25578762ca94acd867137a9db5466a0d33e8ab037e4f77d9bc077b4c2f831","5307c4560e27aef1e4ec79742fa611568b06d22b03cd932f052bf1e5b1c237ee","22316de0c4d000dc53e1f1739b84eacc9690466f7904efb124efb459d1cf20b5","fc591e99fea917fa85a6df89a530aced1814fa9ddaab578b926aa3da106e6ce4","a968819b82036a6fa618eef5563ee21a8423f6f2b21eb97d66f8d839a6b0c519","1d69af3250560dc6bc0384c8defb9476c782acc635dec27b775d2bfa4020ed1e","4aa8499b47bf6fba069fbe031fda77f93d6de6cd044ea441637de31d5a35b34e","bb859947a395dfe951fa360bcf2fc4c118e97811ae04b811ecabcf066b658299","31b7510503d7ed5a8a7c45c1f0e7ab1c9eedd0c674131fd797b371d4285ed518","97a0b9ea46495916f93d95a9da317138ac69d7abaf3afa56b10af65b04824093","ce9361120cf8dab14f969006c491ee03309022d27a194b9e7822eb2fc3f510cf","40a6177080f7b189704265a0c1135717b9cf2f47a2ed2e3e2a3d51a8c753beec","0580d935d6788cdcafc6d7743270571e675e4f67ac01db7b571fb14894f96d14","0db57498e965fe5c064e0aef24a9c6efeaae440f062e2f23649141d9340fa4a1","d5d7b68f5369a210c235cd65458369888f8b839192d088c964f21cab3ac954db","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","64b867c61effed7b5bc0cc06b3d8eac23b067a3fba581fc7d3c292fa593e6a45","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","dd5647a9ccccb2b074dca8a02b00948ac293091ebe73fdf2e6e98f718819f669","0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","196fee5541bfd59699dab615fee2ae7a6f5fe0a6337bcbbfd656ebf1ae329a63","160cc6e3d06938535bc887754afe5798c22d81ce83a9792ebfe2371a70f2ffc2","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"eecd493fc62c4dba3d988e2d7dff63299bf12ab49f5c9021dfef8dcc1ff2089e","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","945a841f9a591197154c85386bc5a1467d42d325104bb36db51bc566bbb240be","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a7971f9fb2a32ec7788ec6cda9d7a33c02023dfe9a62db2030ad1359649d8050","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4","d88ecca73348e7c337541c4b8b60a50aca5e87384f6b8a422fc6603c637e4c21","badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1cdb8f094b969dcc183745dc88404e2d8fcf2a858c6e7cc2441011476573238e","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190",{"version":"6ff2ca51e2c9d88d6d904c481879b12ec0cad2a69b88e220859a52207444773b","affectsGlobalScope":true},"0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","501260c8b07a6e423fb6ebdea704e732ad529208e4fbbc517836fac8f8ae8895","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","6ba73232c9d3267ca36ddb83e335d474d2c0e167481e3dec416c782894e11438"],"options":{"composite":true,"declaration":true,"esModuleInterop":true,"module":1,"outDir":"./","strict":true,"target":4},"fileIdsList":[[67,116],[116],[44,116],[45,116],[44,45,46,59,60,62,116],[45,57,58,116],[44,45,57,58,60,61,116],[45,47,116],[45,47,63,116],[45,48,49,50,51,52,53,54,55,56,116],[67,68,69,70,71,116],[67,69,116],[89,116,123],[116,125],[116,126],[116,130,134],[73,116],[76,116],[77,82,116],[78,88,89,96,105,115,116],[78,79,88,96,116],[80,116],[81,82,89,97,116],[82,105,112,116],[83,85,88,96,116],[84,116],[85,86,116],[87,88,116],[88,116],[88,89,90,105,115,116],[88,89,90,105,116],[91,96,105,115,116],[88,89,91,92,96,105,112,115,116],[91,93,105,112,115,116],[73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122],[88,94,116],[95,115,116],[85,88,96,105,116],[97,116],[98,116],[76,99,116],[100,114,116,120],[101,116],[102,116],[88,103,116],[103,104,116,118],[88,105,106,107,116],[105,107,116],[105,106,116],[108,116],[109,116],[88,110,111,116],[110,111,116],[82,96,112,116],[113,116],[96,114,116],[77,91,102,115,116],[82,116],[105,116,117],[116,118],[116,119],[77,82,88,90,99,105,115,116,118,120],[105,116,121],[116,140],[116,128,131],[116,128,131,132,133],[116,130],[116,129],[63,64,116],[63,116],[65,116]],"referencedMap":[[69,1],[67,2],[45,3],[46,4],[63,5],[59,6],[60,3],[62,7],[61,4],[48,8],[49,8],[50,8],[51,8],[52,9],[53,8],[54,8],[55,8],[56,8],[57,10],[47,4],[44,2],[58,4],[72,11],[68,1],[70,12],[71,1],[124,13],[125,2],[126,14],[127,15],[135,16],[136,2],[137,2],[73,17],[74,17],[76,18],[77,19],[78,20],[79,21],[80,22],[81,23],[82,24],[83,25],[84,26],[85,27],[86,27],[87,28],[88,29],[89,30],[90,31],[75,2],[122,2],[91,32],[92,33],[93,34],[123,35],[94,36],[95,37],[96,38],[97,39],[98,40],[99,41],[100,42],[101,43],[102,44],[103,45],[104,46],[105,47],[107,48],[106,49],[108,50],[109,51],[110,52],[111,53],[112,54],[113,55],[114,56],[115,57],[116,58],[117,59],[118,60],[119,61],[120,62],[121,63],[138,2],[139,2],[140,2],[141,64],[128,2],[132,65],[134,66],[133,65],[131,67],[130,68],[129,2],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[43,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[41,2],[37,2],[38,2],[39,2],[40,2],[1,2],[42,2],[11,2],[10,2],[65,69],[64,70],[66,71]],"exportedModulesMap":[[69,1],[67,2],[45,3],[46,4],[63,5],[59,6],[60,3],[62,7],[61,4],[48,8],[49,8],[50,8],[51,8],[52,9],[53,8],[54,8],[55,8],[56,8],[57,10],[47,4],[44,2],[58,4],[72,11],[68,1],[70,12],[71,1],[124,13],[125,2],[126,14],[127,15],[135,16],[136,2],[137,2],[73,17],[74,17],[76,18],[77,19],[78,20],[79,21],[80,22],[81,23],[82,24],[83,25],[84,26],[85,27],[86,27],[87,28],[88,29],[89,30],[90,31],[75,2],[122,2],[91,32],[92,33],[93,34],[123,35],[94,36],[95,37],[96,38],[97,39],[98,40],[99,41],[100,42],[101,43],[102,44],[103,45],[104,46],[105,47],[107,48],[106,49],[108,50],[109,51],[110,52],[111,53],[112,54],[113,55],[114,56],[115,57],[116,58],[117,59],[118,60],[119,61],[120,62],[121,63],[138,2],[139,2],[140,2],[141,64],[128,2],[132,65],[134,66],[133,65],[131,67],[130,68],[129,2],[8,2],[9,2],[13,2],[12,2],[2,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[3,2],[4,2],[43,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[33,2],[34,2],[35,2],[36,2],[7,2],[41,2],[37,2],[38,2],[39,2],[40,2],[1,2],[42,2],[11,2],[10,2],[65,69],[64,70],[66,71]],"semanticDiagnosticsPerFile":[69,67,45,46,63,59,60,62,61,48,49,50,51,52,53,54,55,56,57,47,44,58,72,68,70,71,124,125,126,127,135,136,137,73,74,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,75,122,91,92,93,123,94,95,96,97,98,99,100,101,102,103,104,105,107,106,108,109,110,111,112,113,114,115,116,117,118,119,120,121,138,139,140,141,128,132,134,133,131,130,129,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,43,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,1,42,11,10,65,64,66]},"version":"4.5.4"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sdkgen/fsharp-generator",
|
|
3
|
+
"version": "0.0.0-dev.20220117160225",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "dist/src/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"test": "jest --passWithNoTests",
|
|
8
|
+
"eslint:fix": "eslint --fix '**/*.ts'",
|
|
9
|
+
"eslint:check": "eslint '**/*.ts'",
|
|
10
|
+
"build": "tsc"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/sdkgen/sdkgen.git"
|
|
15
|
+
},
|
|
16
|
+
"author": "",
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/sdkgen/sdkgen/issues"
|
|
20
|
+
},
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://github.com/sdkgen/sdkgen#readme",
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@cubos/eslint-config": "^1.0.536820",
|
|
27
|
+
"@types/jest": "^27.0.1",
|
|
28
|
+
"@types/node": "^16.7.0",
|
|
29
|
+
"jest": "^27.0.6",
|
|
30
|
+
"ts-jest": "^27.0.5",
|
|
31
|
+
"typescript": "^4.3.5"
|
|
32
|
+
},
|
|
33
|
+
"jest": {
|
|
34
|
+
"transform": {
|
|
35
|
+
"^.+\\.tsx?$": "ts-jest"
|
|
36
|
+
},
|
|
37
|
+
"testRegex": "spec/.*\\.spec\\.ts$",
|
|
38
|
+
"moduleFileExtensions": [
|
|
39
|
+
"ts",
|
|
40
|
+
"tsx",
|
|
41
|
+
"js"
|
|
42
|
+
],
|
|
43
|
+
"collectCoverage": true,
|
|
44
|
+
"coveragePathIgnorePatterns": [
|
|
45
|
+
"/node_modules/"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@sdkgen/parser": "0.0.0-dev.20220117160225"
|
|
50
|
+
},
|
|
51
|
+
"types": "dist/src/index.d.ts"
|
|
52
|
+
}
|