@looker/sdk-codegen 21.7.4 → 21.8.1

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 (71) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/lib/codeGen.d.ts +1 -1
  3. package/lib/codeGen.js +28 -154
  4. package/lib/codeGen.js.map +1 -1
  5. package/lib/codeGenerators.js +0 -16
  6. package/lib/codeGenerators.js.map +1 -1
  7. package/lib/csharp.gen.js +3 -71
  8. package/lib/csharp.gen.js.map +1 -1
  9. package/lib/declarationInfo.js +0 -7
  10. package/lib/declarationInfo.js.map +1 -1
  11. package/lib/esm/codeGen.js +48 -157
  12. package/lib/esm/codeGen.js.map +1 -1
  13. package/lib/esm/codeGenerators.js +28 -20
  14. package/lib/esm/codeGenerators.js.map +1 -1
  15. package/lib/esm/csharp.gen.js +19 -75
  16. package/lib/esm/csharp.gen.js.map +1 -1
  17. package/lib/esm/declarationInfo.js +10 -7
  18. package/lib/esm/declarationInfo.js.map +1 -1
  19. package/lib/esm/exampleInfo.js +24 -23
  20. package/lib/esm/exampleInfo.js.map +1 -1
  21. package/lib/esm/go.gen.js +18 -92
  22. package/lib/esm/go.gen.js.map +1 -1
  23. package/lib/esm/index.js +148 -13
  24. package/lib/esm/index.js.map +1 -1
  25. package/lib/esm/kotlin.gen.js +23 -118
  26. package/lib/esm/kotlin.gen.js.map +1 -1
  27. package/lib/esm/pseudo.gen.js +14 -24
  28. package/lib/esm/pseudo.gen.js.map +1 -1
  29. package/lib/esm/python.gen.js +19 -138
  30. package/lib/esm/python.gen.js.map +1 -1
  31. package/lib/esm/sdkModels.js +103 -435
  32. package/lib/esm/sdkModels.js.map +1 -1
  33. package/lib/esm/specConverter.js +58 -88
  34. package/lib/esm/specConverter.js.map +1 -1
  35. package/lib/esm/specDiff.js +39 -54
  36. package/lib/esm/specDiff.js.map +1 -1
  37. package/lib/esm/swift.gen.js +25 -137
  38. package/lib/esm/swift.gen.js.map +1 -1
  39. package/lib/esm/testUtils/index.js +17 -0
  40. package/lib/esm/testUtils/index.js.map +1 -0
  41. package/lib/esm/testUtils/testUtils.js +66 -0
  42. package/lib/esm/testUtils/testUtils.js.map +1 -0
  43. package/lib/esm/typescript.gen.js +24 -125
  44. package/lib/esm/typescript.gen.js.map +1 -1
  45. package/lib/exampleInfo.js +1 -31
  46. package/lib/exampleInfo.js.map +1 -1
  47. package/lib/go.gen.js +3 -87
  48. package/lib/go.gen.js.map +1 -1
  49. package/lib/index.js +0 -26
  50. package/lib/index.js.map +1 -1
  51. package/lib/kotlin.gen.js +7 -113
  52. package/lib/kotlin.gen.js.map +1 -1
  53. package/lib/pseudo.gen.js +3 -24
  54. package/lib/pseudo.gen.js.map +1 -1
  55. package/lib/python.gen.js +3 -133
  56. package/lib/python.gen.js.map +1 -1
  57. package/lib/sdkModels.js +20 -450
  58. package/lib/sdkModels.js.map +1 -1
  59. package/lib/specConverter.js +6 -106
  60. package/lib/specConverter.js.map +1 -1
  61. package/lib/specDiff.js +4 -59
  62. package/lib/specDiff.js.map +1 -1
  63. package/lib/swift.gen.js +3 -128
  64. package/lib/swift.gen.js.map +1 -1
  65. package/lib/testUtils/index.js +0 -2
  66. package/lib/testUtils/index.js.map +1 -1
  67. package/lib/testUtils/testUtils.js +1 -17
  68. package/lib/testUtils/testUtils.js.map +1 -1
  69. package/lib/typescript.gen.js +5 -117
  70. package/lib/typescript.gen.js.map +1 -1
  71. package/package.json +3 -3
package/lib/go.gen.js CHANGED
@@ -4,36 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.GoGen = void 0;
7
-
8
7
  var _codeGen = require("./codeGen");
9
-
10
8
  var _sdkModels = require("./sdkModels");
11
-
12
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
-
9
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
11
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
12
  var align = (str, size) => {
15
13
  var num = size - str.length + 1;
16
14
  return str + ' '.repeat(num);
17
15
  };
18
-
19
16
  class AlignColumnWriter {
20
17
  constructor() {
21
18
  _defineProperty(this, "rows", []);
22
-
23
19
  _defineProperty(this, "sizes", []);
24
20
  }
25
-
26
21
  writeRow() {
27
22
  for (var _len = arguments.length, cols = new Array(_len), _key = 0; _key < _len; _key++) {
28
23
  cols[_key] = arguments[_key];
29
24
  }
30
-
31
25
  cols.forEach((value, index) => {
32
26
  this.sizes[index] = Math.max(this.sizes[index] || 0, value.length);
33
27
  });
34
28
  this.rows.push(cols);
35
29
  }
36
-
37
30
  toString() {
38
31
  var result = '';
39
32
  this.rows.forEach(row => {
@@ -45,76 +38,52 @@ class AlignColumnWriter {
45
38
  });
46
39
  return result;
47
40
  }
48
-
49
41
  }
50
-
51
42
  class GoGen extends _codeGen.CodeGen {
52
43
  constructor(api, versions) {
53
44
  super(api, versions);
54
45
  this.api = api;
55
46
  this.versions = versions;
56
-
57
47
  _defineProperty(this, "codePath", './go');
58
-
59
48
  _defineProperty(this, "fileExtension", '.go');
60
-
61
49
  _defineProperty(this, "nullStr", 'nil');
62
-
63
50
  _defineProperty(this, "packagePath", '');
64
-
65
51
  _defineProperty(this, "commentStr", '// ');
66
-
67
52
  _defineProperty(this, "enumDelimiter", '\n');
68
-
69
53
  _defineProperty(this, "indentStr", ' ');
70
-
71
54
  _defineProperty(this, "endTypeStr", '}');
72
-
73
55
  _defineProperty(this, "codeQuote", "\"");
74
-
75
56
  _defineProperty(this, "useNamedParameters", false);
76
-
77
57
  _defineProperty(this, "needsRequestTypes", true);
78
-
79
58
  _defineProperty(this, "keywords", new Set(['break', 'default', 'func', 'interface', 'select', 'case', 'defer', 'go', 'map', 'struct', 'chan', 'else', 'goto', 'package', 'switch', 'const', 'fallthrough', 'if', 'range', 'type', 'continue', 'for', 'import', 'return', 'var']));
80
-
81
59
  this.packageName = "v".concat(this.apiVersion.substring(0, this.apiVersion.indexOf('.')));
82
60
  this.apiVersion = this.packageName;
83
61
  }
84
-
85
62
  supportsMultiApi() {
86
63
  return false;
87
64
  }
88
-
89
65
  reserve(name) {
90
66
  if (this.keywords.has(name)) {
91
67
  return "".concat(name, "0");
92
68
  }
93
-
94
69
  return name;
95
70
  }
96
-
97
71
  commentHeader(indent, text) {
98
72
  if (this.noComment) return '';
99
73
  return text ? "".concat(indent, "/*\n\n").concat((0, _codeGen.commentBlock)(text, indent, ''), "\n").concat(indent, "*/\n") : '';
100
74
  }
101
-
102
75
  comment(indent, description) {
103
76
  if (this.noComment) return '';
104
77
  return (0, _codeGen.commentBlock)(description, indent, this.commentStr);
105
78
  }
106
-
107
79
  sdkFileName(baseFileName) {
108
80
  return this.fileName("".concat(this.sdkPath, "/").concat(this.packageName, "/").concat(baseFileName));
109
81
  }
110
-
111
82
  methodSignature(indent, method) {
112
83
  return this.methodHeaderDeclaration(indent, method, false);
113
84
  }
114
-
115
85
  methodHeaderDeclaration(indent, method) {
116
86
  var _method$description;
117
-
118
87
  var streamer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
119
88
  var mapped = this.typeMap(method.type);
120
89
  var head = (_method$description = method.description) === null || _method$description === void 0 ? void 0 : _method$description.trim();
@@ -122,7 +91,6 @@ class GoGen extends _codeGen.CodeGen {
122
91
  var fragment = '';
123
92
  var requestType = this.requestTypeName(method);
124
93
  var bump = indent + this.indentStr;
125
-
126
94
  if (requestType) {
127
95
  fragment = "request ".concat(requestType);
128
96
  } else {
@@ -131,50 +99,39 @@ class GoGen extends _codeGen.CodeGen {
131
99
  if (args && args.length > 0) args.forEach(p => params.push(this.declareParameter(bump, method, p)));
132
100
  fragment = params.length > 0 ? "\n".concat(params.join(this.paramDelimiter)) : '';
133
101
  }
134
-
135
102
  if (method.responseIsBoth()) {
136
103
  headComment += "\n\n**Note**: Binary content may be returned by this method.\n";
137
104
  } else if (method.responseIsBinary()) {
138
105
  headComment += "\n\n**Note**: Binary content is returned by this method.\n";
139
106
  }
140
-
141
107
  if (method.deprecated) {
142
108
  headComment += '\n\nDeprecated: This method is deprecated.\n';
143
109
  }
144
-
145
110
  var callback = "callback: (readable: Readable) => Promise<".concat(mapped.name, ">,");
146
111
  var retType = mapped.name === 'Void' ? '' : "".concat(mapped.name, ", ");
147
112
  var header = this.comment('', headComment) + '\n' + "func (l *LookerSDK) ".concat(this.toCamelCaseCap(method.name), "(") + (streamer ? "\n".concat(bump).concat(callback) : '');
148
113
  return header + fragment + "".concat(fragment ? ',' : '', "\n").concat(bump, "options *rtl.ApiSettings) (").concat(retType, "error) {\n");
149
114
  }
150
-
151
115
  declareMethod(indent, method) {
152
116
  var bump = this.bumper(indent);
153
117
  return this.methodSignature(indent, method) + this.encodePathParams(bump, method) + this.httpCall(bump, method) + "\n}";
154
118
  }
155
-
156
119
  declareParameter(indent, method, param) {
157
120
  var type = param.location === _sdkModels.strBody ? this.writeableType(param.type, method) || param.type : param.type;
158
121
  var mapped = this.typeMap(type);
159
122
  var pOpt = '';
160
-
161
123
  if (param.location === _sdkModels.strBody) {
162
124
  mapped.name = "".concat(mapped.name);
163
125
  }
164
-
165
126
  if (!param.required) {
166
127
  pOpt = mapped.default ? '' : '*';
167
128
  }
168
-
169
129
  return "".concat(indent).concat(this.toCamelCase(this.reserve(param.name)), " ").concat(pOpt).concat(mapped.name);
170
130
  }
171
-
172
131
  encodePathParams(indent, method) {
173
132
  var encodings = '';
174
-
175
133
  if (method.pathParams.length > 0) {
176
134
  var prefix = this.useRequest(method) ? 'request' : '';
177
-
178
135
  for (var param of method.pathParams) {
179
136
  if (param.doEncode()) {
180
137
  var name = this.accessor(param.name, prefix);
@@ -182,10 +139,8 @@ class GoGen extends _codeGen.CodeGen {
182
139
  }
183
140
  }
184
141
  }
185
-
186
142
  return encodings;
187
143
  }
188
-
189
144
  httpCall(indent, method) {
190
145
  var request = this.useRequest(method) ? 'request' : '';
191
146
  var mapped = this.typeMap(method.type);
@@ -196,7 +151,6 @@ class GoGen extends _codeGen.CodeGen {
196
151
  var result = mapped.name === 'Void' ? '' : 'result, ';
197
152
  return "" + resultDef + "".concat(indent, "err := l.session.Do(").concat(resultPointer, ", \"").concat(this.capitalize(method.httpMethod.toUpperCase()), "\", \"").concat(this.apiPath, "\", ").concat(this.httpPath(method.endpoint, request)) + "".concat(args ? ', ' + args : '', ")") + '\n' + "".concat(indent, "return ").concat(result, "err") + '\n';
198
153
  }
199
-
200
154
  httpArgs(indent, method) {
201
155
  var request = this.useRequest(method) ? 'request' : '';
202
156
  var result = this.argFill('', 'options');
@@ -204,27 +158,21 @@ class GoGen extends _codeGen.CodeGen {
204
158
  result = this.argFill(result, this.argGroup(indent, method.queryArgs, request));
205
159
  return result;
206
160
  }
207
-
208
161
  argGroup(_indent, args, prefix) {
209
162
  if (!args || args.length === 0) return this.nullStr;
210
163
  var hash = [];
211
-
212
164
  for (var arg of args) {
213
165
  var reserved = this.reserve(arg);
214
-
215
166
  if (prefix) {
216
167
  hash.push("\"".concat(reserved, "\": ").concat(this.accessor(arg, prefix)));
217
168
  } else {
218
169
  hash.push("\"".concat(reserved, "\": ").concat(this.toCamelCase(reserved)));
219
170
  }
220
171
  }
221
-
222
172
  return "map[string]interface{}{".concat(hash.join(this.argDelimiter), "}");
223
173
  }
224
-
225
174
  httpPath(path, prefix) {
226
175
  prefix = prefix || '';
227
-
228
176
  if (path.indexOf('{') >= 0) {
229
177
  var vars = [];
230
178
  var str = path.replace(/({.*?})/g, group => {
@@ -234,49 +182,38 @@ class GoGen extends _codeGen.CodeGen {
234
182
  var allVars = vars.join(', ');
235
183
  return allVars ? "fmt.Sprintf(\"".concat(str, "\", ").concat(allVars, ")") : "\"".concat(str, "\"");
236
184
  }
237
-
238
185
  return "\"".concat(path, "\"");
239
186
  }
240
-
241
187
  accessor(name, prefix) {
242
188
  var reserved = this.reserve(this.toCamelCase(name));
243
189
  if (!prefix) return reserved;
244
190
  return "".concat(prefix, ".").concat(this.toCamelCaseCap(name));
245
191
  }
246
-
247
192
  methodsEpilogue(_indent) {
248
193
  return '';
249
194
  }
250
-
251
195
  methodsPrologue(_indent) {
252
196
  return "\n// ".concat(this.warnEditing(), "\n\npackage ").concat(this.packageName, "\n\nimport (\n \"fmt\"\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"net/url\"\n \"time\"\n)\n\ntype LookerSDK struct {\n session *rtl.AuthSession\n}\n\nfunc NewLookerSDK(session *rtl.AuthSession) *LookerSDK {\n return &LookerSDK{\n session: session,\n }\n}\n");
253
197
  }
254
-
255
198
  modelsPrologue(_indent) {
256
199
  var goImport = "\nimport (\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"time\"\n)";
257
200
  return "\n// ".concat(this.warnEditing(), "\n\npackage ").concat(this.packageName, "\n").concat(goImport, "\n");
258
201
  }
259
-
260
202
  modelsEpilogue(_indent) {
261
203
  return '';
262
204
  }
263
-
264
205
  summary(_indent, _text) {
265
206
  return '';
266
207
  }
267
-
268
208
  typeSignature(indent, type) {
269
209
  return this.comment(indent, type.description) + '\n' + "".concat(indent, "type ").concat(type.name, " struct {\n");
270
210
  }
271
-
272
211
  beginRegion(indent, description) {
273
212
  return "".concat(indent, "// region ").concat(description);
274
213
  }
275
-
276
214
  endRegion(indent, description) {
277
215
  return "".concat(indent, "// endregion ").concat(description);
278
216
  }
279
-
280
217
  typeMap(type) {
281
218
  super.typeMap(type);
282
219
  var mt = this.nullStr;
@@ -350,17 +287,14 @@ class GoGen extends _codeGen.CodeGen {
350
287
  name: 'Void'
351
288
  }
352
289
  };
353
-
354
290
  if (type.elementType) {
355
291
  var map = this.typeMap(type.elementType);
356
-
357
292
  switch (type.className) {
358
293
  case 'ArrayType':
359
294
  return {
360
295
  default: this.nullStr,
361
296
  name: "[]".concat(map.name)
362
297
  };
363
-
364
298
  case 'HashType':
365
299
  {
366
300
  var mapName = type.elementType.name === 'string' ? 'interface{}' : map.name;
@@ -369,23 +303,19 @@ class GoGen extends _codeGen.CodeGen {
369
303
  name: 'map[string]' + "".concat(mapName)
370
304
  };
371
305
  }
372
-
373
306
  case 'DelimArrayType':
374
307
  return {
375
308
  default: this.nullStr,
376
309
  name: "rtl.Delim".concat(this.capitalize(map.name))
377
310
  };
378
-
379
311
  case 'EnumType':
380
312
  return {
381
313
  default: '',
382
314
  name: this.capitalize(type.name)
383
315
  };
384
316
  }
385
-
386
317
  throw new Error("Don't know how to handle: ".concat(JSON.stringify(type)));
387
318
  }
388
-
389
319
  if (type.name) {
390
320
  return ktTypes[type.name] || {
391
321
  default: this.nullStr,
@@ -395,11 +325,9 @@ class GoGen extends _codeGen.CodeGen {
395
325
  throw new Error('Cannot output a nameless type.');
396
326
  }
397
327
  }
398
-
399
328
  declareType(indent, type) {
400
329
  var bump = this.bumper(indent);
401
330
  var writer = new AlignColumnWriter();
402
-
403
331
  try {
404
332
  if (type instanceof _sdkModels.EnumType) {
405
333
  var props = [];
@@ -419,21 +347,16 @@ class GoGen extends _codeGen.CodeGen {
419
347
  } catch (_unused) {
420
348
  throw new Error(JSON.stringify(type, null, 2));
421
349
  }
422
-
423
350
  return this.typeSignature(indent, type) + writer.toString() + this.construct(indent, type) + "".concat(this.endTypeStr ? indent : '').concat(this.endTypeStr);
424
351
  }
425
-
426
352
  declareEnumValue(_indent, value, typename, writer) {
427
353
  var quote = typeof value === 'string' ? this.codeQuote : '';
428
354
  var name = "".concat(typename, "_").concat(this.toCamelCaseCap(value.toString()));
429
-
430
355
  if (writer) {
431
356
  writer.writeRow('const', name, typename || '', '=', "".concat(quote).concat(value).concat(quote));
432
357
  }
433
-
434
358
  return "const ".concat(name, " ").concat(typename, " = ").concat(quote).concat(value).concat(quote);
435
359
  }
436
-
437
360
  declareProperty(indent, property, writer) {
438
361
  var type = this.typeMap(property.type);
439
362
  var name = this.toCamelCaseCap(property.name);
@@ -441,27 +364,20 @@ class GoGen extends _codeGen.CodeGen {
441
364
  var doc = property.description ? "".concat(this.comment(' ', property.description)) : '';
442
365
  var optionalJson = property.required ? '' : ',omitempty';
443
366
  var optionalPointer = property.required ? '' : '*';
444
-
445
367
  if (writer) {
446
368
  writer.writeRow("".concat(indent).concat(name), "".concat(optionalPointer).concat(typeName), "`json:\"".concat(property.name).concat(optionalJson, "\"`"), doc);
447
369
  }
448
-
449
370
  return "";
450
371
  }
451
-
452
372
  capitalize(str) {
453
373
  return str.charAt(0).toUpperCase() + str.slice(1);
454
374
  }
455
-
456
375
  toCamelCaseCap(str) {
457
376
  return this.capitalize(str.replace(/([-_][a-z])/g, group => group.toUpperCase().replace('-', '').replace('_', '')));
458
377
  }
459
-
460
378
  toCamelCase(str) {
461
379
  return str.replace(/([-_][a-z])/g, group => group.toUpperCase().replace('-', '').replace('_', ''));
462
380
  }
463
-
464
381
  }
465
-
466
382
  exports.GoGen = GoGen;
467
383
  //# sourceMappingURL=go.gen.js.map
package/lib/go.gen.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/go.gen.ts"],"names":["align","str","size","num","length","repeat","AlignColumnWriter","writeRow","cols","forEach","value","index","sizes","Math","max","rows","push","toString","result","row","rowSize","col","colIndex","trimRight","GoGen","CodeGen","constructor","api","versions","Set","packageName","apiVersion","substring","indexOf","supportsMultiApi","reserve","name","keywords","has","commentHeader","indent","text","noComment","comment","description","commentStr","sdkFileName","baseFileName","fileName","sdkPath","methodSignature","method","methodHeaderDeclaration","streamer","mapped","typeMap","type","head","trim","headComment","httpMethod","endpoint","fragment","requestType","requestTypeName","bump","indentStr","params","args","allParams","p","declareParameter","join","paramDelimiter","responseIsBoth","responseIsBinary","deprecated","callback","retType","header","toCamelCaseCap","declareMethod","bumper","encodePathParams","httpCall","param","location","strBody","writeableType","pOpt","required","default","toCamelCase","encodings","pathParams","prefix","useRequest","doEncode","accessor","request","httpArgs","resultDef","resultPointer","capitalize","toUpperCase","apiPath","httpPath","argFill","bodyArg","nullStr","argGroup","queryArgs","_indent","hash","arg","reserved","argDelimiter","path","vars","replace","group","allVars","methodsEpilogue","methodsPrologue","warnEditing","modelsPrologue","goImport","modelsEpilogue","summary","_text","typeSignature","beginRegion","endRegion","mt","ktTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","elementType","map","className","mapName","Error","JSON","stringify","declareType","writer","EnumType","props","propertyValues","typeName","values","declareEnumValue","enumDelimiter","typeProperties","prop","declareProperty","construct","endTypeStr","typename","quote","codeQuote","property","doc","optionalJson","optionalPointer","charAt","slice"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { IMappedType, IVersionInfo } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\nimport type {\n ApiModel,\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { EnumType, strBody } from './sdkModels'\n\nconst align = (str: string, size: number): string => {\n const num = size - str.length + 1\n return str + ' '.repeat(num)\n}\n\n/**\n * AlignColumnWriter writes text aligned by column width, it is used to keep the go struct formatting consistent.\n */\nclass AlignColumnWriter {\n private rows: Array<string[]> = []\n private sizes: number[] = []\n\n writeRow(...cols: string[]) {\n cols.forEach((value, index) => {\n this.sizes[index] = Math.max(this.sizes[index] || 0, value.length)\n })\n this.rows.push(cols)\n }\n\n toString(): string {\n let result = ''\n this.rows.forEach((row) => {\n const rowSize = row.length\n row.forEach((col, colIndex) => {\n result +=\n rowSize - 1 === colIndex ? col : align(col, this.sizes[colIndex])\n })\n result = result.trimRight() + '\\n'\n })\n return result\n }\n}\n\n/**\n * Go generator\n */\nexport class GoGen extends CodeGen {\n codePath = './go'\n fileExtension = '.go'\n nullStr = 'nil'\n packagePath = ''\n commentStr = '// '\n\n enumDelimiter = '\\n'\n indentStr = ' '\n endTypeStr = '}'\n codeQuote = `\"`\n\n useNamedParameters = false\n needsRequestTypes = true\n\n keywords = new Set<string>([\n 'break',\n 'default',\n 'func',\n 'interface',\n 'select',\n 'case',\n 'defer',\n 'go',\n 'map',\n 'struct',\n 'chan',\n 'else',\n 'goto',\n 'package',\n 'switch',\n 'const',\n 'fallthrough',\n 'if',\n 'range',\n 'type',\n 'continue',\n 'for',\n 'import',\n 'return',\n 'var',\n ])\n\n constructor(public api: ApiModel, public versions?: IVersionInfo) {\n super(api, versions)\n this.packageName = `v${this.apiVersion.substring(\n 0,\n this.apiVersion.indexOf('.')\n )}`\n this.apiVersion = this.packageName\n }\n\n supportsMultiApi(): boolean {\n return false\n }\n\n reserve(name: string) {\n if (this.keywords.has(name)) {\n return `${name}0`\n }\n return name\n }\n\n commentHeader(indent: string, text: string | undefined) {\n if (this.noComment) return ''\n return text\n ? `${indent}/*\\n\\n${commentBlock(text, indent, '')}\\n${indent}*/\\n`\n : ''\n }\n\n comment(indent: string, description: string) {\n if (this.noComment) return ''\n return commentBlock(description, indent, this.commentStr)\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.sdkPath}/${this.packageName}/${baseFileName}`)\n }\n\n methodSignature(indent: string, method: IMethod): string {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const mapped = this.typeMap(method.type)\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${mapped.name}`\n let fragment = ''\n const requestType = this.requestTypeName(method)\n const bump = indent + this.indentStr\n\n if (requestType) {\n fragment = `request ${requestType}`\n } else {\n const params: string[] = []\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.\\n`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.\\n`\n }\n if (method.deprecated) {\n headComment += '\\n\\nDeprecated: This method is deprecated.\\n'\n }\n const callback = `callback: (readable: Readable) => Promise<${mapped.name}>,`\n const retType = mapped.name === 'Void' ? '' : `${mapped.name}, `\n const header =\n this.comment('', headComment) +\n '\\n' +\n `func (l *LookerSDK) ${this.toCamelCaseCap(method.name)}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n\n return (\n header +\n fragment +\n `${\n fragment ? ',' : ''\n }\\n${bump}options *rtl.ApiSettings) (${retType}error) {\\n`\n )\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method) +\n `\\n}`\n )\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n if (param.location === strBody) {\n mapped.name = `${mapped.name}`\n }\n if (!param.required) {\n pOpt = mapped.default ? '' : '*'\n }\n return (\n // so it turns out Go doesn't like parameter comments. Go figure https://stackoverflow.com/a/67878816\n // this.commentHeader(indent, this.paramComment(param, mapped)) +\n `${indent}${this.toCamelCase(this.reserve(param.name))} ${pOpt}${\n mapped.name\n }`\n )\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n if (method.pathParams.length > 0) {\n const prefix = this.useRequest(method) ? 'request' : ''\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n const name = this.accessor(param.name, prefix)\n\n encodings += `${indent}${name} = url.PathEscape(${name})\\n`\n }\n }\n }\n return encodings\n }\n\n httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request' : ''\n const mapped = this.typeMap(method.type)\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n // const errors = this.errorResponses(indent, method)\n const resultDef =\n mapped.name === 'Void' ? '' : `${indent}var result ${mapped.name}\\n`\n const resultPointer = mapped.name === 'Void' ? 'nil' : `&result`\n const result = mapped.name === 'Void' ? '' : 'result, '\n return (\n `` +\n resultDef +\n `${indent}err := l.session.Do(${resultPointer}, \"${this.capitalize(\n method.httpMethod.toUpperCase()\n )}\", \"${this.apiPath}\", ${this.httpPath(method.endpoint, request)}` +\n `${args ? ', ' + args : ''})` +\n '\\n' +\n `${indent}return ${result}err` +\n '\\n'\n )\n }\n\n // build the http argument list from back to front, so trailing undefined arguments\n // can be omitted. Path arguments are resolved as part of the path parameter to general\n // purpose API method call\n // e.g.\n // {queryArgs...}, bodyArg, {headerArgs...}, {cookieArgs...}\n // {queryArgs...}, null, null, {cookieArgs...}\n // null, bodyArg\n // {queryArgs...}\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg ? this.accessor(method.bodyArg, request) : this.nullStr\n )\n result = this.argFill(\n result,\n this.argGroup(indent, method.queryArgs, request)\n )\n return result\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n const reserved = this.reserve(arg)\n if (prefix) {\n hash.push(`\"${reserved}\": ${this.accessor(arg, prefix)}`)\n } else {\n hash.push(`\"${reserved}\": ${this.toCamelCase(reserved)}`)\n }\n }\n return `map[string]interface{}{${hash.join(this.argDelimiter)}}`\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n const vars: Array<string> = []\n const str = path.replace(/({.*?})/g, (group) => {\n vars.push(\n this.accessor(group.replace('{', '').replace('}', ''), prefix)\n )\n return '%v'\n })\n const allVars = vars.join(', ')\n return allVars ? `fmt.Sprintf(\"${str}\", ${allVars})` : `\"${str}\"`\n }\n return `\"${path}\"`\n }\n\n /**\n * Determine the type of accessor needed for the symbol name\n *\n * If the prefix is defined:\n * If the name is special, use array accessor\n * If the name is simple, use dotted notation\n *\n * With no prefix, return the \"reserved\" version of the name, which may be the same as name\n *\n * @param name variable to access\n * @param prefix optional prefix for accessor\n * @returns one of 4 possible accessor patterns\n */\n accessor(name: string, prefix?: string) {\n const reserved = this.reserve(this.toCamelCase(name))\n if (!prefix) return reserved\n return `${prefix}.${this.toCamelCaseCap(name)}`\n // if (reserved === name) return `${prefix}.${name}`\n // return `${prefix}[${reserved}]`\n }\n\n methodsEpilogue(_indent: string): string {\n return ''\n }\n\n methodsPrologue(_indent: string): string {\n return `\n// ${this.warnEditing()}\n\npackage ${this.packageName}\n\nimport (\n \"fmt\"\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"net/url\"\n \"time\"\n)\n\ntype LookerSDK struct {\n session *rtl.AuthSession\n}\n\nfunc NewLookerSDK(session *rtl.AuthSession) *LookerSDK {\n return &LookerSDK{\n session: session,\n }\n}\n`\n }\n\n modelsPrologue(_indent: string) {\n const goImport = `\nimport (\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"time\"\n)`\n\n return `\n// ${this.warnEditing()}\n\npackage ${this.packageName}\n${goImport}\n`\n }\n\n modelsEpilogue(_indent: string): string {\n return ''\n }\n\n summary(_indent: string, _text: string | undefined): string {\n return ''\n }\n\n typeSignature(indent: string, type: IType): string {\n return (\n this.comment(indent, type.description) +\n '\\n' +\n `${indent}type ${type.name} struct {\\n`\n )\n }\n\n beginRegion(indent: string, description: string): string {\n return `${indent}// region ${description}`\n }\n\n endRegion(indent: string, description: string): string {\n return `${indent}// endregion ${description}`\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n const mt = this.nullStr\n const ktTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'interface{}' },\n boolean: { default: mt, name: 'bool' },\n byte: { default: mt, name: 'byte' },\n date: { default: mt, name: 'time.Time' },\n datetime: { default: mt, name: 'time.Time' },\n double: { default: mt, name: 'float64' },\n float: { default: mt, name: 'float32' },\n int32: { default: mt, name: 'int32' },\n int64: { default: mt, name: 'int64' },\n integer: { default: mt, name: 'int' },\n number: { default: mt, name: 'float64' },\n object: { default: mt, name: 'interface{}' },\n password: { default: mt, name: 'string' },\n string: { default: mt, name: 'string' },\n uri: { default: mt, name: 'url.URL' },\n url: { default: mt, name: 'url.URL' },\n void: { default: mt, name: 'Void' }, // todo: check how to handle Void\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return { default: this.nullStr, name: `[]${map.name}` }\n case 'HashType': {\n const mapName =\n type.elementType.name === 'string' ? 'interface{}' : map.name // TODO fix bad API spec, like MergeQuery vis_config\n // TODO figure out this bizarre string template error either in IntelliJ or TypeScript\n // return {name: `Map<String,${map.name}>`, default: '{}'}\n return {\n default: this.nullStr,\n name: 'map[string]' + `${mapName}`,\n }\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `rtl.Delim${this.capitalize(map.name)}`,\n }\n case 'EnumType':\n return { default: '', name: this.capitalize(type.name) }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n return (\n ktTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n )\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n\n declareType(indent: string, type: IType) {\n const bump = this.bumper(indent)\n\n const writer = new AlignColumnWriter()\n\n try {\n if (type instanceof EnumType) {\n // enum has special handling\n const props: string[] = []\n let propertyValues = ''\n const num = type as EnumType\n const typeName = this.capitalize(type.name)\n props.push(`type ${typeName} string`) // todo: handle other types than string\n num.values.forEach((value) => {\n // props.push(this.declareEnumValue(bump, value, typeName))\n this.declareEnumValue(bump, value, typeName, writer)\n })\n props.push(writer.toString())\n propertyValues = props.join(this.enumDelimiter)\n\n return propertyValues\n } else {\n this.typeProperties(type).forEach((prop) =>\n // props.push(this.declareProperty(bump, prop))\n this.declareProperty(bump, prop, writer)\n )\n // propertyValues = props.join(this.propDelimiter)\n }\n } catch {\n throw new Error(JSON.stringify(type, null, 2))\n }\n return (\n this.typeSignature(indent, type) +\n writer.toString() +\n this.construct(indent, type) +\n `${this.endTypeStr ? indent : ''}${this.endTypeStr}`\n )\n }\n\n declareEnumValue(\n _indent: string,\n value: EnumValueType,\n typename?: string,\n writer?: AlignColumnWriter\n ) {\n const quote = typeof value === 'string' ? this.codeQuote : ''\n const name = `${typename}_${this.toCamelCaseCap(value.toString())}`\n if (writer) {\n writer.writeRow(\n 'const',\n name,\n typename || '',\n '=',\n `${quote}${value}${quote}`\n )\n }\n return `const ${name} ${typename} = ${quote}${value}${quote}`\n }\n\n declareProperty(\n indent: string,\n property: IProperty,\n writer?: AlignColumnWriter\n ): string {\n const type = this.typeMap(property.type)\n const name = this.toCamelCaseCap(property.name)\n const typeName = type.name\n\n const doc = property.description\n ? `${this.comment(' ', property.description)}`\n : ''\n\n const optionalJson = property.required ? '' : ',omitempty'\n const optionalPointer = property.required ? '' : '*'\n\n if (writer) {\n writer.writeRow(\n `${indent}${name}`,\n `${optionalPointer}${typeName}`,\n `\\`json:\"${property.name}${optionalJson}\"\\``,\n doc\n )\n }\n return ``\n }\n\n capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n }\n\n toCamelCaseCap(str: string): string {\n return this.capitalize(\n str.replace(/([-_][a-z])/g, (group) =>\n group.toUpperCase().replace('-', '').replace('_', '')\n )\n )\n }\n\n toCamelCase(str: string): string {\n return str.replace(/([-_][a-z])/g, (group) =>\n group.toUpperCase().replace('-', '').replace('_', '')\n )\n }\n}\n"],"file":"go.gen.js"}
1
+ {"version":3,"file":"go.gen.js","names":["_codeGen","require","_sdkModels","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","align","str","size","num","length","repeat","AlignColumnWriter","constructor","writeRow","_len","arguments","cols","Array","_key","forEach","index","sizes","Math","max","rows","push","toString","result","row","rowSize","col","colIndex","trimRight","GoGen","CodeGen","api","versions","Set","packageName","concat","apiVersion","substring","indexOf","supportsMultiApi","reserve","name","keywords","has","commentHeader","indent","text","noComment","commentBlock","comment","description","commentStr","sdkFileName","baseFileName","fileName","sdkPath","methodSignature","method","methodHeaderDeclaration","_method$description","streamer","mapped","typeMap","type","head","trim","headComment","httpMethod","endpoint","fragment","requestType","requestTypeName","bump","indentStr","params","args","allParams","p","declareParameter","join","paramDelimiter","responseIsBoth","responseIsBinary","deprecated","callback","retType","header","toCamelCaseCap","declareMethod","bumper","encodePathParams","httpCall","param","location","strBody","writeableType","pOpt","required","default","toCamelCase","encodings","pathParams","prefix","useRequest","doEncode","accessor","request","httpArgs","resultDef","resultPointer","capitalize","toUpperCase","apiPath","httpPath","argFill","bodyArg","nullStr","argGroup","queryArgs","_indent","hash","reserved","argDelimiter","path","vars","replace","group","allVars","methodsEpilogue","methodsPrologue","warnEditing","modelsPrologue","goImport","modelsEpilogue","summary","_text","typeSignature","beginRegion","endRegion","mt","ktTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","elementType","map","className","mapName","Error","JSON","stringify","declareType","writer","EnumType","props","propertyValues","typeName","values","declareEnumValue","enumDelimiter","typeProperties","prop","declareProperty","_unused","construct","endTypeStr","typename","quote","codeQuote","property","doc","optionalJson","optionalPointer","charAt","slice","exports"],"sources":["../src/go.gen.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { IMappedType, IVersionInfo } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\nimport type {\n ApiModel,\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { EnumType, strBody } from './sdkModels'\n\nconst align = (str: string, size: number): string => {\n const num = size - str.length + 1\n return str + ' '.repeat(num)\n}\n\n/**\n * AlignColumnWriter writes text aligned by column width, it is used to keep the go struct formatting consistent.\n */\nclass AlignColumnWriter {\n private rows: Array<string[]> = []\n private sizes: number[] = []\n\n writeRow(...cols: string[]) {\n cols.forEach((value, index) => {\n this.sizes[index] = Math.max(this.sizes[index] || 0, value.length)\n })\n this.rows.push(cols)\n }\n\n toString(): string {\n let result = ''\n this.rows.forEach((row) => {\n const rowSize = row.length\n row.forEach((col, colIndex) => {\n result +=\n rowSize - 1 === colIndex ? col : align(col, this.sizes[colIndex])\n })\n result = result.trimRight() + '\\n'\n })\n return result\n }\n}\n\n/**\n * Go generator\n */\nexport class GoGen extends CodeGen {\n codePath = './go'\n fileExtension = '.go'\n nullStr = 'nil'\n packagePath = ''\n commentStr = '// '\n\n enumDelimiter = '\\n'\n indentStr = ' '\n endTypeStr = '}'\n codeQuote = `\"`\n\n useNamedParameters = false\n needsRequestTypes = true\n\n keywords = new Set<string>([\n 'break',\n 'default',\n 'func',\n 'interface',\n 'select',\n 'case',\n 'defer',\n 'go',\n 'map',\n 'struct',\n 'chan',\n 'else',\n 'goto',\n 'package',\n 'switch',\n 'const',\n 'fallthrough',\n 'if',\n 'range',\n 'type',\n 'continue',\n 'for',\n 'import',\n 'return',\n 'var',\n ])\n\n constructor(public api: ApiModel, public versions?: IVersionInfo) {\n super(api, versions)\n this.packageName = `v${this.apiVersion.substring(\n 0,\n this.apiVersion.indexOf('.')\n )}`\n this.apiVersion = this.packageName\n }\n\n supportsMultiApi(): boolean {\n return false\n }\n\n reserve(name: string) {\n if (this.keywords.has(name)) {\n return `${name}0`\n }\n return name\n }\n\n commentHeader(indent: string, text: string | undefined) {\n if (this.noComment) return ''\n return text\n ? `${indent}/*\\n\\n${commentBlock(text, indent, '')}\\n${indent}*/\\n`\n : ''\n }\n\n comment(indent: string, description: string) {\n if (this.noComment) return ''\n return commentBlock(description, indent, this.commentStr)\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.sdkPath}/${this.packageName}/${baseFileName}`)\n }\n\n methodSignature(indent: string, method: IMethod): string {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const mapped = this.typeMap(method.type)\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${mapped.name}`\n let fragment = ''\n const requestType = this.requestTypeName(method)\n const bump = indent + this.indentStr\n\n if (requestType) {\n fragment = `request ${requestType}`\n } else {\n const params: string[] = []\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.\\n`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.\\n`\n }\n if (method.deprecated) {\n headComment += '\\n\\nDeprecated: This method is deprecated.\\n'\n }\n const callback = `callback: (readable: Readable) => Promise<${mapped.name}>,`\n const retType = mapped.name === 'Void' ? '' : `${mapped.name}, `\n const header =\n this.comment('', headComment) +\n '\\n' +\n `func (l *LookerSDK) ${this.toCamelCaseCap(method.name)}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n\n return (\n header +\n fragment +\n `${\n fragment ? ',' : ''\n }\\n${bump}options *rtl.ApiSettings) (${retType}error) {\\n`\n )\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method) +\n `\\n}`\n )\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n if (param.location === strBody) {\n mapped.name = `${mapped.name}`\n }\n if (!param.required) {\n pOpt = mapped.default ? '' : '*'\n }\n return (\n // so it turns out Go doesn't like parameter comments. Go figure https://stackoverflow.com/a/67878816\n // this.commentHeader(indent, this.paramComment(param, mapped)) +\n `${indent}${this.toCamelCase(this.reserve(param.name))} ${pOpt}${\n mapped.name\n }`\n )\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n if (method.pathParams.length > 0) {\n const prefix = this.useRequest(method) ? 'request' : ''\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n const name = this.accessor(param.name, prefix)\n\n encodings += `${indent}${name} = url.PathEscape(${name})\\n`\n }\n }\n }\n return encodings\n }\n\n httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request' : ''\n const mapped = this.typeMap(method.type)\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n // const errors = this.errorResponses(indent, method)\n const resultDef =\n mapped.name === 'Void' ? '' : `${indent}var result ${mapped.name}\\n`\n const resultPointer = mapped.name === 'Void' ? 'nil' : `&result`\n const result = mapped.name === 'Void' ? '' : 'result, '\n return (\n `` +\n resultDef +\n `${indent}err := l.session.Do(${resultPointer}, \"${this.capitalize(\n method.httpMethod.toUpperCase()\n )}\", \"${this.apiPath}\", ${this.httpPath(method.endpoint, request)}` +\n `${args ? ', ' + args : ''})` +\n '\\n' +\n `${indent}return ${result}err` +\n '\\n'\n )\n }\n\n // build the http argument list from back to front, so trailing undefined arguments\n // can be omitted. Path arguments are resolved as part of the path parameter to general\n // purpose API method call\n // e.g.\n // {queryArgs...}, bodyArg, {headerArgs...}, {cookieArgs...}\n // {queryArgs...}, null, null, {cookieArgs...}\n // null, bodyArg\n // {queryArgs...}\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg ? this.accessor(method.bodyArg, request) : this.nullStr\n )\n result = this.argFill(\n result,\n this.argGroup(indent, method.queryArgs, request)\n )\n return result\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n const reserved = this.reserve(arg)\n if (prefix) {\n hash.push(`\"${reserved}\": ${this.accessor(arg, prefix)}`)\n } else {\n hash.push(`\"${reserved}\": ${this.toCamelCase(reserved)}`)\n }\n }\n return `map[string]interface{}{${hash.join(this.argDelimiter)}}`\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n const vars: Array<string> = []\n const str = path.replace(/({.*?})/g, (group) => {\n vars.push(\n this.accessor(group.replace('{', '').replace('}', ''), prefix)\n )\n return '%v'\n })\n const allVars = vars.join(', ')\n return allVars ? `fmt.Sprintf(\"${str}\", ${allVars})` : `\"${str}\"`\n }\n return `\"${path}\"`\n }\n\n /**\n * Determine the type of accessor needed for the symbol name\n *\n * If the prefix is defined:\n * If the name is special, use array accessor\n * If the name is simple, use dotted notation\n *\n * With no prefix, return the \"reserved\" version of the name, which may be the same as name\n *\n * @param name variable to access\n * @param prefix optional prefix for accessor\n * @returns one of 4 possible accessor patterns\n */\n accessor(name: string, prefix?: string) {\n const reserved = this.reserve(this.toCamelCase(name))\n if (!prefix) return reserved\n return `${prefix}.${this.toCamelCaseCap(name)}`\n // if (reserved === name) return `${prefix}.${name}`\n // return `${prefix}[${reserved}]`\n }\n\n methodsEpilogue(_indent: string): string {\n return ''\n }\n\n methodsPrologue(_indent: string): string {\n return `\n// ${this.warnEditing()}\n\npackage ${this.packageName}\n\nimport (\n \"fmt\"\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"net/url\"\n \"time\"\n)\n\ntype LookerSDK struct {\n session *rtl.AuthSession\n}\n\nfunc NewLookerSDK(session *rtl.AuthSession) *LookerSDK {\n return &LookerSDK{\n session: session,\n }\n}\n`\n }\n\n modelsPrologue(_indent: string) {\n const goImport = `\nimport (\n \"github.com/looker-open-source/sdk-codegen/go/rtl\"\n \"time\"\n)`\n\n return `\n// ${this.warnEditing()}\n\npackage ${this.packageName}\n${goImport}\n`\n }\n\n modelsEpilogue(_indent: string): string {\n return ''\n }\n\n summary(_indent: string, _text: string | undefined): string {\n return ''\n }\n\n typeSignature(indent: string, type: IType): string {\n return (\n this.comment(indent, type.description) +\n '\\n' +\n `${indent}type ${type.name} struct {\\n`\n )\n }\n\n beginRegion(indent: string, description: string): string {\n return `${indent}// region ${description}`\n }\n\n endRegion(indent: string, description: string): string {\n return `${indent}// endregion ${description}`\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n const mt = this.nullStr\n const ktTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'interface{}' },\n boolean: { default: mt, name: 'bool' },\n byte: { default: mt, name: 'byte' },\n date: { default: mt, name: 'time.Time' },\n datetime: { default: mt, name: 'time.Time' },\n double: { default: mt, name: 'float64' },\n float: { default: mt, name: 'float32' },\n int32: { default: mt, name: 'int32' },\n int64: { default: mt, name: 'int64' },\n integer: { default: mt, name: 'int' },\n number: { default: mt, name: 'float64' },\n object: { default: mt, name: 'interface{}' },\n password: { default: mt, name: 'string' },\n string: { default: mt, name: 'string' },\n uri: { default: mt, name: 'url.URL' },\n url: { default: mt, name: 'url.URL' },\n void: { default: mt, name: 'Void' }, // todo: check how to handle Void\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return { default: this.nullStr, name: `[]${map.name}` }\n case 'HashType': {\n const mapName =\n type.elementType.name === 'string' ? 'interface{}' : map.name // TODO fix bad API spec, like MergeQuery vis_config\n // TODO figure out this bizarre string template error either in IntelliJ or TypeScript\n // return {name: `Map<String,${map.name}>`, default: '{}'}\n return {\n default: this.nullStr,\n name: 'map[string]' + `${mapName}`,\n }\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `rtl.Delim${this.capitalize(map.name)}`,\n }\n case 'EnumType':\n return { default: '', name: this.capitalize(type.name) }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n return (\n ktTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n )\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n\n declareType(indent: string, type: IType) {\n const bump = this.bumper(indent)\n\n const writer = new AlignColumnWriter()\n\n try {\n if (type instanceof EnumType) {\n // enum has special handling\n const props: string[] = []\n let propertyValues = ''\n const num = type as EnumType\n const typeName = this.capitalize(type.name)\n props.push(`type ${typeName} string`) // todo: handle other types than string\n num.values.forEach((value) => {\n // props.push(this.declareEnumValue(bump, value, typeName))\n this.declareEnumValue(bump, value, typeName, writer)\n })\n props.push(writer.toString())\n propertyValues = props.join(this.enumDelimiter)\n\n return propertyValues\n } else {\n this.typeProperties(type).forEach((prop) =>\n // props.push(this.declareProperty(bump, prop))\n this.declareProperty(bump, prop, writer)\n )\n // propertyValues = props.join(this.propDelimiter)\n }\n } catch {\n throw new Error(JSON.stringify(type, null, 2))\n }\n return (\n this.typeSignature(indent, type) +\n writer.toString() +\n this.construct(indent, type) +\n `${this.endTypeStr ? indent : ''}${this.endTypeStr}`\n )\n }\n\n declareEnumValue(\n _indent: string,\n value: EnumValueType,\n typename?: string,\n writer?: AlignColumnWriter\n ) {\n const quote = typeof value === 'string' ? this.codeQuote : ''\n const name = `${typename}_${this.toCamelCaseCap(value.toString())}`\n if (writer) {\n writer.writeRow(\n 'const',\n name,\n typename || '',\n '=',\n `${quote}${value}${quote}`\n )\n }\n return `const ${name} ${typename} = ${quote}${value}${quote}`\n }\n\n declareProperty(\n indent: string,\n property: IProperty,\n writer?: AlignColumnWriter\n ): string {\n const type = this.typeMap(property.type)\n const name = this.toCamelCaseCap(property.name)\n const typeName = type.name\n\n const doc = property.description\n ? `${this.comment(' ', property.description)}`\n : ''\n\n const optionalJson = property.required ? '' : ',omitempty'\n const optionalPointer = property.required ? '' : '*'\n\n if (writer) {\n writer.writeRow(\n `${indent}${name}`,\n `${optionalPointer}${typeName}`,\n `\\`json:\"${property.name}${optionalJson}\"\\``,\n doc\n )\n }\n return ``\n }\n\n capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1)\n }\n\n toCamelCaseCap(str: string): string {\n return this.capitalize(\n str.replace(/([-_][a-z])/g, (group) =>\n group.toUpperCase().replace('-', '').replace('_', '')\n )\n )\n }\n\n toCamelCase(str: string): string {\n return str.replace(/([-_][a-z])/g, (group) =>\n group.toUpperCase().replace('-', '').replace('_', '')\n )\n }\n}\n"],"mappings":";;;;;;AA2BA,IAAAA,QAAA,GAAAC,OAAA;AAUA,IAAAC,UAAA,GAAAD,OAAA;AAA+C,SAAAE,gBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAD,GAAA,IAAAI,MAAA,CAAAC,cAAA,CAAAL,GAAA,EAAAC,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAR,GAAA,CAAAC,GAAA,IAAAC,KAAA,WAAAF,GAAA;AAAA,SAAAG,eAAAM,GAAA,QAAAR,GAAA,GAAAS,YAAA,CAAAD,GAAA,2BAAAR,GAAA,gBAAAA,GAAA,GAAAU,MAAA,CAAAV,GAAA;AAAA,SAAAS,aAAAE,KAAA,EAAAC,IAAA,eAAAD,KAAA,iBAAAA,KAAA,kBAAAA,KAAA,MAAAE,IAAA,GAAAF,KAAA,CAAAG,MAAA,CAAAC,WAAA,OAAAF,IAAA,KAAAG,SAAA,QAAAC,GAAA,GAAAJ,IAAA,CAAAK,IAAA,CAAAP,KAAA,EAAAC,IAAA,2BAAAK,GAAA,sBAAAA,GAAA,YAAAE,SAAA,4DAAAP,IAAA,gBAAAF,MAAA,GAAAU,MAAA,EAAAT,KAAA;AAE/C,IAAMU,KAAK,GAAGA,CAACC,GAAW,EAAEC,IAAY,KAAa;EACnD,IAAMC,GAAG,GAAGD,IAAI,GAAGD,GAAG,CAACG,MAAM,GAAG,CAAC;EACjC,OAAOH,GAAG,GAAG,GAAG,CAACI,MAAM,CAACF,GAAG,CAAC;AAC9B,CAAC;AAKD,MAAMG,iBAAiB,CAAC;EAAAC,YAAA;IAAA9B,eAAA,eACU,EAAE;IAAAA,eAAA,gBACR,EAAE;EAAA;EAE5B+B,QAAQA,CAAA,EAAoB;IAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAN,MAAA,EAAhBO,IAAI,OAAAC,KAAA,CAAAH,IAAA,GAAAI,IAAA,MAAAA,IAAA,GAAAJ,IAAA,EAAAI,IAAA;MAAJF,IAAI,CAAAE,IAAA,IAAAH,SAAA,CAAAG,IAAA;IAAA;IACdF,IAAI,CAACG,OAAO,CAAC,CAAClC,KAAK,EAAEmC,KAAK,KAAK;MAC7B,IAAI,CAACC,KAAK,CAACD,KAAK,CAAC,GAAGE,IAAI,CAACC,GAAG,CAAC,IAAI,CAACF,KAAK,CAACD,KAAK,CAAC,IAAI,CAAC,EAAEnC,KAAK,CAACwB,MAAM,CAAC;IACpE,CAAC,CAAC;IACF,IAAI,CAACe,IAAI,CAACC,IAAI,CAACT,IAAI,CAAC;EACtB;EAEAU,QAAQA,CAAA,EAAW;IACjB,IAAIC,MAAM,GAAG,EAAE;IACf,IAAI,CAACH,IAAI,CAACL,OAAO,CAAES,GAAG,IAAK;MACzB,IAAMC,OAAO,GAAGD,GAAG,CAACnB,MAAM;MAC1BmB,GAAG,CAACT,OAAO,CAAC,CAACW,GAAG,EAAEC,QAAQ,KAAK;QAC7BJ,MAAM,IACJE,OAAO,GAAG,CAAC,KAAKE,QAAQ,GAAGD,GAAG,GAAGzB,KAAK,CAACyB,GAAG,EAAE,IAAI,CAACT,KAAK,CAACU,QAAQ,CAAC,CAAC;MACrE,CAAC,CAAC;MACFJ,MAAM,GAAGA,MAAM,CAACK,SAAS,EAAE,GAAG,IAAI;IACpC,CAAC,CAAC;IACF,OAAOL,MAAM;EACf;AACF;AAKO,MAAMM,KAAK,SAASC,gBAAO,CAAC;EA2CjCtB,WAAWA,CAAQuB,GAAa,EAASC,QAAuB,EAAE;IAChE,KAAK,CAACD,GAAG,EAAEC,QAAQ,CAAC;IAAA,KADHD,GAAa,GAAbA,GAAa;IAAA,KAASC,QAAuB,GAAvBA,QAAuB;IAAAtD,eAAA,mBA1CrD,MAAM;IAAAA,eAAA,wBACD,KAAK;IAAAA,eAAA,kBACX,KAAK;IAAAA,eAAA,sBACD,EAAE;IAAAA,eAAA,qBACH,KAAK;IAAAA,eAAA,wBAEF,IAAI;IAAAA,eAAA,oBACR,IAAI;IAAAA,eAAA,qBACH,GAAG;IAAAA,eAAA;IAAAA,eAAA,6BAGK,KAAK;IAAAA,eAAA,4BACN,IAAI;IAAAA,eAAA,mBAEb,IAAIuD,GAAG,CAAS,CACzB,OAAO,EACP,SAAS,EACT,MAAM,EACN,WAAW,EACX,QAAQ,EACR,MAAM,EACN,OAAO,EACP,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,EACN,SAAS,EACT,QAAQ,EACR,OAAO,EACP,aAAa,EACb,IAAI,EACJ,OAAO,EACP,MAAM,EACN,UAAU,EACV,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,CACN,CAAC;IAIA,IAAI,CAACC,WAAW,OAAAC,MAAA,CAAO,IAAI,CAACC,UAAU,CAACC,SAAS,CAC9C,CAAC,EACD,IAAI,CAACD,UAAU,CAACE,OAAO,CAAC,GAAG,CAAC,CAC7B,CAAE;IACH,IAAI,CAACF,UAAU,GAAG,IAAI,CAACF,WAAW;EACpC;EAEAK,gBAAgBA,CAAA,EAAY;IAC1B,OAAO,KAAK;EACd;EAEAC,OAAOA,CAACC,IAAY,EAAE;IACpB,IAAI,IAAI,CAACC,QAAQ,CAACC,GAAG,CAACF,IAAI,CAAC,EAAE;MAC3B,UAAAN,MAAA,CAAUM,IAAI;IAChB;IACA,OAAOA,IAAI;EACb;EAEAG,aAAaA,CAACC,MAAc,EAAEC,IAAwB,EAAE;IACtD,IAAI,IAAI,CAACC,SAAS,EAAE,OAAO,EAAE;IAC7B,OAAOD,IAAI,MAAAX,MAAA,CACJU,MAAM,YAAAV,MAAA,CAAS,IAAAa,qBAAY,EAACF,IAAI,EAAED,MAAM,EAAE,EAAE,CAAC,QAAAV,MAAA,CAAKU,MAAM,YAC3D,EAAE;EACR;EAEAI,OAAOA,CAACJ,MAAc,EAAEK,WAAmB,EAAE;IAC3C,IAAI,IAAI,CAACH,SAAS,EAAE,OAAO,EAAE;IAC7B,OAAO,IAAAC,qBAAY,EAACE,WAAW,EAAEL,MAAM,EAAE,IAAI,CAACM,UAAU,CAAC;EAC3D;EAEAC,WAAWA,CAACC,YAAoB,EAAE;IAChC,OAAO,IAAI,CAACC,QAAQ,IAAAnB,MAAA,CAAI,IAAI,CAACoB,OAAO,OAAApB,MAAA,CAAI,IAAI,CAACD,WAAW,OAAAC,MAAA,CAAIkB,YAAY,EAAG;EAC7E;EAEAG,eAAeA,CAACX,MAAc,EAAEY,MAAe,EAAU;IACvD,OAAO,IAAI,CAACC,uBAAuB,CAACb,MAAM,EAAEY,MAAM,EAAE,KAAK,CAAC;EAC5D;EAEAC,uBAAuBA,CAACb,MAAc,EAAEY,MAAe,EAAoB;IAAA,IAAAE,mBAAA;IAAA,IAAlBC,QAAQ,GAAAjD,SAAA,CAAAN,MAAA,QAAAM,SAAA,QAAAf,SAAA,GAAAe,SAAA,MAAG,KAAK;IACvE,IAAMkD,MAAM,GAAG,IAAI,CAACC,OAAO,CAACL,MAAM,CAACM,IAAI,CAAC;IACxC,IAAMC,IAAI,IAAAL,mBAAA,GAAGF,MAAM,CAACP,WAAW,cAAAS,mBAAA,uBAAlBA,mBAAA,CAAoBM,IAAI,EAAE;IACvC,IAAIC,WAAW,GACb,CAACF,IAAI,MAAA7B,MAAA,CAAM6B,IAAI,YAAS,EAAE,OAAA7B,MAAA,CACvBsB,MAAM,CAACU,UAAU,OAAAhC,MAAA,CAAIsB,MAAM,CAACW,QAAQ,UAAAjC,MAAA,CAAO0B,MAAM,CAACpB,IAAI,CAAE;IAC7D,IAAI4B,QAAQ,GAAG,EAAE;IACjB,IAAMC,WAAW,GAAG,IAAI,CAACC,eAAe,CAACd,MAAM,CAAC;IAChD,IAAMe,IAAI,GAAG3B,MAAM,GAAG,IAAI,CAAC4B,SAAS;IAEpC,IAAIH,WAAW,EAAE;MACfD,QAAQ,cAAAlC,MAAA,CAAcmC,WAAW,CAAE;IACrC,CAAC,MAAM;MACL,IAAMI,MAAgB,GAAG,EAAE;MAC3B,IAAMC,IAAI,GAAGlB,MAAM,CAACmB,SAAS;MAC7B,IAAID,IAAI,IAAIA,IAAI,CAACtE,MAAM,GAAG,CAAC,EACzBsE,IAAI,CAAC5D,OAAO,CAAE8D,CAAC,IAAKH,MAAM,CAACrD,IAAI,CAAC,IAAI,CAACyD,gBAAgB,CAACN,IAAI,EAAEf,MAAM,EAAEoB,CAAC,CAAC,CAAC,CAAC;MAC1ER,QAAQ,GACNK,MAAM,CAACrE,MAAM,GAAG,CAAC,QAAA8B,MAAA,CAAQuC,MAAM,CAACK,IAAI,CAAC,IAAI,CAACC,cAAc,CAAC,IAAK,EAAE;IACpE;IACA,IAAIvB,MAAM,CAACwB,cAAc,EAAE,EAAE;MAC3Bf,WAAW,oEAAoE;IACjF,CAAC,MAAM,IAAIT,MAAM,CAACyB,gBAAgB,EAAE,EAAE;MACpChB,WAAW,gEAAgE;IAC7E;IACA,IAAIT,MAAM,CAAC0B,UAAU,EAAE;MACrBjB,WAAW,IAAI,8CAA8C;IAC/D;IACA,IAAMkB,QAAQ,gDAAAjD,MAAA,CAAgD0B,MAAM,CAACpB,IAAI,OAAI;IAC7E,IAAM4C,OAAO,GAAGxB,MAAM,CAACpB,IAAI,KAAK,MAAM,GAAG,EAAE,MAAAN,MAAA,CAAM0B,MAAM,CAACpB,IAAI,OAAI;IAChE,IAAM6C,MAAM,GACV,IAAI,CAACrC,OAAO,CAAC,EAAE,EAAEiB,WAAW,CAAC,GAC7B,IAAI,0BAAA/B,MAAA,CACmB,IAAI,CAACoD,cAAc,CAAC9B,MAAM,CAAChB,IAAI,CAAC,MAAG,IACzDmB,QAAQ,QAAAzB,MAAA,CAAQqC,IAAI,EAAArC,MAAA,CAAGiD,QAAQ,IAAK,EAAE,CAAC;IAE1C,OACEE,MAAM,GACNjB,QAAQ,MAAAlC,MAAA,CAENkC,QAAQ,GAAG,GAAG,GAAG,EAAE,QAAAlC,MAAA,CAChBqC,IAAI,iCAAArC,MAAA,CAA8BkD,OAAO,eAAY;EAE9D;EAEAG,aAAaA,CAAC3C,MAAc,EAAEY,MAAe,EAAE;IAC7C,IAAMe,IAAI,GAAG,IAAI,CAACiB,MAAM,CAAC5C,MAAM,CAAC;IAChC,OACE,IAAI,CAACW,eAAe,CAACX,MAAM,EAAEY,MAAM,CAAC,GACpC,IAAI,CAACiC,gBAAgB,CAAClB,IAAI,EAAEf,MAAM,CAAC,GACnC,IAAI,CAACkC,QAAQ,CAACnB,IAAI,EAAEf,MAAM,CAAC,QACtB;EAET;EAEAqB,gBAAgBA,CAACjC,MAAc,EAAEY,MAAe,EAAEmC,KAAiB,EAAE;IACnE,IAAM7B,IAAI,GACR6B,KAAK,CAACC,QAAQ,KAAKC,kBAAO,GACtB,IAAI,CAACC,aAAa,CAACH,KAAK,CAAC7B,IAAI,EAAEN,MAAM,CAAC,IAAImC,KAAK,CAAC7B,IAAI,GACpD6B,KAAK,CAAC7B,IAAI;IAChB,IAAMF,MAAM,GAAG,IAAI,CAACC,OAAO,CAACC,IAAI,CAAC;IACjC,IAAIiC,IAAI,GAAG,EAAE;IACb,IAAIJ,KAAK,CAACC,QAAQ,KAAKC,kBAAO,EAAE;MAC9BjC,MAAM,CAACpB,IAAI,MAAAN,MAAA,CAAM0B,MAAM,CAACpB,IAAI,CAAE;IAChC;IACA,IAAI,CAACmD,KAAK,CAACK,QAAQ,EAAE;MACnBD,IAAI,GAAGnC,MAAM,CAACqC,OAAO,GAAG,EAAE,GAAG,GAAG;IAClC;IACA,UAAA/D,MAAA,CAGKU,MAAM,EAAAV,MAAA,CAAG,IAAI,CAACgE,WAAW,CAAC,IAAI,CAAC3D,OAAO,CAACoD,KAAK,CAACnD,IAAI,CAAC,CAAC,OAAAN,MAAA,CAAI6D,IAAI,EAAA7D,MAAA,CAC5D0B,MAAM,CAACpB,IAAI;EAGjB;EAEAiD,gBAAgBA,CAAC7C,MAAc,EAAEY,MAAe,EAAE;IAChD,IAAI2C,SAAS,GAAG,EAAE;IAClB,IAAI3C,MAAM,CAAC4C,UAAU,CAAChG,MAAM,GAAG,CAAC,EAAE;MAChC,IAAMiG,MAAM,GAAG,IAAI,CAACC,UAAU,CAAC9C,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE;MACvD,KAAK,IAAMmC,KAAK,IAAInC,MAAM,CAAC4C,UAAU,EAAE;QACrC,IAAIT,KAAK,CAACY,QAAQ,EAAE,EAAE;UACpB,IAAM/D,IAAI,GAAG,IAAI,CAACgE,QAAQ,CAACb,KAAK,CAACnD,IAAI,EAAE6D,MAAM,CAAC;UAE9CF,SAAS,OAAAjE,MAAA,CAAOU,MAAM,EAAAV,MAAA,CAAGM,IAAI,wBAAAN,MAAA,CAAqBM,IAAI,QAAK;QAC7D;MACF;IACF;IACA,OAAO2D,SAAS;EAClB;EAEAT,QAAQA,CAAC9C,MAAc,EAAEY,MAAe,EAAE;IACxC,IAAMiD,OAAO,GAAG,IAAI,CAACH,UAAU,CAAC9C,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE;IACxD,IAAMI,MAAM,GAAG,IAAI,CAACC,OAAO,CAACL,MAAM,CAACM,IAAI,CAAC;IACxC,IAAMS,IAAI,GAAG3B,MAAM,GAAG,IAAI,CAAC4B,SAAS;IACpC,IAAME,IAAI,GAAG,IAAI,CAACgC,QAAQ,CAACnC,IAAI,EAAEf,MAAM,CAAC;IAExC,IAAMmD,SAAS,GACb/C,MAAM,CAACpB,IAAI,KAAK,MAAM,GAAG,EAAE,MAAAN,MAAA,CAAMU,MAAM,iBAAAV,MAAA,CAAc0B,MAAM,CAACpB,IAAI,OAAI;IACtE,IAAMoE,aAAa,GAAGhD,MAAM,CAACpB,IAAI,KAAK,MAAM,GAAG,KAAK,YAAY;IAChE,IAAMlB,MAAM,GAAGsC,MAAM,CAACpB,IAAI,KAAK,MAAM,GAAG,EAAE,GAAG,UAAU;IACvD,OACE,KACAmE,SAAS,MAAAzE,MAAA,CACNU,MAAM,0BAAAV,MAAA,CAAuB0E,aAAa,UAAA1E,MAAA,CAAM,IAAI,CAAC2E,UAAU,CAChErD,MAAM,CAACU,UAAU,CAAC4C,WAAW,EAAE,CAChC,YAAA5E,MAAA,CAAO,IAAI,CAAC6E,OAAO,UAAA7E,MAAA,CAAM,IAAI,CAAC8E,QAAQ,CAACxD,MAAM,CAACW,QAAQ,EAAEsC,OAAO,CAAC,CAAE,MAAAvE,MAAA,CAChEwC,IAAI,GAAG,IAAI,GAAGA,IAAI,GAAG,EAAE,MAAG,GAC7B,IAAI,MAAAxC,MAAA,CACDU,MAAM,aAAAV,MAAA,CAAUZ,MAAM,QAAK,GAC9B,IAAI;EAER;EAUAoF,QAAQA,CAAC9D,MAAc,EAAEY,MAAe,EAAE;IACxC,IAAMiD,OAAO,GAAG,IAAI,CAACH,UAAU,CAAC9C,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE;IAIxD,IAAIlC,MAAM,GAAG,IAAI,CAAC2F,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC;IAGxC3F,MAAM,GAAG,IAAI,CAAC2F,OAAO,CACnB3F,MAAM,EACNkC,MAAM,CAAC0D,OAAO,GAAG,IAAI,CAACV,QAAQ,CAAChD,MAAM,CAAC0D,OAAO,EAAET,OAAO,CAAC,GAAG,IAAI,CAACU,OAAO,CACvE;IACD7F,MAAM,GAAG,IAAI,CAAC2F,OAAO,CACnB3F,MAAM,EACN,IAAI,CAAC8F,QAAQ,CAACxE,MAAM,EAAEY,MAAM,CAAC6D,SAAS,EAAEZ,OAAO,CAAC,CACjD;IACD,OAAOnF,MAAM;EACf;EAEA8F,QAAQA,CAACE,OAAe,EAAE5C,IAAW,EAAE2B,MAAe,EAAE;IACtD,IAAI,CAAC3B,IAAI,IAAIA,IAAI,CAACtE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC+G,OAAO;IACnD,IAAMI,IAAc,GAAG,EAAE;IACzB,KAAK,IAAMpI,GAAG,IAAIuF,IAAI,EAAE;MACtB,IAAM8C,QAAQ,GAAG,IAAI,CAACjF,OAAO,CAACpD,GAAG,CAAC;MAClC,IAAIkH,MAAM,EAAE;QACVkB,IAAI,CAACnG,IAAI,MAAAc,MAAA,CAAKsF,QAAQ,UAAAtF,MAAA,CAAM,IAAI,CAACsE,QAAQ,CAACrH,GAAG,EAAEkH,MAAM,CAAC,EAAG;MAC3D,CAAC,MAAM;QACLkB,IAAI,CAACnG,IAAI,MAAAc,MAAA,CAAKsF,QAAQ,UAAAtF,MAAA,CAAM,IAAI,CAACgE,WAAW,CAACsB,QAAQ,CAAC,EAAG;MAC3D;IACF;IACA,iCAAAtF,MAAA,CAAiCqF,IAAI,CAACzC,IAAI,CAAC,IAAI,CAAC2C,YAAY,CAAC;EAC/D;EAEAT,QAAQA,CAACU,IAAY,EAAErB,MAAe,EAAE;IACtCA,MAAM,GAAGA,MAAM,IAAI,EAAE;IACrB,IAAIqB,IAAI,CAACrF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;MAC1B,IAAMsF,IAAmB,GAAG,EAAE;MAC9B,IAAM1H,GAAG,GAAGyH,IAAI,CAACE,OAAO,CAAC,UAAU,EAAGC,KAAK,IAAK;QAC9CF,IAAI,CAACvG,IAAI,CACP,IAAI,CAACoF,QAAQ,CAACqB,KAAK,CAACD,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAEvB,MAAM,CAAC,CAC/D;QACD,OAAO,IAAI;MACb,CAAC,CAAC;MACF,IAAMyB,OAAO,GAAGH,IAAI,CAAC7C,IAAI,CAAC,IAAI,CAAC;MAC/B,OAAOgD,OAAO,oBAAA5F,MAAA,CAAmBjC,GAAG,UAAAiC,MAAA,CAAM4F,OAAO,cAAA5F,MAAA,CAAUjC,GAAG,OAAG;IACnE;IACA,YAAAiC,MAAA,CAAWwF,IAAI;EACjB;EAeAlB,QAAQA,CAAChE,IAAY,EAAE6D,MAAe,EAAE;IACtC,IAAMmB,QAAQ,GAAG,IAAI,CAACjF,OAAO,CAAC,IAAI,CAAC2D,WAAW,CAAC1D,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC6D,MAAM,EAAE,OAAOmB,QAAQ;IAC5B,UAAAtF,MAAA,CAAUmE,MAAM,OAAAnE,MAAA,CAAI,IAAI,CAACoD,cAAc,CAAC9C,IAAI,CAAC;EAG/C;EAEAuF,eAAeA,CAACT,OAAe,EAAU;IACvC,OAAO,EAAE;EACX;EAEAU,eAAeA,CAACV,OAAe,EAAU;IACvC,eAAApF,MAAA,CACC,IAAI,CAAC+F,WAAW,EAAE,kBAAA/F,MAAA,CAEb,IAAI,CAACD,WAAW;EAmBxB;EAEAiG,cAAcA,CAACZ,OAAe,EAAE;IAC9B,IAAMa,QAAQ,sFAIhB;IAEE,eAAAjG,MAAA,CACC,IAAI,CAAC+F,WAAW,EAAE,kBAAA/F,MAAA,CAEb,IAAI,CAACD,WAAW,QAAAC,MAAA,CACxBiG,QAAQ;EAER;EAEAC,cAAcA,CAACd,OAAe,EAAU;IACtC,OAAO,EAAE;EACX;EAEAe,OAAOA,CAACf,OAAe,EAAEgB,KAAyB,EAAU;IAC1D,OAAO,EAAE;EACX;EAEAC,aAAaA,CAAC3F,MAAc,EAAEkB,IAAW,EAAU;IACjD,OACE,IAAI,CAACd,OAAO,CAACJ,MAAM,EAAEkB,IAAI,CAACb,WAAW,CAAC,GACtC,IAAI,MAAAf,MAAA,CACDU,MAAM,WAAAV,MAAA,CAAQ4B,IAAI,CAACtB,IAAI,gBAAa;EAE3C;EAEAgG,WAAWA,CAAC5F,MAAc,EAAEK,WAAmB,EAAU;IACvD,UAAAf,MAAA,CAAUU,MAAM,gBAAAV,MAAA,CAAae,WAAW;EAC1C;EAEAwF,SAASA,CAAC7F,MAAc,EAAEK,WAAmB,EAAU;IACrD,UAAAf,MAAA,CAAUU,MAAM,mBAAAV,MAAA,CAAgBe,WAAW;EAC7C;EAEAY,OAAOA,CAACC,IAAW,EAAe;IAChC,KAAK,CAACD,OAAO,CAACC,IAAI,CAAC;IACnB,IAAM4E,EAAE,GAAG,IAAI,CAACvB,OAAO;IACvB,IAAMwB,OAAoC,GAAG;MAC3CC,GAAG,EAAE;QAAE3C,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAc,CAAC;MACzCqG,OAAO,EAAE;QAAE5C,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAO,CAAC;MACtCsG,IAAI,EAAE;QAAE7C,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAO,CAAC;MACnCuG,IAAI,EAAE;QAAE9C,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAY,CAAC;MACxCwG,QAAQ,EAAE;QAAE/C,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAY,CAAC;MAC5CyG,MAAM,EAAE;QAAEhD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAU,CAAC;MACxC0G,KAAK,EAAE;QAAEjD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAU,CAAC;MACvC2G,KAAK,EAAE;QAAElD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAQ,CAAC;MACrC4G,KAAK,EAAE;QAAEnD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAQ,CAAC;MACrC6G,OAAO,EAAE;QAAEpD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAM,CAAC;MACrC8G,MAAM,EAAE;QAAErD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAU,CAAC;MACxC+G,MAAM,EAAE;QAAEtD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAc,CAAC;MAC5CgH,QAAQ,EAAE;QAAEvD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAS,CAAC;MACzCiH,MAAM,EAAE;QAAExD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAS,CAAC;MACvCkH,GAAG,EAAE;QAAEzD,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAU,CAAC;MACrCmH,GAAG,EAAE;QAAE1D,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAU,CAAC;MACrCoH,IAAI,EAAE;QAAE3D,OAAO,EAAEyC,EAAE;QAAElG,IAAI,EAAE;MAAO;IACpC,CAAC;IAED,IAAIsB,IAAI,CAAC+F,WAAW,EAAE;MAEpB,IAAMC,GAAG,GAAG,IAAI,CAACjG,OAAO,CAACC,IAAI,CAAC+F,WAAW,CAAC;MAC1C,QAAQ/F,IAAI,CAACiG,SAAS;QACpB,KAAK,WAAW;UACd,OAAO;YAAE9D,OAAO,EAAE,IAAI,CAACkB,OAAO;YAAE3E,IAAI,OAAAN,MAAA,CAAO4H,GAAG,CAACtH,IAAI;UAAG,CAAC;QACzD,KAAK,UAAU;UAAE;YACf,IAAMwH,OAAO,GACXlG,IAAI,CAAC+F,WAAW,CAACrH,IAAI,KAAK,QAAQ,GAAG,aAAa,GAAGsH,GAAG,CAACtH,IAAI;YAG/D,OAAO;cACLyD,OAAO,EAAE,IAAI,CAACkB,OAAO;cACrB3E,IAAI,EAAE,aAAa,MAAAN,MAAA,CAAM8H,OAAO;YAClC,CAAC;UACH;QACA,KAAK,gBAAgB;UACnB,OAAO;YACL/D,OAAO,EAAE,IAAI,CAACkB,OAAO;YACrB3E,IAAI,cAAAN,MAAA,CAAc,IAAI,CAAC2E,UAAU,CAACiD,GAAG,CAACtH,IAAI,CAAC;UAC7C,CAAC;QACH,KAAK,UAAU;UACb,OAAO;YAAEyD,OAAO,EAAE,EAAE;YAAEzD,IAAI,EAAE,IAAI,CAACqE,UAAU,CAAC/C,IAAI,CAACtB,IAAI;UAAE,CAAC;MAAA;MAE5D,MAAM,IAAIyH,KAAK,8BAAA/H,MAAA,CAA8BgI,IAAI,CAACC,SAAS,CAACrG,IAAI,CAAC,EAAG;IACtE;IAEA,IAAIA,IAAI,CAACtB,IAAI,EAAE;MACb,OACEmG,OAAO,CAAC7E,IAAI,CAACtB,IAAI,CAAC,IAAI;QAAEyD,OAAO,EAAE,IAAI,CAACkB,OAAO;QAAE3E,IAAI,KAAAN,MAAA,CAAK4B,IAAI,CAACtB,IAAI;MAAG,CAAC;IAEzE,CAAC,MAAM;MACL,MAAM,IAAIyH,KAAK,CAAC,gCAAgC,CAAC;IACnD;EACF;EAEAG,WAAWA,CAACxH,MAAc,EAAEkB,IAAW,EAAE;IACvC,IAAMS,IAAI,GAAG,IAAI,CAACiB,MAAM,CAAC5C,MAAM,CAAC;IAEhC,IAAMyH,MAAM,GAAG,IAAI/J,iBAAiB,EAAE;IAEtC,IAAI;MACF,IAAIwD,IAAI,YAAYwG,mBAAQ,EAAE;QAE5B,IAAMC,KAAe,GAAG,EAAE;QAC1B,IAAIC,cAAc,GAAG,EAAE;QACvB,IAAMrK,GAAG,GAAG2D,IAAgB;QAC5B,IAAM2G,QAAQ,GAAG,IAAI,CAAC5D,UAAU,CAAC/C,IAAI,CAACtB,IAAI,CAAC;QAC3C+H,KAAK,CAACnJ,IAAI,SAAAc,MAAA,CAASuI,QAAQ,aAAU;QACrCtK,GAAG,CAACuK,MAAM,CAAC5J,OAAO,CAAElC,KAAK,IAAK;UAE5B,IAAI,CAAC+L,gBAAgB,CAACpG,IAAI,EAAE3F,KAAK,EAAE6L,QAAQ,EAAEJ,MAAM,CAAC;QACtD,CAAC,CAAC;QACFE,KAAK,CAACnJ,IAAI,CAACiJ,MAAM,CAAChJ,QAAQ,EAAE,CAAC;QAC7BmJ,cAAc,GAAGD,KAAK,CAACzF,IAAI,CAAC,IAAI,CAAC8F,aAAa,CAAC;QAE/C,OAAOJ,cAAc;MACvB,CAAC,MAAM;QACL,IAAI,CAACK,cAAc,CAAC/G,IAAI,CAAC,CAAChD,OAAO,CAAEgK,IAAI,IAErC,IAAI,CAACC,eAAe,CAACxG,IAAI,EAAEuG,IAAI,EAAET,MAAM,CAAC,CACzC;MAEH;IACF,CAAC,CAAC,OAAAW,OAAA,EAAM;MACN,MAAM,IAAIf,KAAK,CAACC,IAAI,CAACC,SAAS,CAACrG,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD;IACA,OACE,IAAI,CAACyE,aAAa,CAAC3F,MAAM,EAAEkB,IAAI,CAAC,GAChCuG,MAAM,CAAChJ,QAAQ,EAAE,GACjB,IAAI,CAAC4J,SAAS,CAACrI,MAAM,EAAEkB,IAAI,CAAC,MAAA5B,MAAA,CACzB,IAAI,CAACgJ,UAAU,GAAGtI,MAAM,GAAG,EAAE,EAAAV,MAAA,CAAG,IAAI,CAACgJ,UAAU,CAAE;EAExD;EAEAP,gBAAgBA,CACdrD,OAAe,EACf1I,KAAoB,EACpBuM,QAAiB,EACjBd,MAA0B,EAC1B;IACA,IAAMe,KAAK,GAAG,OAAOxM,KAAK,KAAK,QAAQ,GAAG,IAAI,CAACyM,SAAS,GAAG,EAAE;IAC7D,IAAM7I,IAAI,MAAAN,MAAA,CAAMiJ,QAAQ,OAAAjJ,MAAA,CAAI,IAAI,CAACoD,cAAc,CAAC1G,KAAK,CAACyC,QAAQ,EAAE,CAAC,CAAE;IACnE,IAAIgJ,MAAM,EAAE;MACVA,MAAM,CAAC7J,QAAQ,CACb,OAAO,EACPgC,IAAI,EACJ2I,QAAQ,IAAI,EAAE,EACd,GAAG,KAAAjJ,MAAA,CACAkJ,KAAK,EAAAlJ,MAAA,CAAGtD,KAAK,EAAAsD,MAAA,CAAGkJ,KAAK,EACzB;IACH;IACA,gBAAAlJ,MAAA,CAAgBM,IAAI,OAAAN,MAAA,CAAIiJ,QAAQ,SAAAjJ,MAAA,CAAMkJ,KAAK,EAAAlJ,MAAA,CAAGtD,KAAK,EAAAsD,MAAA,CAAGkJ,KAAK;EAC7D;EAEAL,eAAeA,CACbnI,MAAc,EACd0I,QAAmB,EACnBjB,MAA0B,EAClB;IACR,IAAMvG,IAAI,GAAG,IAAI,CAACD,OAAO,CAACyH,QAAQ,CAACxH,IAAI,CAAC;IACxC,IAAMtB,IAAI,GAAG,IAAI,CAAC8C,cAAc,CAACgG,QAAQ,CAAC9I,IAAI,CAAC;IAC/C,IAAMiI,QAAQ,GAAG3G,IAAI,CAACtB,IAAI;IAE1B,IAAM+I,GAAG,GAAGD,QAAQ,CAACrI,WAAW,MAAAf,MAAA,CACzB,IAAI,CAACc,OAAO,CAAC,GAAG,EAAEsI,QAAQ,CAACrI,WAAW,CAAC,IAC1C,EAAE;IAEN,IAAMuI,YAAY,GAAGF,QAAQ,CAACtF,QAAQ,GAAG,EAAE,GAAG,YAAY;IAC1D,IAAMyF,eAAe,GAAGH,QAAQ,CAACtF,QAAQ,GAAG,EAAE,GAAG,GAAG;IAEpD,IAAIqE,MAAM,EAAE;MACVA,MAAM,CAAC7J,QAAQ,IAAA0B,MAAA,CACVU,MAAM,EAAAV,MAAA,CAAGM,IAAI,MAAAN,MAAA,CACbuJ,eAAe,EAAAvJ,MAAA,CAAGuI,QAAQ,cAAAvI,MAAA,CAClBoJ,QAAQ,CAAC9I,IAAI,EAAAN,MAAA,CAAGsJ,YAAY,UACvCD,GAAG,CACJ;IACH;IACA;EACF;EAEA1E,UAAUA,CAAC5G,GAAW,EAAU;IAC9B,OAAOA,GAAG,CAACyL,MAAM,CAAC,CAAC,CAAC,CAAC5E,WAAW,EAAE,GAAG7G,GAAG,CAAC0L,KAAK,CAAC,CAAC,CAAC;EACnD;EAEArG,cAAcA,CAACrF,GAAW,EAAU;IAClC,OAAO,IAAI,CAAC4G,UAAU,CACpB5G,GAAG,CAAC2H,OAAO,CAAC,cAAc,EAAGC,KAAK,IAChCA,KAAK,CAACf,WAAW,EAAE,CAACc,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CACtD,CACF;EACH;EAEA1B,WAAWA,CAACjG,GAAW,EAAU;IAC/B,OAAOA,GAAG,CAAC2H,OAAO,CAAC,cAAc,EAAGC,KAAK,IACvCA,KAAK,CAACf,WAAW,EAAE,CAACc,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CACtD;EACH;AACF;AAACgE,OAAA,CAAAhK,KAAA,GAAAA,KAAA"}