@azure-tools/typespec-go 0.17.0-dev.9 → 0.17.1-dev.0

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +6 -0
  3. package/dist/src/codegen/core/client-factory.js +1 -1
  4. package/dist/src/codegen/core/client-factory.js.map +1 -1
  5. package/dist/src/codegen/core/example.js +1 -1
  6. package/dist/src/codegen/core/example.js.map +1 -1
  7. package/dist/src/codegen/core/gomod.js +3 -3
  8. package/dist/src/codegen/core/gomod.js.map +1 -1
  9. package/dist/src/codegen/core/helpers.d.ts +22 -0
  10. package/dist/src/codegen/core/helpers.d.ts.map +1 -1
  11. package/dist/src/codegen/core/helpers.js +24 -0
  12. package/dist/src/codegen/core/helpers.js.map +1 -1
  13. package/dist/src/codegen/core/index.d.ts +1 -0
  14. package/dist/src/codegen/core/index.d.ts.map +1 -1
  15. package/dist/src/codegen/core/index.js +1 -0
  16. package/dist/src/codegen/core/index.js.map +1 -1
  17. package/dist/src/codegen/core/models.d.ts.map +1 -1
  18. package/dist/src/codegen/core/models.js +16 -9
  19. package/dist/src/codegen/core/models.js.map +1 -1
  20. package/dist/src/codegen/core/operations.js +11 -11
  21. package/dist/src/codegen/core/operations.js.map +1 -1
  22. package/dist/src/codegen/core/request-handler.js.map +1 -1
  23. package/dist/src/codegen/core/responses.js +1 -1
  24. package/dist/src/codegen/core/responses.js.map +1 -1
  25. package/dist/src/codegen/core/unions.d.ts +17 -0
  26. package/dist/src/codegen/core/unions.d.ts.map +1 -0
  27. package/dist/src/codegen/core/unions.js +545 -0
  28. package/dist/src/codegen/core/unions.js.map +1 -0
  29. package/dist/src/codegen/emitter.d.ts.map +1 -1
  30. package/dist/src/codegen/emitter.js +11 -2
  31. package/dist/src/codegen/emitter.js.map +1 -1
  32. package/dist/src/codemodel/code-model.d.ts +2 -25
  33. package/dist/src/codemodel/code-model.d.ts.map +1 -1
  34. package/dist/src/codemodel/code-model.js +1 -9
  35. package/dist/src/codemodel/code-model.js.map +1 -1
  36. package/dist/src/codemodel/module.d.ts +2 -0
  37. package/dist/src/codemodel/module.d.ts.map +1 -1
  38. package/dist/src/codemodel/module.js +1 -0
  39. package/dist/src/codemodel/module.js.map +1 -1
  40. package/dist/src/codemodel/type.d.ts +24 -1
  41. package/dist/src/codemodel/type.d.ts.map +1 -1
  42. package/dist/src/codemodel/type.js +29 -1
  43. package/dist/src/codemodel/type.js.map +1 -1
  44. package/dist/src/lib.d.ts +1 -0
  45. package/dist/src/lib.d.ts.map +1 -1
  46. package/dist/src/lib.js +5 -0
  47. package/dist/src/lib.js.map +1 -1
  48. package/dist/src/tcgcadapter/adapter.d.ts.map +1 -1
  49. package/dist/src/tcgcadapter/adapter.js +10 -12
  50. package/dist/src/tcgcadapter/adapter.js.map +1 -1
  51. package/dist/src/tcgcadapter/clients.d.ts.map +1 -1
  52. package/dist/src/tcgcadapter/clients.js +10 -10
  53. package/dist/src/tcgcadapter/clients.js.map +1 -1
  54. package/dist/src/tcgcadapter/helpers.d.ts +3 -3
  55. package/dist/src/tcgcadapter/helpers.d.ts.map +1 -1
  56. package/dist/src/tcgcadapter/helpers.js +7 -7
  57. package/dist/src/tcgcadapter/helpers.js.map +1 -1
  58. package/dist/src/tcgcadapter/types.d.ts +1 -0
  59. package/dist/src/tcgcadapter/types.d.ts.map +1 -1
  60. package/dist/src/tcgcadapter/types.js +64 -3
  61. package/dist/src/tcgcadapter/types.js.map +1 -1
  62. package/package.json +14 -14
@@ -0,0 +1,545 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import * as go from "../../codemodel/index.js";
6
+ import { CodegenError } from "./errors.js";
7
+ import * as helpers from "./helpers.js";
8
+ import { ImportManager } from "./imports.js";
9
+ /**
10
+ * creates the content for unions.go and unions_serde.go files.
11
+ * if the package contains no union types, undefined is returned.
12
+ *
13
+ * @param pkg contains the package content
14
+ * @returns the text for the files or undefined
15
+ */
16
+ export function generateUnions(pkg) {
17
+ if (pkg.unions.length === 0) {
18
+ return undefined;
19
+ }
20
+ const indent = new helpers.Indentation();
21
+ const imports = new ImportManager(pkg);
22
+ const typeDefs = generateUnionTypes(pkg.unions, imports, indent);
23
+ let text = helpers.contentPreamble(pkg);
24
+ text += imports.text();
25
+ text += typeDefs;
26
+ return {
27
+ types: text,
28
+ serde: generateUnionsSerde(pkg),
29
+ };
30
+ }
31
+ /**
32
+ * creates the union type definitions
33
+ *
34
+ * @param goUnions the union types to emit
35
+ * @param imports the import manager currently in scope
36
+ * @param indent the indentation helper currently in scope
37
+ * @returns the text for the union type definitions
38
+ */
39
+ function generateUnionTypes(goUnions, imports, indent) {
40
+ let text = "";
41
+ for (const goUnion of goUnions) {
42
+ text += helpers.formatDocCommentWithPrefix(goUnion.name, goUnion.docs);
43
+ text += `type ${goUnion.name} struct {\n`;
44
+ indent.push();
45
+ for (const field of goUnion.fields) {
46
+ imports.addForType(field.type);
47
+ text += helpers.formatDocCommentWithPrefix(field.name, field.docs);
48
+ text += `${indent.get()}${field.name} ${helpers.star(field.byValue)}${go.getTypeDeclaration(field.type, goUnion.pkg)}\n`;
49
+ }
50
+ text += `${indent.pop().get()}}\n\n`;
51
+ }
52
+ return text;
53
+ }
54
+ /**
55
+ * creates the un/marshalling implementations
56
+ *
57
+ * @param pkg contains the package content
58
+ * @returns the un/marshalling methods
59
+ */
60
+ function generateUnionsSerde(pkg) {
61
+ const indent = new helpers.Indentation();
62
+ const imports = new ImportManager(pkg);
63
+ imports.add("encoding/json");
64
+ imports.add("errors");
65
+ imports.add("fmt");
66
+ let emitProbe = false;
67
+ let emitFloat = false;
68
+ let emitRequired = false;
69
+ let content = "";
70
+ for (const goUnion of pkg.unions) {
71
+ content += generateMarshalJson(goUnion, indent);
72
+ const result = generateUnmarshalJson(goUnion, indent);
73
+ content += result.content;
74
+ // don't overwrite an existing true with false
75
+ emitProbe = emitProbe ? true : result.emitProbe;
76
+ emitFloat = emitFloat ? true : result.emitFloat;
77
+ emitRequired = emitRequired ? true : result.emitRequired;
78
+ }
79
+ let text = helpers.contentPreamble(pkg);
80
+ text += imports.text();
81
+ text += content;
82
+ if (emitProbe) {
83
+ text += jsonKindProbe;
84
+ }
85
+ if (emitFloat) {
86
+ text += jsonNumberIsFloat;
87
+ }
88
+ if (emitRequired) {
89
+ text += hasRequiredFields;
90
+ }
91
+ return text;
92
+ }
93
+ /**
94
+ * creates the MarshalJSON method for the specified union type
95
+ *
96
+ * @param goUnion the type for which to emit the method
97
+ * @param indent the indentation helper currently in scope
98
+ * @returns the text for the MarshalJSON method
99
+ */
100
+ function generateMarshalJson(goUnion, indent) {
101
+ const receiver = getReceiverName(goUnion);
102
+ let text = `func (${receiver} ${goUnion.name}) MarshalJSON() ([]byte, error) {\n`;
103
+ text += `${indent.get()}var val any\n`;
104
+ text += `${indent.get()}set := 0\n`;
105
+ // check each field for nil, if it's not nil, assign it to val and increment set count
106
+ for (const field of goUnion.fields) {
107
+ text += `${indent.get()}${helpers.buildIfBlock(indent, {
108
+ condition: `${receiver}.${field.name} != nil`,
109
+ body: (indent) => {
110
+ let controlBlock = `${indent.get()}val = ${receiver}.${field.name}\n`;
111
+ controlBlock += `${indent.get()}set++\n`;
112
+ return controlBlock;
113
+ },
114
+ })}\n`;
115
+ }
116
+ // switch on the number of fields set.
117
+ // 0 - return an error stating no fields were set
118
+ // 1 - marshal the value
119
+ // more than 1 - return an error stating only one field can be set
120
+ text += `${indent.get()}${helpers.buildSwitchCase(indent, "set", [
121
+ {
122
+ expression: "0",
123
+ clause: (indent) => `${indent.get()}return nil, fmt.Errorf("%T has no value", ${receiver})\n`,
124
+ },
125
+ {
126
+ expression: "1",
127
+ clause: (indent) => `${indent.get()}return json.Marshal(val)\n`,
128
+ },
129
+ ], {
130
+ clause: (indent) => `${indent.get()}return nil, fmt.Errorf("set only one field in %T", ${receiver})\n`,
131
+ })}`;
132
+ text += "}\n\n";
133
+ return text;
134
+ }
135
+ /**
136
+ * creates the UnmarshalJSON method for the specified union type.
137
+ *
138
+ * mixed types e.g. string, number, array, object - requires jsonKind probe, might require jsonNumberIsFloat
139
+ * mixed objects e.g. Cat, Dog, Snake, Record<T> - requires hasRequiredFields, no jsonKind prob
140
+ *
141
+ * note that homogenous scalar types get folded into an enum by tcgc
142
+ * so we don't have to handle that case. e.g. "1 | 2 | 3.14" will be
143
+ * an enum type handled by the standard un/marshalling logic.
144
+ *
145
+ * if goUnion contains mixed types then emit probe + switch/case for jsonKind
146
+ * if there are mixed JSON numbers, collapse into single "case jsonNumber:"
147
+ * if goUnion contains mixed object types then "else" clause unmarshals into the Record<T>
148
+ * if this is in mixed types case, collapse into single "case jsonObject:"
149
+ *
150
+ * @param goUnion the type for which to emit the method
151
+ * @param indent the indentation helper currently in scope
152
+ * @returns the text for the UnmarshalJSON method and true/false if the JSON probe helper code should be emitted
153
+ */
154
+ function generateUnmarshalJson(goUnion, indent) {
155
+ const receiver = getReceiverName(goUnion);
156
+ let text = `func (${receiver} *${goUnion.name}) UnmarshalJSON(data []byte) (err error) {\n`;
157
+ text += `${indent.get()}defer func() {\n`;
158
+ text += `${indent.push().get()}${helpers.buildIfBlock(indent, {
159
+ condition: "err != nil",
160
+ body: (indent) => `${indent.get()}err = fmt.Errorf("unmarshalling type %T: %s", ${receiver}, err.Error())\n`,
161
+ })}\n`;
162
+ text += `${indent.pop().get()}}()\n`;
163
+ const mixedTypes = getForMixedTypes(goUnion);
164
+ if (mixedTypes) {
165
+ text += `${indent.get()}${helpers.buildSwitchCase(indent, "probeJSONKind(data)", mixedTypes.cases, {
166
+ clause: (indent) => `${indent.get()}err = errors.New("unexpected JSON token")\n`,
167
+ })}`;
168
+ }
169
+ else {
170
+ text += generateUnmarshalObjects(goUnion, indent);
171
+ }
172
+ text += `${indent.get()}return\n`;
173
+ text += "}\n\n";
174
+ return {
175
+ content: text,
176
+ emitFloat: mixedTypes ? mixedTypes.emitFloat : false,
177
+ emitProbe: mixedTypes ? true : false,
178
+ emitRequired: mixedTypes ? mixedTypes.emitRequired : true,
179
+ };
180
+ }
181
+ /**
182
+ * generates the unmarshalling code for JSON objects.
183
+ * this includes typed and untyped objects i.e. Record<T>.
184
+ *
185
+ * @param goUnion the type for which to emit the code
186
+ * @param indent the indentation helper currently in scope
187
+ * @returns the text for unmarshalling JSON objects
188
+ */
189
+ function generateUnmarshalObjects(goUnion, indent) {
190
+ // this is a union of object types e.g. Cat | Dog | Record<T>
191
+ const receiver = getReceiverName(goUnion);
192
+ let text = `${indent.get()}var rawMsg map[string]json.RawMessage\n`;
193
+ text += `${indent.get()}${helpers.buildIfBlock(indent, {
194
+ condition: "err = json.Unmarshal(data, &rawMsg); err != nil",
195
+ body: (indent) => `${indent.get()}return\n`,
196
+ })}\n`;
197
+ const jsonObjects = groupJsonObjects(goUnion);
198
+ // the codegen below assumes at most one map variant, which it treats
199
+ // as the fallback. a union with multiple maps (e.g. Foo | Record<int32>
200
+ // | Record<string>) would generate incorrect code, so fail instead.
201
+ if (jsonObjects.filter((field) => field.type.kind === "map").length > 1) {
202
+ throw new CodegenError("UnsupportedTsp", `union ${goUnion.name} has multiple map variants which is not supported`);
203
+ }
204
+ let ifBlock = { condition: "", body: () => "" };
205
+ const elseIfBlocks = new Array();
206
+ for (let i = 0; i < jsonObjects.length; ++i) {
207
+ const field = jsonObjects[i];
208
+ if (field.type.kind === "map") {
209
+ break;
210
+ }
211
+ else if (field.type.kind !== "model") {
212
+ // we already validated this earlier. however it lets
213
+ // the compiler treat field.type as a model type.
214
+ throw new CodegenError("InternalError", `unexpected union type ${field.type.kind}`);
215
+ }
216
+ const condition = `hasRequiredFields(rawMsg, ${getJsonFieldsForProbe(field.type)})`;
217
+ const body = (indent) => `${indent.get()}err = json.Unmarshal(data, &${receiver}.${field.name})\n`;
218
+ if (i === 0) {
219
+ ifBlock = {
220
+ condition: condition,
221
+ body: body,
222
+ };
223
+ }
224
+ else {
225
+ elseIfBlocks.push({
226
+ condition: condition,
227
+ body: body,
228
+ });
229
+ }
230
+ }
231
+ const elseBlock = { body: () => "" };
232
+ // if the last field is a map then it's the fallback
233
+ if (jsonObjects[jsonObjects.length - 1].type.kind === "map") {
234
+ elseBlock.body = (indent) => `${indent.get()}err = json.Unmarshal(data, &${receiver}.${jsonObjects[jsonObjects.length - 1].name})\n`;
235
+ }
236
+ else {
237
+ elseBlock.body = (indent) => `${indent.get()}err = errors.New("could not determine variant")\n`;
238
+ }
239
+ text += `${indent.get()}${helpers.buildIfBlock(indent, ifBlock, elseIfBlocks, elseBlock)}\n`;
240
+ return text;
241
+ }
242
+ /**
243
+ * returns the JSON field names used to probe if the JSON contains the target object.
244
+ * the result is a comma delimited list of strings (`"foo", "bar", "baz"`)
245
+ *
246
+ * @param model the model from which to select the probing fields
247
+ * @returns the list of field names
248
+ */
249
+ function getJsonFieldsForProbe(model) {
250
+ const fields = new Array();
251
+ for (let i = 0; i < 4 && i < model.fields.length; ++i) {
252
+ fields.push(model.fields[i]);
253
+ }
254
+ return fields.map((f) => `"${f.serializedName}"`).join();
255
+ }
256
+ /**
257
+ * determines if the union is a combination of mixed types.
258
+ * if the union doesn't contain mixed types, undefined is returned.
259
+ * e.g. number | object | string
260
+ *
261
+ * @param goUnion the type to inspect
262
+ * @returns the mixedTypesInfo for the union or undefined
263
+ */
264
+ function getForMixedTypes(goUnion) {
265
+ const groupedObjects = groupJsonObjects(goUnion);
266
+ if (groupedObjects.length === goUnion.fields.length) {
267
+ // all object types so not mixed
268
+ return undefined;
269
+ }
270
+ let hasMixedTypes = false;
271
+ for (let i = 1; i < goUnion.fields.length; ++i) {
272
+ hasMixedTypes = goUnion.fields[i].type !== goUnion.fields[0].type;
273
+ if (hasMixedTypes) {
274
+ break;
275
+ }
276
+ }
277
+ if (!hasMixedTypes) {
278
+ return undefined;
279
+ }
280
+ const mixedNumbers = groupMixedJsonNumbers(goUnion);
281
+ const mixedTypes = new Array();
282
+ const receiver = getReceiverName(goUnion);
283
+ for (const field of goUnion.fields) {
284
+ if ((mixedNumbers.length > 1 && mixedNumbers.includes(field)) ||
285
+ (groupedObjects.length > 1 && groupedObjects.includes(field))) {
286
+ // will process after since they will collapse into a single case statement
287
+ continue;
288
+ }
289
+ mixedTypes.push({
290
+ expression: getJsonProbeKindForType(field.type),
291
+ clause: (indent) => `${indent.get()}err = json.Unmarshal(data, &${receiver}.${field.name})\n`,
292
+ });
293
+ }
294
+ if (mixedNumbers.length > 1) {
295
+ // first entry is always the float
296
+ mixedTypes.push({
297
+ expression: "jsonNumber",
298
+ clause: (indent) => {
299
+ const caseStatement = `${indent.get()}${helpers.buildIfBlock(indent, {
300
+ condition: "jsonNumberIsFloat(data)",
301
+ body: (indent) => `${indent.get()}err = json.Unmarshal(data, &${receiver}.${mixedNumbers[0].name})\n`,
302
+ }, undefined, {
303
+ body: (indent) => `${indent.get()}err = json.Unmarshal(data, &${receiver}.${mixedNumbers[1].name})\n`,
304
+ })}\n`;
305
+ return caseStatement;
306
+ },
307
+ });
308
+ }
309
+ if (groupedObjects.length > 1) {
310
+ mixedTypes.push({
311
+ expression: "jsonObject",
312
+ clause: (indent) => generateUnmarshalObjects(goUnion, indent),
313
+ });
314
+ }
315
+ if (mixedNumbers.length > 1 || groupedObjects.length > 1) {
316
+ mixedTypes.sort((a, b) => helpers.sortAscending(a.expression, b.expression));
317
+ }
318
+ mixedTypes.push({
319
+ expression: "jsonEmpty",
320
+ clause: (indent) => `${indent.get()}err = errors.New("unexpected end of JSON input")\n`,
321
+ });
322
+ mixedTypes.push({
323
+ expression: "jsonNull",
324
+ clause: (indent) => `${indent.get()}err = nil\n`,
325
+ });
326
+ return {
327
+ cases: mixedTypes,
328
+ emitFloat: mixedNumbers.length > 1,
329
+ emitRequired: groupedObjects.length > 1,
330
+ };
331
+ }
332
+ /**
333
+ * returns an array containing mixed JSON number types (ints/floats).
334
+ * if there is no mix of number types, an empty array is returned.
335
+ *
336
+ * @param goUnion the type for which to collect JSON number types
337
+ * @returns an array of heterogenous number types or an empty array
338
+ */
339
+ function groupMixedJsonNumbers(goUnion) {
340
+ const floatFields = new Array();
341
+ const nonFloatFields = new Array();
342
+ for (const field of goUnion.fields) {
343
+ const scalarType = isJsonNumberType(field.type);
344
+ if (!scalarType) {
345
+ continue;
346
+ }
347
+ if (scalarType.startsWith("float")) {
348
+ floatFields.push(field);
349
+ }
350
+ else {
351
+ nonFloatFields.push(field);
352
+ }
353
+ }
354
+ if (floatFields.length === 0 || nonFloatFields.length === 0) {
355
+ // homogenous numbers, return empty array
356
+ return [];
357
+ }
358
+ return floatFields.concat(nonFloatFields);
359
+ }
360
+ /**
361
+ * returns all of the JSON object variant types within a union.
362
+ * the array is sorted by typed objects field length in descending
363
+ * order. any untyped object is the last entry.
364
+ *
365
+ * @param goUnion the type for which to collect JSON objects
366
+ * @returns an array of JSON object types
367
+ */
368
+ function groupJsonObjects(goUnion) {
369
+ const objectFields = new Array();
370
+ for (const field of goUnion.fields) {
371
+ if (field.type.kind === "map" || field.type.kind === "model") {
372
+ objectFields.push(field);
373
+ }
374
+ }
375
+ // sort the models by field count, so models with a higher
376
+ // field count appear first. we do this in an effort to reduce
377
+ // incorrect unmarshalling target selection. i.e. models with
378
+ // more fields have a better chance of hasRequiredFields() not
379
+ // returning a false positive. maps always appears after models
380
+ objectFields.sort((a, b) => {
381
+ if (a.type.kind === "model" && b.type.kind === "model") {
382
+ return b.type.fields.length - a.type.fields.length;
383
+ }
384
+ else if (a.type.kind === "map" && b.type.kind === "map") {
385
+ return 0;
386
+ }
387
+ else if (a.type.kind === "map") {
388
+ return 1;
389
+ }
390
+ else if (a.type.kind === "model") {
391
+ return -1;
392
+ }
393
+ throw new CodegenError("InternalError", `unexpected union types ${a.type.kind} ${b.type.kind}`);
394
+ });
395
+ return objectFields;
396
+ }
397
+ /**
398
+ * returns the underlying ScalarType for variantType. if the type
399
+ * is not a scalar undefined is returned. note that bool, byte, and
400
+ * rune scalar types are excluded thus return undefined.
401
+ *
402
+ * @param variantType the type to inspect
403
+ * @returns the ScalarType or undefined
404
+ */
405
+ function isJsonNumberType(variantType) {
406
+ const isScalarJsonNubmer = function (scalar) {
407
+ switch (scalar) {
408
+ case "bool":
409
+ case "byte":
410
+ case "rune":
411
+ return undefined;
412
+ default:
413
+ return scalar;
414
+ }
415
+ };
416
+ switch (variantType.kind) {
417
+ case "literal":
418
+ switch (variantType.type.kind) {
419
+ case "scalar":
420
+ return isScalarJsonNubmer(variantType.type.type);
421
+ default:
422
+ return undefined;
423
+ }
424
+ case "scalar":
425
+ return isScalarJsonNubmer(variantType.type);
426
+ default:
427
+ return undefined;
428
+ }
429
+ }
430
+ /**
431
+ * returns the jsonKind value based on the provided type
432
+ *
433
+ * @param variantType the type to inspect
434
+ * @returns the constant value
435
+ */
436
+ function getJsonProbeKindForType(variantType) {
437
+ const getScalarProbe = function (scalar) {
438
+ switch (scalar) {
439
+ case "bool":
440
+ return "jsonBool";
441
+ default:
442
+ return "jsonNumber";
443
+ }
444
+ };
445
+ switch (variantType.kind) {
446
+ case "constant":
447
+ switch (variantType.type) {
448
+ case "bool":
449
+ return "jsonBool";
450
+ case "string":
451
+ return "jsonString";
452
+ default:
453
+ return "jsonNumber";
454
+ }
455
+ case "literal":
456
+ switch (variantType.type.kind) {
457
+ case "scalar":
458
+ return getScalarProbe(variantType.type.type);
459
+ default:
460
+ return "jsonString";
461
+ }
462
+ case "map":
463
+ case "model":
464
+ return "jsonObject";
465
+ case "scalar":
466
+ return getScalarProbe(variantType.type);
467
+ case "slice":
468
+ return "jsonArray";
469
+ case "string":
470
+ return "jsonString";
471
+ }
472
+ }
473
+ /**
474
+ * gets the receiver name based on type name
475
+ *
476
+ * @param goUnion the union type
477
+ * @returns the receiver name
478
+ */
479
+ function getReceiverName(goUnion) {
480
+ return goUnion.name[0].toLowerCase();
481
+ }
482
+ /** code for sniffing JSON */
483
+ const jsonKindProbe = `
484
+ type jsonKind int
485
+
486
+ const (
487
+ jsonUnknown jsonKind = iota
488
+ jsonObject
489
+ jsonArray
490
+ jsonString
491
+ jsonNumber
492
+ jsonBool
493
+ jsonNull
494
+ jsonEmpty
495
+ )
496
+
497
+ func probeJSONKind(data []byte) jsonKind {
498
+ if len(data) == 0 {
499
+ return jsonEmpty
500
+ }
501
+ for _, b := range data {
502
+ switch b {
503
+ case ' ', '\\t', '\\r', '\\n':
504
+ continue
505
+ case '{':
506
+ return jsonObject
507
+ case '[':
508
+ return jsonArray
509
+ case '"':
510
+ return jsonString
511
+ case 't', 'f':
512
+ return jsonBool
513
+ case 'n':
514
+ return jsonNull
515
+ default:
516
+ return jsonNumber
517
+ }
518
+ }
519
+ return jsonUnknown
520
+ }
521
+ `;
522
+ /** code to disambiguate floats and ints */
523
+ const jsonNumberIsFloat = `
524
+ func jsonNumberIsFloat(data []byte) bool {
525
+ for _, b := range data {
526
+ switch b {
527
+ case '.', 'e', 'E':
528
+ return true
529
+ }
530
+ }
531
+ return false
532
+ }
533
+ `;
534
+ /** code to check raw JSON for a slice of fields */
535
+ const hasRequiredFields = `
536
+ func hasRequiredFields(rawMsg map[string]json.RawMessage, fields ...string) bool {
537
+ for _, field := range fields {
538
+ if _, ok := rawMsg[field]; !ok {
539
+ return false
540
+ }
541
+ }
542
+ return len(fields) > 0
543
+ }
544
+ `;
545
+ //# sourceMappingURL=unions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unions.js","sourceRoot":"","sources":["../../../../src/codegen/core/unions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/codegen/emitter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,gCAAgC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,4CAA4C;AAC5C,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBxF;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAsHrD,sCAAsC;IAChC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtC,yCAAyC;IACnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBnC,kCAAkC;IAC5B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC,uCAAuC;IACjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC;;;;OAIG;YACW,aAAa;CAgC5B"}
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/codegen/emitter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAI5C,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3C;;;OAGG;IACH,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,gCAAgC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzD;AAED,4CAA4C;AAC5C,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAwBxF;;;OAGG;IACG,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IA4HrD,sCAAsC;IAChC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtC,yCAAyC;IACnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBnC,kCAAkC;IAC5B,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC,uCAAuC;IACjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC;;;;OAIG;YACW,aAAa;CAgC5B"}
@@ -89,11 +89,16 @@ export class Emitter {
89
89
  if (responses.serDe.length > 0) {
90
90
  await write("responses_serde.go", responses.serDe);
91
91
  }
92
+ const unions = core.generateUnions(pkg);
93
+ if (unions) {
94
+ await write("unions.go", unions.types);
95
+ await write("unions_serde.go", unions.serde);
96
+ }
92
97
  const xmlAddlProps = core.generateXMLAdditionalPropsHelpers(pkg);
93
98
  if (xmlAddlProps.length > 0) {
94
99
  await write("xml_helper.go", xmlAddlProps);
95
100
  }
96
- if (this.codeModel.options.generateFakes) {
101
+ if (this.codeModel.options["generate-fakes"]) {
97
102
  const fakePkg = new go.FakePackage(pkg);
98
103
  const serverContent = fake.generateServers(fakePkg, this.codeModel.type);
99
104
  if (serverContent.servers.length > 0) {
@@ -135,7 +140,7 @@ export class Emitter {
135
140
  }
136
141
  /** writes the *_example_test.go files */
137
142
  async emitExamples() {
138
- if (!this.codeModel.options.generateExamples) {
143
+ if (!this.codeModel.options["generate-samples"]) {
139
144
  return;
140
145
  }
141
146
  await this.recursiveEmit(async (pkg, write) => {
@@ -271,6 +276,10 @@ function sortContent(pkg) {
271
276
  return sortAscending(a.fieldName, b.fieldName);
272
277
  });
273
278
  }
279
+ pkg.unions.sort((a, b) => sortAscending(a.name, b.name));
280
+ for (const goUnion of pkg.unions) {
281
+ goUnion.fields.sort((a, b) => sortAscending(a.name, b.name));
282
+ }
274
283
  pkg.clients.sort((a, b) => {
275
284
  return sortAscending(a.name, b.name);
276
285
  });
@@ -1 +1 @@
1
- {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/codegen/emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../../src/codegen/emitter.ts"],"names":[],"mappings":"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"}