@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 ADDED
@@ -0,0 +1,3 @@
1
+ {
2
+ "extends": ["@cubos"]
3
+ }
package/.prettierrc ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "arrowParens": "avoid",
3
+ "bracketSpacing": true,
4
+ "endOfLine": "lf",
5
+ "parser": "typescript",
6
+ "printWidth": 150,
7
+ "semi": true,
8
+ "singleQuote": false,
9
+ "tabWidth": 2,
10
+ "trailingComma": "all",
11
+ "useTabs": false
12
+ }
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,3 @@
1
+ [![Build Status](https://travis-ci.com/sdkgen/fsharp-generator.svg?branch=master)](https://travis-ci.com/sdkgen/fsharp-generator)
2
+
3
+ # npm i @sdkgen/fsharp-generator
@@ -0,0 +1,2 @@
1
+ import type { AstRoot } from "@sdkgen/parser";
2
+ export declare function generateFSharpServerSource(ast: AstRoot): string;
@@ -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
+ }