@looker/sdk-codegen 21.7.3 → 21.8.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 (71) hide show
  1. package/CHANGELOG.md +23 -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 +100 -432
  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 +36 -51
  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 +8 -438
  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 +1 -56
  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/csharp.gen.js CHANGED
@@ -4,79 +4,53 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CSharpGen = 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 reservedWords = new Set(['abstract', 'as', 'base', 'bool', 'break', 'byte', 'case', 'catch', 'char', 'checked', 'class', 'const', 'continue', 'decimal', 'default', 'delegate', 'do ', 'double', 'else', 'enum', 'event', 'explicit', 'extern', 'false', 'finally', 'fixed', 'float', 'for', 'foreach', 'goto', 'if', 'implicit', 'in', 'int', 'interface', 'internal', 'is', 'lock', 'long', 'namespace', 'new', 'null', 'object', 'operator', 'out', 'override', 'params', 'private', 'protected', 'public', 'readonly', 'ref', 'return', 'sbyte', 'sealed', 'short', 'sizeof', 'stackalloc', 'static', 'string', 'struct', 'switch', 'this', 'throw', 'true', 'try', 'typeof', 'uint', 'ulong', 'unchecked', 'unsafe', 'ushort', 'using', 'virtual', 'void', 'volatile', 'while']);
15
-
16
13
  class CSharpGen extends _codeGen.CodeGen {
17
14
  constructor() {
18
15
  super(...arguments);
19
-
20
16
  _defineProperty(this, "codePath", './csharp');
21
-
22
17
  _defineProperty(this, "packagePath", '');
23
-
24
18
  _defineProperty(this, "itself", 'this');
25
-
26
19
  _defineProperty(this, "fileExtension", '.cs');
27
-
28
20
  _defineProperty(this, "commentStr", '// ');
29
-
30
21
  _defineProperty(this, "nullStr", 'null');
31
-
32
22
  _defineProperty(this, "transport", 'Transport');
33
-
34
23
  _defineProperty(this, "argDelimiter", ',');
35
-
36
24
  _defineProperty(this, "paramDelimiter", ',\n');
37
-
38
25
  _defineProperty(this, "propDelimiter", '\n');
39
-
40
26
  _defineProperty(this, "indentStr", ' ');
41
-
42
27
  _defineProperty(this, "endTypeStr", '\n}');
43
-
44
28
  _defineProperty(this, "needsRequestTypes", false);
45
-
46
29
  _defineProperty(this, "willItStream", false);
47
-
48
30
  _defineProperty(this, "codeQuote", '"');
49
31
  }
50
-
51
32
  commentHeader(indent, text) {
52
33
  if (this.noComment) return '';
53
34
  return text ? "".concat((0, _codeGen.commentBlock)(text, indent, '/// '), "\n") : '';
54
35
  }
55
-
56
36
  modelsPrologue(_indent) {
57
37
  return "#nullable enable\nusing System;\nusing System.Runtime.Serialization;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Looker.RTL;\nusing Url = System.String;\nusing Password = System.String;\n// ReSharper disable InconsistentNaming\n\n".concat(this.commentHeader('', this.warnEditing()), "\nnamespace Looker.SDK.API").concat(this.apiRef, "\n{\n\n");
58
38
  }
59
-
60
39
  modelsEpilogue(_indent) {
61
40
  return '\n}';
62
41
  }
63
-
64
42
  methodsPrologue(_indent) {
65
43
  return "#nullable enable\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Looker.RTL;\n// ReSharper disable InconsistentNaming\n\n".concat(this.commentHeader('', this.warnEditing()), "\nnamespace Looker.SDK.API").concat(this.apiRef, "\n{\n\n public class ").concat(this.packageName, ": ApiMethods\n {\n public ").concat(this.packageName, "(IAuthSession authSession): base(authSession, \"").concat(this.apiVersion, "\") { }\n");
66
44
  }
67
-
68
45
  methodsEpilogue(indent) {
69
46
  return "".concat(indent, "}\n}\n");
70
47
  }
71
-
72
48
  reserve(name) {
73
49
  if (reservedWords.has(name)) {
74
50
  return '@' + name;
75
51
  }
76
-
77
52
  return name;
78
53
  }
79
-
80
54
  declareParameter(indent, method, param) {
81
55
  var type = param.location === _sdkModels.strBody ? this.writeableType(param.type, method) || param.type : param.type;
82
56
  var mapped = this.typeMap(type);
@@ -85,11 +59,9 @@ class CSharpGen extends _codeGen.CodeGen {
85
59
  var defaulting = param.required ? '' : mapped.optional ? " = ".concat(mapped.optional) : '';
86
60
  return "".concat(indent).concat(mapped.name).concat(pOpt, " ").concat(arg).concat(defaulting);
87
61
  }
88
-
89
62
  declareProperty(indent, property) {
90
63
  var type = this.typeMap(property.type);
91
64
  var getset = '{ get; set; }';
92
-
93
65
  if (property.required) {
94
66
  if (type.default) {
95
67
  getset += " = ".concat(type.default, ";");
@@ -99,42 +71,33 @@ class CSharpGen extends _codeGen.CodeGen {
99
71
  getset += " = ".concat(type.optional, ";");
100
72
  }
101
73
  }
102
-
103
74
  var arg = this.reserve(property.name);
104
75
  var pOpt = property.required ? '' : '?';
105
76
  var attr = property.type instanceof _sdkModels.EnumType ? "".concat(indent, "[JsonConverter(typeof(StringEnumConverter))]\n") : '';
106
-
107
77
  if (property.hasSpecialNeeds) {
108
78
  attr += "".concat(indent, "[JsonProperty(\"").concat(property.jsonName, "\")]\n");
109
79
  }
110
-
111
80
  return this.summary(indent, this.describeProperty(property)) + attr + "".concat(indent, "public ").concat(type.name).concat(pOpt, " ").concat(arg, " ").concat(getset);
112
81
  }
113
-
114
82
  methodHeader(indent, method) {
115
83
  var _method$description;
116
-
117
84
  var type = this.typeMap(method.type);
118
85
  var head = (_method$description = method.description) === null || _method$description === void 0 ? void 0 : _method$description.trim();
119
86
  var headComment = (head ? "".concat(head, "\n\n") : '') + "".concat(method.httpMethod, " ").concat(method.endpoint, " -> ").concat(type.name);
120
-
121
87
  if (method.responseIsBoth()) {
122
88
  headComment += "\n\n**Note**: Binary content may be returned by this method.";
123
89
  } else if (method.responseIsBinary()) {
124
90
  headComment += "\n\n**Note**: Binary content is returned by this method.";
125
91
  }
126
-
127
92
  headComment += this.returnComment(method);
128
93
  method.params.forEach(param => headComment += this.paramComment(param));
129
94
  var dep = method.deprecated ? "".concat(indent, "[Obsolete(\"Deprecated\")]\n") : '';
130
95
  return this.commentHeader(indent, headComment) + dep;
131
96
  }
132
-
133
97
  genericBits(method) {
134
98
  var success = 'TSuccess';
135
99
  var generic = '<TSuccess>';
136
100
  var constraint = ' where TSuccess : class';
137
-
138
101
  if (method.returnType) {
139
102
  var ret = method.returnType;
140
103
  var type = this.typeMap(ret.type);
@@ -142,14 +105,12 @@ class CSharpGen extends _codeGen.CodeGen {
142
105
  generic = '';
143
106
  constraint = '';
144
107
  }
145
-
146
108
  return {
147
109
  success,
148
110
  generic,
149
111
  constraint
150
112
  };
151
113
  }
152
-
153
114
  methodHeaderDeclaration(indent, method) {
154
115
  var streamer = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
155
116
  var type = this.typeMap(method.type);
@@ -163,44 +124,35 @@ class CSharpGen extends _codeGen.CodeGen {
163
124
  var header = this.methodHeader(indent, method) + "".concat(indent, "public async Task<SdkResponse<").concat(bits.success, ", Exception>> ").concat(method.name).concat(bits.generic, "(") + (streamer ? "\n".concat(bump).concat(callback) : '');
164
125
  return header + fragment + "".concat(fragment ? ',' : '', "\n").concat(bump, "ITransportSettings? options = null)").concat(bits.constraint, "\n{").concat(indent, "\n");
165
126
  }
166
-
167
127
  methodSignature(indent, method) {
168
128
  return this.methodHeaderDeclaration(indent, method, false);
169
129
  }
170
-
171
130
  httpPath(path, prefix) {
172
131
  prefix = prefix || '';
173
-
174
132
  if (path.indexOf('{') >= 0) {
175
133
  return "$\"".concat(path.replace(/{/gi, '{' + prefix), "\"");
176
134
  }
177
-
178
135
  return "'".concat(path, "'");
179
136
  }
180
-
181
137
  declareMethod(indent, method) {
182
138
  var bump = this.bumper(indent);
183
139
  return this.methodSignature(indent, method) + this.encodePathParams(bump, method) + this.httpCall(bump, method) + "\n".concat(indent, "}");
184
140
  }
185
-
186
141
  errorResponses(_indent, _method) {
187
142
  return 'Exception';
188
143
  }
189
-
190
144
  argGroup(_indent, args, prefix) {
191
145
  prefix = prefix || '';
192
146
  var values = args.map(arg => "{ \"".concat(arg, "\", ").concat(this.reserve(arg), " }"));
193
147
  var bump = this.bumper(this.indentStr) + this.indentStr;
194
148
  return args && args.length !== 0 ? "new Values {\n".concat(bump).concat(values.join("".concat(this.argDelimiter.trim(), "\n").concat(bump).concat(prefix)), "}") : this.nullStr;
195
149
  }
196
-
197
150
  httpArgs(indent, method) {
198
151
  var result = this.argFill('', 'options');
199
152
  result = this.argFill(result, method.bodyArg ? method.bodyArg : this.nullStr);
200
153
  result = this.argFill(result, this.argGroup(indent, method.queryArgs));
201
154
  return result;
202
155
  }
203
-
204
156
  httpCall(indent, method) {
205
157
  var bump = indent + this.indentStr;
206
158
  var args = this.httpArgs(bump, method);
@@ -209,11 +161,9 @@ class CSharpGen extends _codeGen.CodeGen {
209
161
  var fragment = "AuthRequest<".concat(bits.success, ", Exception>(HttpMethod.").concat((0, _sdkModels.firstCase)(method.httpMethod), ", ").concat(dollah, "\"").concat(method.endpoint, "\"").concat(args ? ', ' + args : '', ")");
210
162
  return "".concat(indent, "return await ").concat(fragment, ";");
211
163
  }
212
-
213
164
  encodePathParams(indent, method) {
214
165
  var bump = indent + this.indentStr;
215
166
  var encodings = '';
216
-
217
167
  if (method.pathParams.length > 0) {
218
168
  for (var param of method.pathParams) {
219
169
  if (param.doEncode()) {
@@ -221,28 +171,22 @@ class CSharpGen extends _codeGen.CodeGen {
221
171
  }
222
172
  }
223
173
  }
224
-
225
174
  return encodings;
226
175
  }
227
-
228
176
  summary(indent, summary) {
229
177
  if (this.noComment || !summary) return '';
230
178
  var nl = summary.indexOf('\n') >= 0 ? '\n' : '';
231
179
  return this.commentHeader(indent, "<summary>".concat(nl).concat(summary).concat(nl, "</summary>"));
232
180
  }
233
-
234
181
  paramComment(param) {
235
182
  return param.description ? "\n<param name=\"".concat(param.name, "\">").concat((0, _sdkModels.describeParam)(param), "</param>") : '';
236
183
  }
237
-
238
184
  returnComment(method) {
239
185
  var type = method.returnType;
240
-
241
186
  if (type) {
242
187
  var mapped = this.typeMap(type.type);
243
188
  return "\n\n<returns><c>".concat(mapped.name, "</c> ").concat(type.description, " (").concat(type.mediaType, ")</returns>\n");
244
189
  }
245
-
246
190
  var desc = [];
247
191
  method.okResponses.forEach(r => {
248
192
  var mapped = this.typeMap(r.type);
@@ -251,18 +195,15 @@ class CSharpGen extends _codeGen.CodeGen {
251
195
  var lines = desc.join('\n');
252
196
  return "\n\n<returns>\n".concat(lines, "\n</returns>\n");
253
197
  }
254
-
255
198
  declareEnumValue(indent, value) {
256
199
  return "".concat(indent, "[EnumMember(Value = \"").concat(value, "\")]\n").concat(indent).concat(this.reserve(value.toString()));
257
200
  }
258
-
259
201
  typeSignature(indent, type) {
260
202
  var isEnum = type instanceof _sdkModels.EnumType;
261
203
  var kind = isEnum ? 'enum' : 'class';
262
204
  var parent = isEnum ? '' : ' : SdkModel';
263
205
  return this.commentHeader(indent, type.description) + "".concat(indent, "public ").concat(kind, " ").concat(this.reserve(type.name)).concat(parent, "\n{\n");
264
206
  }
265
-
266
207
  typeMap(type) {
267
208
  super.typeMap(type);
268
209
  var mt = '';
@@ -354,10 +295,8 @@ class CSharpGen extends _codeGen.CodeGen {
354
295
  name: 'void'
355
296
  }
356
297
  };
357
-
358
298
  if (type.elementType) {
359
299
  var map = this.typeMap(type.elementType);
360
-
361
300
  switch (type.className) {
362
301
  case 'ArrayType':
363
302
  return {
@@ -365,31 +304,26 @@ class CSharpGen extends _codeGen.CodeGen {
365
304
  name: "".concat(map.name, "[]"),
366
305
  optional
367
306
  };
368
-
369
307
  case 'HashType':
370
308
  return {
371
309
  default: this.nullStr,
372
310
  name: "StringDictionary<".concat(map.name, ">"),
373
311
  optional
374
312
  };
375
-
376
313
  case 'DelimArrayType':
377
314
  return {
378
315
  default: this.nullStr,
379
316
  name: "DelimArray<".concat(map.name, ">"),
380
317
  optional
381
318
  };
382
-
383
319
  case 'EnumType':
384
320
  return {
385
321
  default: '',
386
322
  name: type.name
387
323
  };
388
324
  }
389
-
390
325
  throw new Error("Don't know how to handle: ".concat(JSON.stringify(type)));
391
326
  }
392
-
393
327
  if (type.name) {
394
328
  return csTypes[type.name] || {
395
329
  default: this.nullStr,
@@ -399,8 +333,6 @@ class CSharpGen extends _codeGen.CodeGen {
399
333
  throw new Error('Cannot output a nameless type.');
400
334
  }
401
335
  }
402
-
403
336
  }
404
-
405
337
  exports.CSharpGen = CSharpGen;
406
338
  //# sourceMappingURL=csharp.gen.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/csharp.gen.ts"],"names":["reservedWords","Set","CSharpGen","CodeGen","commentHeader","indent","text","noComment","modelsPrologue","_indent","warnEditing","apiRef","modelsEpilogue","methodsPrologue","packageName","apiVersion","methodsEpilogue","reserve","name","has","declareParameter","method","param","type","location","strBody","writeableType","mapped","typeMap","arg","pOpt","required","defaulting","optional","declareProperty","property","getset","default","attr","EnumType","hasSpecialNeeds","jsonName","summary","describeProperty","methodHeader","head","description","trim","headComment","httpMethod","endpoint","responseIsBoth","responseIsBinary","returnComment","params","forEach","paramComment","dep","deprecated","genericBits","success","generic","constraint","returnType","ret","methodHeaderDeclaration","streamer","bump","indentStr","args","allParams","length","p","push","fragment","join","paramDelimiter","callback","bits","header","methodSignature","httpPath","path","prefix","indexOf","replace","declareMethod","bumper","encodePathParams","httpCall","errorResponses","_method","argGroup","values","map","argDelimiter","nullStr","httpArgs","result","argFill","bodyArg","queryArgs","dollah","pathArgs","encodings","pathParams","doEncode","nl","mediaType","desc","okResponses","r","lines","declareEnumValue","value","toString","typeSignature","isEnum","kind","parent","mt","quotes","csTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","elementType","className","Error","JSON","stringify"],"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 } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\nimport type {\n IMethod,\n IParameter,\n IType,\n IProperty,\n Arg,\n EnumValueType,\n} from './sdkModels'\nimport { strBody, firstCase, EnumType, describeParam } from './sdkModels'\n\n// https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\nconst reservedWords = new Set<string>([\n 'abstract',\n 'as',\n 'base',\n 'bool',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'checked',\n 'class',\n 'const',\n 'continue',\n 'decimal',\n 'default',\n 'delegate',\n 'do ',\n 'double',\n 'else',\n 'enum',\n 'event',\n 'explicit',\n 'extern',\n 'false',\n 'finally',\n 'fixed',\n 'float',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'int',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'long',\n 'namespace',\n 'new',\n 'null',\n 'object',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'ref',\n 'return',\n 'sbyte',\n 'sealed',\n 'short',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'string',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'true',\n 'try',\n 'typeof',\n 'uint',\n 'ulong',\n 'unchecked',\n 'unsafe',\n 'ushort',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while',\n])\n\n/**\n * C# code generator\n */\nexport class CSharpGen extends CodeGen {\n codePath = './csharp'\n packagePath = ''\n itself = 'this'\n fileExtension = '.cs'\n commentStr = '// '\n nullStr = 'null'\n transport = 'Transport'\n\n argDelimiter = ','\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n\n indentStr = ' '\n endTypeStr = '\\n}'\n needsRequestTypes = false\n willItStream = false\n codeQuote = '\"'\n\n commentHeader(indent: string, text: string | undefined) {\n if (this.noComment) return ''\n return text ? `${commentBlock(text, indent, '/// ')}\\n` : ''\n }\n\n modelsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Runtime.Serialization;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Looker.RTL;\nusing Url = System.String;\nusing Password = System.String;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n`\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n methodsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Looker.RTL;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n public class ${this.packageName}: ApiMethods\n {\n public ${this.packageName}(IAuthSession authSession): base(authSession, \"${\n this.apiVersion\n }\") { }\n`\n }\n\n methodsEpilogue(indent: string) {\n return `${indent}}\n}\n`\n }\n\n reserve(name: string) {\n if (reservedWords.has(name)) {\n return '@' + name\n }\n return name\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 const arg = this.reserve(param.name)\n const pOpt = param.required ? '' : '?'\n const defaulting = param.required\n ? ''\n : mapped.optional\n ? ` = ${mapped.optional}`\n : ''\n return `${indent}${mapped.name}${pOpt} ${arg}${defaulting}`\n }\n\n declareProperty(indent: string, property: IProperty): string {\n const type = this.typeMap(property.type)\n // TODO notation for readonly support\n // let getset = property.readOnly ? '{ get; }' : '{ get; set; }'\n let getset = '{ get; set; }'\n if (property.required) {\n if (type.default) {\n getset += ` = ${type.default};`\n }\n } else {\n if (type.optional) {\n getset += ` = ${type.optional};`\n }\n }\n\n const arg = this.reserve(property.name)\n const pOpt = property.required ? '' : '?'\n let attr =\n property.type instanceof EnumType\n ? `${indent}[JsonConverter(typeof(StringEnumConverter))]\\n`\n : ''\n if (property.hasSpecialNeeds) {\n attr += `${indent}[JsonProperty(\"${property.jsonName}\")]\\n`\n }\n return (\n this.summary(indent, this.describeProperty(property)) +\n attr +\n `${indent}public ${type.name}${pOpt} ${arg} ${getset}`\n )\n }\n\n methodHeader(indent: string, method: IMethod) {\n const type = this.typeMap(method.type)\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.`\n }\n\n headComment += this.returnComment(method)\n method.params.forEach((param) => (headComment += this.paramComment(param)))\n const dep = method.deprecated ? `${indent}[Obsolete(\"Deprecated\")]\\n` : ''\n return this.commentHeader(indent, headComment) + dep\n }\n\n genericBits(method: IMethod) {\n let success = 'TSuccess'\n let generic = '<TSuccess>'\n let constraint = ' where TSuccess : class'\n if (method.returnType) {\n const ret = method.returnType\n const type = this.typeMap(ret.type)\n success = type.name === 'void' ? 'string' : type.name\n generic = ''\n constraint = ''\n }\n return { success, generic, constraint }\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type)\n const bump = indent + this.indentStr\n\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 const fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n const callback = `callback: (readable: Readable) => Promise<${type.name}>,`\n const bits = this.genericBits(method)\n const header =\n this.methodHeader(indent, method) +\n `${indent}public async Task<SdkResponse<${bits.success}, Exception>> ${method.name}${bits.generic}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n\n return (\n header +\n fragment +\n `${fragment ? ',' : ''}\\n${bump}ITransportSettings? options = null)${\n bits.constraint\n }\\n{${indent}\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod): string {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n return `$\"${path.replace(/{/gi, '{' + prefix)}\"`\n }\n return `'${path}'`\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${indent}}`\n )\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n return 'Exception'\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n const values = args.map((arg) => `{ \"${arg}\", ${this.reserve(arg)} }`)\n const bump = this.bumper(this.indentStr) + this.indentStr\n return args && args.length !== 0\n ? `new Values {\\n${bump}${values.join(\n `${this.argDelimiter.trim()}\\n${bump}${prefix}`\n )}}`\n : this.nullStr\n }\n\n httpArgs(indent: string, method: IMethod) {\n let result = this.argFill('', 'options')\n // result = this.argFill(result, this.argGroup(indent, method.cookieArgs))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs))\n result = this.argFill(\n result,\n method.bodyArg ? method.bodyArg : this.nullStr\n )\n result = this.argFill(result, this.argGroup(indent, method.queryArgs))\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n const dollah = method.pathArgs.length ? '$' : ''\n // const errors = `(${this.errorResponses(indent, method)})`\n const bits = this.genericBits(method)\n const fragment = `AuthRequest<${\n bits.success\n }, Exception>(HttpMethod.${firstCase(method.httpMethod)}, ${dollah}\"${\n method.endpoint\n }\"${args ? ', ' + args : ''})`\n return `${indent}return await ${fragment};`\n }\n\n encodePathParams(indent: string, method: IMethod): string {\n const bump = indent + this.indentStr\n let encodings = ''\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n encodings += `${bump}${param.name} = SdkUtils.EncodeParam(${param.name});\\n`\n }\n }\n }\n return encodings\n }\n\n summary(indent: string, summary: string) {\n if (this.noComment || !summary) return ''\n const nl = summary.indexOf('\\n') >= 0 ? '\\n' : ''\n return this.commentHeader(indent, `<summary>${nl}${summary}${nl}</summary>`)\n }\n\n paramComment(param: IParameter) {\n return param.description\n ? `\\n<param name=\"${param.name}\">${describeParam(param)}</param>`\n : ''\n }\n\n returnComment(method: IMethod) {\n const type = method.returnType\n if (type) {\n const mapped = this.typeMap(type.type)\n return `\\n\\n<returns><c>${mapped.name}</c> ${type.description} (${type.mediaType})</returns>\\n`\n }\n const desc: string[] = []\n method.okResponses.forEach((r) => {\n const mapped = this.typeMap(r.type)\n desc.push(`<c>${mapped.name}</c> ${r.description} (${r.mediaType})`)\n })\n const lines = desc.join('\\n')\n return `\\n\\n<returns>\\n${lines}\\n</returns>\\n`\n }\n\n declareEnumValue(indent: string, value: EnumValueType) {\n return `${indent}[EnumMember(Value = \"${value}\")]\n${indent}${this.reserve(value.toString())}`\n }\n\n // TODO document properties in `typeHeader()` instead of inline\n // TODO create class constructor for all required parameters\n typeSignature(indent: string, type: IType) {\n const isEnum = type instanceof EnumType\n const kind = isEnum ? 'enum' : 'class'\n const parent = isEnum ? '' : ' : SdkModel'\n return (\n this.commentHeader(indent, type.description) +\n `${indent}public ${kind} ${this.reserve(type.name)}${parent}\\n{\\n`\n )\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n // all optional types are Nullable<T> and should have a \"default value\" of null\n // see https://stackoverflow.com/a/29153833 for discussion\n const mt = ''\n const quotes = '\"\"'\n const optional = this.nullStr\n\n const csTypes: Record<string, IMappedType> = {\n any: { default: this.nullStr, name: 'object', optional },\n boolean: { default: mt, name: 'bool', optional },\n byte: { default: mt, name: 'byte', optional },\n date: { default: mt, name: 'DateTime', optional },\n datetime: { default: mt, name: 'DateTime', optional },\n double: { default: mt, name: 'double', optional },\n float: { default: mt, name: 'float', optional },\n int32: { default: mt, name: 'int', optional },\n int64: { default: mt, name: 'long', optional },\n integer: { default: mt, name: 'int', optional },\n number: { default: mt, name: 'double', optional },\n object: { default: this.nullStr, name: 'object', optional },\n password: { default: quotes, name: 'Password', optional },\n string: { default: quotes, name: 'string', optional },\n uri: { default: quotes, name: 'Url', optional },\n url: { default: quotes, name: 'Url', optional },\n void: { default: mt, name: '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}[]`, optional }\n case 'HashType':\n return {\n default: this.nullStr,\n name: `StringDictionary<${map.name}>`,\n optional,\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `DelimArray<${map.name}>`,\n optional,\n }\n case 'EnumType':\n return { default: '', name: 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 csTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n )\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"file":"csharp.gen.js"}
1
+ {"version":3,"file":"csharp.gen.js","names":["reservedWords","Set","CSharpGen","CodeGen","commentHeader","indent","text","noComment","commentBlock","modelsPrologue","_indent","warnEditing","apiRef","modelsEpilogue","methodsPrologue","packageName","apiVersion","methodsEpilogue","reserve","name","has","declareParameter","method","param","type","location","strBody","writeableType","mapped","typeMap","arg","pOpt","required","defaulting","optional","declareProperty","property","getset","default","attr","EnumType","hasSpecialNeeds","jsonName","summary","describeProperty","methodHeader","head","description","trim","headComment","httpMethod","endpoint","responseIsBoth","responseIsBinary","returnComment","params","forEach","paramComment","dep","deprecated","genericBits","success","generic","constraint","returnType","ret","methodHeaderDeclaration","streamer","bump","indentStr","args","allParams","length","p","push","fragment","join","paramDelimiter","callback","bits","header","methodSignature","httpPath","path","prefix","indexOf","replace","declareMethod","bumper","encodePathParams","httpCall","errorResponses","_method","argGroup","values","map","argDelimiter","nullStr","httpArgs","result","argFill","bodyArg","queryArgs","dollah","pathArgs","firstCase","encodings","pathParams","doEncode","nl","describeParam","mediaType","desc","okResponses","r","lines","declareEnumValue","value","toString","typeSignature","isEnum","kind","parent","mt","quotes","csTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","elementType","className","Error","JSON","stringify"],"sources":["../src/csharp.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 } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\nimport type {\n IMethod,\n IParameter,\n IType,\n IProperty,\n Arg,\n EnumValueType,\n} from './sdkModels'\nimport { strBody, firstCase, EnumType, describeParam } from './sdkModels'\n\n// https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\nconst reservedWords = new Set<string>([\n 'abstract',\n 'as',\n 'base',\n 'bool',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'checked',\n 'class',\n 'const',\n 'continue',\n 'decimal',\n 'default',\n 'delegate',\n 'do ',\n 'double',\n 'else',\n 'enum',\n 'event',\n 'explicit',\n 'extern',\n 'false',\n 'finally',\n 'fixed',\n 'float',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'int',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'long',\n 'namespace',\n 'new',\n 'null',\n 'object',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'ref',\n 'return',\n 'sbyte',\n 'sealed',\n 'short',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'string',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'true',\n 'try',\n 'typeof',\n 'uint',\n 'ulong',\n 'unchecked',\n 'unsafe',\n 'ushort',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while',\n])\n\n/**\n * C# code generator\n */\nexport class CSharpGen extends CodeGen {\n codePath = './csharp'\n packagePath = ''\n itself = 'this'\n fileExtension = '.cs'\n commentStr = '// '\n nullStr = 'null'\n transport = 'Transport'\n\n argDelimiter = ','\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n\n indentStr = ' '\n endTypeStr = '\\n}'\n needsRequestTypes = false\n willItStream = false\n codeQuote = '\"'\n\n commentHeader(indent: string, text: string | undefined) {\n if (this.noComment) return ''\n return text ? `${commentBlock(text, indent, '/// ')}\\n` : ''\n }\n\n modelsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Runtime.Serialization;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Looker.RTL;\nusing Url = System.String;\nusing Password = System.String;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n`\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n methodsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Looker.RTL;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n public class ${this.packageName}: ApiMethods\n {\n public ${this.packageName}(IAuthSession authSession): base(authSession, \"${\n this.apiVersion\n }\") { }\n`\n }\n\n methodsEpilogue(indent: string) {\n return `${indent}}\n}\n`\n }\n\n reserve(name: string) {\n if (reservedWords.has(name)) {\n return '@' + name\n }\n return name\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 const arg = this.reserve(param.name)\n const pOpt = param.required ? '' : '?'\n const defaulting = param.required\n ? ''\n : mapped.optional\n ? ` = ${mapped.optional}`\n : ''\n return `${indent}${mapped.name}${pOpt} ${arg}${defaulting}`\n }\n\n declareProperty(indent: string, property: IProperty): string {\n const type = this.typeMap(property.type)\n // TODO notation for readonly support\n // let getset = property.readOnly ? '{ get; }' : '{ get; set; }'\n let getset = '{ get; set; }'\n if (property.required) {\n if (type.default) {\n getset += ` = ${type.default};`\n }\n } else {\n if (type.optional) {\n getset += ` = ${type.optional};`\n }\n }\n\n const arg = this.reserve(property.name)\n const pOpt = property.required ? '' : '?'\n let attr =\n property.type instanceof EnumType\n ? `${indent}[JsonConverter(typeof(StringEnumConverter))]\\n`\n : ''\n if (property.hasSpecialNeeds) {\n attr += `${indent}[JsonProperty(\"${property.jsonName}\")]\\n`\n }\n return (\n this.summary(indent, this.describeProperty(property)) +\n attr +\n `${indent}public ${type.name}${pOpt} ${arg} ${getset}`\n )\n }\n\n methodHeader(indent: string, method: IMethod) {\n const type = this.typeMap(method.type)\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.`\n }\n\n headComment += this.returnComment(method)\n method.params.forEach((param) => (headComment += this.paramComment(param)))\n const dep = method.deprecated ? `${indent}[Obsolete(\"Deprecated\")]\\n` : ''\n return this.commentHeader(indent, headComment) + dep\n }\n\n genericBits(method: IMethod) {\n let success = 'TSuccess'\n let generic = '<TSuccess>'\n let constraint = ' where TSuccess : class'\n if (method.returnType) {\n const ret = method.returnType\n const type = this.typeMap(ret.type)\n success = type.name === 'void' ? 'string' : type.name\n generic = ''\n constraint = ''\n }\n return { success, generic, constraint }\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type)\n const bump = indent + this.indentStr\n\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 const fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n const callback = `callback: (readable: Readable) => Promise<${type.name}>,`\n const bits = this.genericBits(method)\n const header =\n this.methodHeader(indent, method) +\n `${indent}public async Task<SdkResponse<${bits.success}, Exception>> ${method.name}${bits.generic}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n\n return (\n header +\n fragment +\n `${fragment ? ',' : ''}\\n${bump}ITransportSettings? options = null)${\n bits.constraint\n }\\n{${indent}\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod): string {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n return `$\"${path.replace(/{/gi, '{' + prefix)}\"`\n }\n return `'${path}'`\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${indent}}`\n )\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n return 'Exception'\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n const values = args.map((arg) => `{ \"${arg}\", ${this.reserve(arg)} }`)\n const bump = this.bumper(this.indentStr) + this.indentStr\n return args && args.length !== 0\n ? `new Values {\\n${bump}${values.join(\n `${this.argDelimiter.trim()}\\n${bump}${prefix}`\n )}}`\n : this.nullStr\n }\n\n httpArgs(indent: string, method: IMethod) {\n let result = this.argFill('', 'options')\n // result = this.argFill(result, this.argGroup(indent, method.cookieArgs))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs))\n result = this.argFill(\n result,\n method.bodyArg ? method.bodyArg : this.nullStr\n )\n result = this.argFill(result, this.argGroup(indent, method.queryArgs))\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n const dollah = method.pathArgs.length ? '$' : ''\n // const errors = `(${this.errorResponses(indent, method)})`\n const bits = this.genericBits(method)\n const fragment = `AuthRequest<${\n bits.success\n }, Exception>(HttpMethod.${firstCase(method.httpMethod)}, ${dollah}\"${\n method.endpoint\n }\"${args ? ', ' + args : ''})`\n return `${indent}return await ${fragment};`\n }\n\n encodePathParams(indent: string, method: IMethod): string {\n const bump = indent + this.indentStr\n let encodings = ''\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n encodings += `${bump}${param.name} = SdkUtils.EncodeParam(${param.name});\\n`\n }\n }\n }\n return encodings\n }\n\n summary(indent: string, summary: string) {\n if (this.noComment || !summary) return ''\n const nl = summary.indexOf('\\n') >= 0 ? '\\n' : ''\n return this.commentHeader(indent, `<summary>${nl}${summary}${nl}</summary>`)\n }\n\n paramComment(param: IParameter) {\n return param.description\n ? `\\n<param name=\"${param.name}\">${describeParam(param)}</param>`\n : ''\n }\n\n returnComment(method: IMethod) {\n const type = method.returnType\n if (type) {\n const mapped = this.typeMap(type.type)\n return `\\n\\n<returns><c>${mapped.name}</c> ${type.description} (${type.mediaType})</returns>\\n`\n }\n const desc: string[] = []\n method.okResponses.forEach((r) => {\n const mapped = this.typeMap(r.type)\n desc.push(`<c>${mapped.name}</c> ${r.description} (${r.mediaType})`)\n })\n const lines = desc.join('\\n')\n return `\\n\\n<returns>\\n${lines}\\n</returns>\\n`\n }\n\n declareEnumValue(indent: string, value: EnumValueType) {\n return `${indent}[EnumMember(Value = \"${value}\")]\n${indent}${this.reserve(value.toString())}`\n }\n\n // TODO document properties in `typeHeader()` instead of inline\n // TODO create class constructor for all required parameters\n typeSignature(indent: string, type: IType) {\n const isEnum = type instanceof EnumType\n const kind = isEnum ? 'enum' : 'class'\n const parent = isEnum ? '' : ' : SdkModel'\n return (\n this.commentHeader(indent, type.description) +\n `${indent}public ${kind} ${this.reserve(type.name)}${parent}\\n{\\n`\n )\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n // all optional types are Nullable<T> and should have a \"default value\" of null\n // see https://stackoverflow.com/a/29153833 for discussion\n const mt = ''\n const quotes = '\"\"'\n const optional = this.nullStr\n\n const csTypes: Record<string, IMappedType> = {\n any: { default: this.nullStr, name: 'object', optional },\n boolean: { default: mt, name: 'bool', optional },\n byte: { default: mt, name: 'byte', optional },\n date: { default: mt, name: 'DateTime', optional },\n datetime: { default: mt, name: 'DateTime', optional },\n double: { default: mt, name: 'double', optional },\n float: { default: mt, name: 'float', optional },\n int32: { default: mt, name: 'int', optional },\n int64: { default: mt, name: 'long', optional },\n integer: { default: mt, name: 'int', optional },\n number: { default: mt, name: 'double', optional },\n object: { default: this.nullStr, name: 'object', optional },\n password: { default: quotes, name: 'Password', optional },\n string: { default: quotes, name: 'string', optional },\n uri: { default: quotes, name: 'Url', optional },\n url: { default: quotes, name: 'Url', optional },\n void: { default: mt, name: '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}[]`, optional }\n case 'HashType':\n return {\n default: this.nullStr,\n name: `StringDictionary<${map.name}>`,\n optional,\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `DelimArray<${map.name}>`,\n optional,\n }\n case 'EnumType':\n return { default: '', name: 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 csTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n )\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"mappings":";;;;;;AA2BA;AASA;AAAyE;AAAA;AAAA;AAGzE,IAAMA,aAAa,GAAG,IAAIC,GAAG,CAAS,CACpC,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,OAAO,EACP,UAAU,EACV,QAAQ,EACR,OAAO,EACP,SAAS,EACT,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,MAAM,EACN,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,KAAK,EACL,WAAW,EACX,UAAU,EACV,IAAI,EACJ,MAAM,EACN,MAAM,EACN,WAAW,EACX,KAAK,EACL,MAAM,EACN,QAAQ,EACR,UAAU,EACV,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,SAAS,EACT,MAAM,EACN,UAAU,EACV,OAAO,CACR,CAAC;AAKK,MAAMC,SAAS,SAASC,gBAAO,CAAC;EAAA;IAAA;IAAA,kCAC1B,UAAU;IAAA,qCACP,EAAE;IAAA,gCACP,MAAM;IAAA,uCACC,KAAK;IAAA,oCACR,KAAK;IAAA,iCACR,MAAM;IAAA,mCACJ,WAAW;IAAA,sCAER,GAAG;IAAA,wCACD,KAAK;IAAA,uCACN,IAAI;IAAA,mCAER,IAAI;IAAA,oCACH,KAAK;IAAA,2CACE,KAAK;IAAA,sCACV,KAAK;IAAA,mCACR,GAAG;EAAA;EAEfC,aAAa,CAACC,MAAc,EAAEC,IAAwB,EAAE;IACtD,IAAI,IAAI,CAACC,SAAS,EAAE,OAAO,EAAE;IAC7B,OAAOD,IAAI,aAAM,IAAAE,qBAAY,EAACF,IAAI,EAAED,MAAM,EAAE,MAAM,CAAC,UAAO,EAAE;EAC9D;EAEAI,cAAc,CAACC,OAAe,EAAE;IAC9B,6QAUF,IAAI,CAACN,aAAa,CAAC,EAAE,EAAE,IAAI,CAACO,WAAW,EAAE,CAAC,uCAClB,IAAI,CAACC,MAAM;EAInC;EAEAC,cAAc,CAACH,OAAe,EAAE;IAC9B,OAAO,KAAK;EACd;EAEAI,eAAe,CAACJ,OAAe,EAAE;IAC/B,uKAOF,IAAI,CAACN,aAAa,CAAC,EAAE,EAAE,IAAI,CAACO,WAAW,EAAE,CAAC,uCAClB,IAAI,CAACC,MAAM,mCAGpB,IAAI,CAACG,WAAW,2CAEpB,IAAI,CAACA,WAAW,6DACvB,IAAI,CAACC,UAAU;EAGnB;EAEAC,eAAe,CAACZ,MAAc,EAAE;IAC9B,iBAAUA,MAAM;EAGlB;EAEAa,OAAO,CAACC,IAAY,EAAE;IACpB,IAAInB,aAAa,CAACoB,GAAG,CAACD,IAAI,CAAC,EAAE;MAC3B,OAAO,GAAG,GAAGA,IAAI;IACnB;IACA,OAAOA,IAAI;EACb;EAEAE,gBAAgB,CAAChB,MAAc,EAAEiB,MAAe,EAAEC,KAAiB,EAAE;IACnE,IAAMC,IAAI,GACRD,KAAK,CAACE,QAAQ,KAAKC,kBAAO,GACtB,IAAI,CAACC,aAAa,CAACJ,KAAK,CAACC,IAAI,EAAEF,MAAM,CAAC,IAAIC,KAAK,CAACC,IAAI,GACpDD,KAAK,CAACC,IAAI;IAChB,IAAMI,MAAM,GAAG,IAAI,CAACC,OAAO,CAACL,IAAI,CAAC;IACjC,IAAMM,GAAG,GAAG,IAAI,CAACZ,OAAO,CAACK,KAAK,CAACJ,IAAI,CAAC;IACpC,IAAMY,IAAI,GAAGR,KAAK,CAACS,QAAQ,GAAG,EAAE,GAAG,GAAG;IACtC,IAAMC,UAAU,GAAGV,KAAK,CAACS,QAAQ,GAC7B,EAAE,GACFJ,MAAM,CAACM,QAAQ,gBACTN,MAAM,CAACM,QAAQ,IACrB,EAAE;IACN,iBAAU7B,MAAM,SAAGuB,MAAM,CAACT,IAAI,SAAGY,IAAI,cAAID,GAAG,SAAGG,UAAU;EAC3D;EAEAE,eAAe,CAAC9B,MAAc,EAAE+B,QAAmB,EAAU;IAC3D,IAAMZ,IAAI,GAAG,IAAI,CAACK,OAAO,CAACO,QAAQ,CAACZ,IAAI,CAAC;IAGxC,IAAIa,MAAM,GAAG,eAAe;IAC5B,IAAID,QAAQ,CAACJ,QAAQ,EAAE;MACrB,IAAIR,IAAI,CAACc,OAAO,EAAE;QAChBD,MAAM,iBAAUb,IAAI,CAACc,OAAO,MAAG;MACjC;IACF,CAAC,MAAM;MACL,IAAId,IAAI,CAACU,QAAQ,EAAE;QACjBG,MAAM,iBAAUb,IAAI,CAACU,QAAQ,MAAG;MAClC;IACF;IAEA,IAAMJ,GAAG,GAAG,IAAI,CAACZ,OAAO,CAACkB,QAAQ,CAACjB,IAAI,CAAC;IACvC,IAAMY,IAAI,GAAGK,QAAQ,CAACJ,QAAQ,GAAG,EAAE,GAAG,GAAG;IACzC,IAAIO,IAAI,GACNH,QAAQ,CAACZ,IAAI,YAAYgB,mBAAQ,aAC1BnC,MAAM,sDACT,EAAE;IACR,IAAI+B,QAAQ,CAACK,eAAe,EAAE;MAC5BF,IAAI,cAAOlC,MAAM,6BAAkB+B,QAAQ,CAACM,QAAQ,WAAO;IAC7D;IACA,OACE,IAAI,CAACC,OAAO,CAACtC,MAAM,EAAE,IAAI,CAACuC,gBAAgB,CAACR,QAAQ,CAAC,CAAC,GACrDG,IAAI,aACDlC,MAAM,oBAAUmB,IAAI,CAACL,IAAI,SAAGY,IAAI,cAAID,GAAG,cAAIO,MAAM,CAAE;EAE1D;EAEAQ,YAAY,CAACxC,MAAc,EAAEiB,MAAe,EAAE;IAAA;IAC5C,IAAME,IAAI,GAAG,IAAI,CAACK,OAAO,CAACP,MAAM,CAACE,IAAI,CAAC;IACtC,IAAMsB,IAAI,0BAAGxB,MAAM,CAACyB,WAAW,wDAAlB,oBAAoBC,IAAI,EAAE;IACvC,IAAIC,WAAW,GACb,CAACH,IAAI,aAAMA,IAAI,YAAS,EAAE,cACvBxB,MAAM,CAAC4B,UAAU,cAAI5B,MAAM,CAAC6B,QAAQ,iBAAO3B,IAAI,CAACL,IAAI,CAAE;IAC3D,IAAIG,MAAM,CAAC8B,cAAc,EAAE,EAAE;MAC3BH,WAAW,kEAAkE;IAC/E,CAAC,MAAM,IAAI3B,MAAM,CAAC+B,gBAAgB,EAAE,EAAE;MACpCJ,WAAW,8DAA8D;IAC3E;IAEAA,WAAW,IAAI,IAAI,CAACK,aAAa,CAAChC,MAAM,CAAC;IACzCA,MAAM,CAACiC,MAAM,CAACC,OAAO,CAAEjC,KAAK,IAAM0B,WAAW,IAAI,IAAI,CAACQ,YAAY,CAAClC,KAAK,CAAE,CAAC;IAC3E,IAAMmC,GAAG,GAAGpC,MAAM,CAACqC,UAAU,aAAMtD,MAAM,oCAA+B,EAAE;IAC1E,OAAO,IAAI,CAACD,aAAa,CAACC,MAAM,EAAE4C,WAAW,CAAC,GAAGS,GAAG;EACtD;EAEAE,WAAW,CAACtC,MAAe,EAAE;IAC3B,IAAIuC,OAAO,GAAG,UAAU;IACxB,IAAIC,OAAO,GAAG,YAAY;IAC1B,IAAIC,UAAU,GAAG,yBAAyB;IAC1C,IAAIzC,MAAM,CAAC0C,UAAU,EAAE;MACrB,IAAMC,GAAG,GAAG3C,MAAM,CAAC0C,UAAU;MAC7B,IAAMxC,IAAI,GAAG,IAAI,CAACK,OAAO,CAACoC,GAAG,CAACzC,IAAI,CAAC;MACnCqC,OAAO,GAAGrC,IAAI,CAACL,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAGK,IAAI,CAACL,IAAI;MACrD2C,OAAO,GAAG,EAAE;MACZC,UAAU,GAAG,EAAE;IACjB;IACA,OAAO;MAAEF,OAAO;MAAEC,OAAO;MAAEC;IAAW,CAAC;EACzC;EAEAG,uBAAuB,CAAC7D,MAAc,EAAEiB,MAAe,EAAoB;IAAA,IAAlB6C,QAAQ,uEAAG,KAAK;IACvE,IAAM3C,IAAI,GAAG,IAAI,CAACK,OAAO,CAACP,MAAM,CAACE,IAAI,CAAC;IACtC,IAAM4C,IAAI,GAAG/D,MAAM,GAAG,IAAI,CAACgE,SAAS;IAEpC,IAAMd,MAAgB,GAAG,EAAE;IAC3B,IAAMe,IAAI,GAAGhD,MAAM,CAACiD,SAAS;IAC7B,IAAID,IAAI,IAAIA,IAAI,CAACE,MAAM,GAAG,CAAC,EACzBF,IAAI,CAACd,OAAO,CAAEiB,CAAC,IAAKlB,MAAM,CAACmB,IAAI,CAAC,IAAI,CAACrD,gBAAgB,CAAC+C,IAAI,EAAE9C,MAAM,EAAEmD,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAME,QAAQ,GACZpB,MAAM,CAACiB,MAAM,GAAG,CAAC,eAAQjB,MAAM,CAACqB,IAAI,CAAC,IAAI,CAACC,cAAc,CAAC,IAAK,EAAE;IAClE,IAAMC,QAAQ,uDAAgDtD,IAAI,CAACL,IAAI,OAAI;IAC3E,IAAM4D,IAAI,GAAG,IAAI,CAACnB,WAAW,CAACtC,MAAM,CAAC;IACrC,IAAM0D,MAAM,GACV,IAAI,CAACnC,YAAY,CAACxC,MAAM,EAAEiB,MAAM,CAAC,aAC9BjB,MAAM,2CAAiC0E,IAAI,CAAClB,OAAO,2BAAiBvC,MAAM,CAACH,IAAI,SAAG4D,IAAI,CAACjB,OAAO,MAAG,IACnGK,QAAQ,eAAQC,IAAI,SAAGU,QAAQ,IAAK,EAAE,CAAC;IAE1C,OACEE,MAAM,GACNL,QAAQ,aACLA,QAAQ,GAAG,GAAG,GAAG,EAAE,eAAKP,IAAI,gDAC7BW,IAAI,CAAChB,UAAU,gBACX1D,MAAM,OAAI;EAEpB;EAEA4E,eAAe,CAAC5E,MAAc,EAAEiB,MAAe,EAAU;IACvD,OAAO,IAAI,CAAC4C,uBAAuB,CAAC7D,MAAM,EAAEiB,MAAM,EAAE,KAAK,CAAC;EAC5D;EAEA4D,QAAQ,CAACC,IAAY,EAAEC,MAAe,EAAE;IACtCA,MAAM,GAAGA,MAAM,IAAI,EAAE;IACrB,IAAID,IAAI,CAACE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;MAC1B,oBAAYF,IAAI,CAACG,OAAO,CAAC,KAAK,EAAE,GAAG,GAAGF,MAAM,CAAC;IAC/C;IACA,kBAAWD,IAAI;EACjB;EAEAI,aAAa,CAAClF,MAAc,EAAEiB,MAAe,EAAE;IAC7C,IAAM8C,IAAI,GAAG,IAAI,CAACoB,MAAM,CAACnF,MAAM,CAAC;IAChC,OACE,IAAI,CAAC4E,eAAe,CAAC5E,MAAM,EAAEiB,MAAM,CAAC,GACpC,IAAI,CAACmE,gBAAgB,CAACrB,IAAI,EAAE9C,MAAM,CAAC,GACnC,IAAI,CAACoE,QAAQ,CAACtB,IAAI,EAAE9C,MAAM,CAAC,eACtBjB,MAAM,MAAG;EAElB;EAEAsF,cAAc,CAACjF,OAAe,EAAEkF,OAAgB,EAAE;IAChD,OAAO,WAAW;EACpB;EAEAC,QAAQ,CAACnF,OAAe,EAAE4D,IAAW,EAAEc,MAAe,EAAE;IACtDA,MAAM,GAAGA,MAAM,IAAI,EAAE;IACrB,IAAMU,MAAM,GAAGxB,IAAI,CAACyB,GAAG,CAAEjE,GAAG,kBAAWA,GAAG,iBAAM,IAAI,CAACZ,OAAO,CAACY,GAAG,CAAC,OAAI,CAAC;IACtE,IAAMsC,IAAI,GAAG,IAAI,CAACoB,MAAM,CAAC,IAAI,CAACnB,SAAS,CAAC,GAAG,IAAI,CAACA,SAAS;IACzD,OAAOC,IAAI,IAAIA,IAAI,CAACE,MAAM,KAAK,CAAC,2BACXJ,IAAI,SAAG0B,MAAM,CAAClB,IAAI,WAC9B,IAAI,CAACoB,YAAY,CAAChD,IAAI,EAAE,eAAKoB,IAAI,SAAGgB,MAAM,EAC9C,SACD,IAAI,CAACa,OAAO;EAClB;EAEAC,QAAQ,CAAC7F,MAAc,EAAEiB,MAAe,EAAE;IACxC,IAAI6E,MAAM,GAAG,IAAI,CAACC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC;IAGxCD,MAAM,GAAG,IAAI,CAACC,OAAO,CACnBD,MAAM,EACN7E,MAAM,CAAC+E,OAAO,GAAG/E,MAAM,CAAC+E,OAAO,GAAG,IAAI,CAACJ,OAAO,CAC/C;IACDE,MAAM,GAAG,IAAI,CAACC,OAAO,CAACD,MAAM,EAAE,IAAI,CAACN,QAAQ,CAACxF,MAAM,EAAEiB,MAAM,CAACgF,SAAS,CAAC,CAAC;IACtE,OAAOH,MAAM;EACf;EAEAT,QAAQ,CAACrF,MAAc,EAAEiB,MAAe,EAAE;IACxC,IAAM8C,IAAI,GAAG/D,MAAM,GAAG,IAAI,CAACgE,SAAS;IACpC,IAAMC,IAAI,GAAG,IAAI,CAAC4B,QAAQ,CAAC9B,IAAI,EAAE9C,MAAM,CAAC;IACxC,IAAMiF,MAAM,GAAGjF,MAAM,CAACkF,QAAQ,CAAChC,MAAM,GAAG,GAAG,GAAG,EAAE;IAEhD,IAAMO,IAAI,GAAG,IAAI,CAACnB,WAAW,CAACtC,MAAM,CAAC;IACrC,IAAMqD,QAAQ,yBACZI,IAAI,CAAClB,OAAO,qCACa,IAAA4C,oBAAS,EAACnF,MAAM,CAAC4B,UAAU,CAAC,eAAKqD,MAAM,eAChEjF,MAAM,CAAC6B,QAAQ,eACbmB,IAAI,GAAG,IAAI,GAAGA,IAAI,GAAG,EAAE,MAAG;IAC9B,iBAAUjE,MAAM,0BAAgBsE,QAAQ;EAC1C;EAEAc,gBAAgB,CAACpF,MAAc,EAAEiB,MAAe,EAAU;IACxD,IAAM8C,IAAI,GAAG/D,MAAM,GAAG,IAAI,CAACgE,SAAS;IACpC,IAAIqC,SAAS,GAAG,EAAE;IAClB,IAAIpF,MAAM,CAACqF,UAAU,CAACnC,MAAM,GAAG,CAAC,EAAE;MAChC,KAAK,IAAMjD,KAAK,IAAID,MAAM,CAACqF,UAAU,EAAE;QACrC,IAAIpF,KAAK,CAACqF,QAAQ,EAAE,EAAE;UACpBF,SAAS,cAAOtC,IAAI,SAAG7C,KAAK,CAACJ,IAAI,qCAA2BI,KAAK,CAACJ,IAAI,SAAM;QAC9E;MACF;IACF;IACA,OAAOuF,SAAS;EAClB;EAEA/D,OAAO,CAACtC,MAAc,EAAEsC,OAAe,EAAE;IACvC,IAAI,IAAI,CAACpC,SAAS,IAAI,CAACoC,OAAO,EAAE,OAAO,EAAE;IACzC,IAAMkE,EAAE,GAAGlE,OAAO,CAAC0C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE;IACjD,OAAO,IAAI,CAACjF,aAAa,CAACC,MAAM,qBAAcwG,EAAE,SAAGlE,OAAO,SAAGkE,EAAE,gBAAa;EAC9E;EAEApD,YAAY,CAAClC,KAAiB,EAAE;IAC9B,OAAOA,KAAK,CAACwB,WAAW,6BACFxB,KAAK,CAACJ,IAAI,gBAAK,IAAA2F,wBAAa,EAACvF,KAAK,CAAC,gBACrD,EAAE;EACR;EAEA+B,aAAa,CAAChC,MAAe,EAAE;IAC7B,IAAME,IAAI,GAAGF,MAAM,CAAC0C,UAAU;IAC9B,IAAIxC,IAAI,EAAE;MACR,IAAMI,MAAM,GAAG,IAAI,CAACC,OAAO,CAACL,IAAI,CAACA,IAAI,CAAC;MACtC,iCAA0BI,MAAM,CAACT,IAAI,kBAAQK,IAAI,CAACuB,WAAW,eAAKvB,IAAI,CAACuF,SAAS;IAClF;IACA,IAAMC,IAAc,GAAG,EAAE;IACzB1F,MAAM,CAAC2F,WAAW,CAACzD,OAAO,CAAE0D,CAAC,IAAK;MAChC,IAAMtF,MAAM,GAAG,IAAI,CAACC,OAAO,CAACqF,CAAC,CAAC1F,IAAI,CAAC;MACnCwF,IAAI,CAACtC,IAAI,cAAO9C,MAAM,CAACT,IAAI,kBAAQ+F,CAAC,CAACnE,WAAW,eAAKmE,CAAC,CAACH,SAAS,OAAI;IACtE,CAAC,CAAC;IACF,IAAMI,KAAK,GAAGH,IAAI,CAACpC,IAAI,CAAC,IAAI,CAAC;IAC7B,gCAAyBuC,KAAK;EAChC;EAEAC,gBAAgB,CAAC/G,MAAc,EAAEgH,KAAoB,EAAE;IACrD,iBAAUhH,MAAM,mCAAwBgH,KAAK,mBAC/ChH,MAAM,SAAG,IAAI,CAACa,OAAO,CAACmG,KAAK,CAACC,QAAQ,EAAE,CAAC;EACvC;EAIAC,aAAa,CAAClH,MAAc,EAAEmB,IAAW,EAAE;IACzC,IAAMgG,MAAM,GAAGhG,IAAI,YAAYgB,mBAAQ;IACvC,IAAMiF,IAAI,GAAGD,MAAM,GAAG,MAAM,GAAG,OAAO;IACtC,IAAME,MAAM,GAAGF,MAAM,GAAG,EAAE,GAAG,aAAa;IAC1C,OACE,IAAI,CAACpH,aAAa,CAACC,MAAM,EAAEmB,IAAI,CAACuB,WAAW,CAAC,aACzC1C,MAAM,oBAAUoH,IAAI,cAAI,IAAI,CAACvG,OAAO,CAACM,IAAI,CAACL,IAAI,CAAC,SAAGuG,MAAM,UAAO;EAEtE;EAEA7F,OAAO,CAACL,IAAW,EAAe;IAChC,KAAK,CAACK,OAAO,CAACL,IAAI,CAAC;IAGnB,IAAMmG,EAAE,GAAG,EAAE;IACb,IAAMC,MAAM,GAAG,IAAI;IACnB,IAAM1F,QAAQ,GAAG,IAAI,CAAC+D,OAAO;IAE7B,IAAM4B,OAAoC,GAAG;MAC3CC,GAAG,EAAE;QAAExF,OAAO,EAAE,IAAI,CAAC2D,OAAO;QAAE9E,IAAI,EAAE,QAAQ;QAAEe;MAAS,CAAC;MACxD6F,OAAO,EAAE;QAAEzF,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,MAAM;QAAEe;MAAS,CAAC;MAChD8F,IAAI,EAAE;QAAE1F,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,MAAM;QAAEe;MAAS,CAAC;MAC7C+F,IAAI,EAAE;QAAE3F,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,UAAU;QAAEe;MAAS,CAAC;MACjDgG,QAAQ,EAAE;QAAE5F,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,UAAU;QAAEe;MAAS,CAAC;MACrDiG,MAAM,EAAE;QAAE7F,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,QAAQ;QAAEe;MAAS,CAAC;MACjDkG,KAAK,EAAE;QAAE9F,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,OAAO;QAAEe;MAAS,CAAC;MAC/CmG,KAAK,EAAE;QAAE/F,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,KAAK;QAAEe;MAAS,CAAC;MAC7CoG,KAAK,EAAE;QAAEhG,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,MAAM;QAAEe;MAAS,CAAC;MAC9CqG,OAAO,EAAE;QAAEjG,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,KAAK;QAAEe;MAAS,CAAC;MAC/CsG,MAAM,EAAE;QAAElG,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE,QAAQ;QAAEe;MAAS,CAAC;MACjDuG,MAAM,EAAE;QAAEnG,OAAO,EAAE,IAAI,CAAC2D,OAAO;QAAE9E,IAAI,EAAE,QAAQ;QAAEe;MAAS,CAAC;MAC3DwG,QAAQ,EAAE;QAAEpG,OAAO,EAAEsF,MAAM;QAAEzG,IAAI,EAAE,UAAU;QAAEe;MAAS,CAAC;MACzDyG,MAAM,EAAE;QAAErG,OAAO,EAAEsF,MAAM;QAAEzG,IAAI,EAAE,QAAQ;QAAEe;MAAS,CAAC;MACrD0G,GAAG,EAAE;QAAEtG,OAAO,EAAEsF,MAAM;QAAEzG,IAAI,EAAE,KAAK;QAAEe;MAAS,CAAC;MAC/C2G,GAAG,EAAE;QAAEvG,OAAO,EAAEsF,MAAM;QAAEzG,IAAI,EAAE,KAAK;QAAEe;MAAS,CAAC;MAC/C4G,IAAI,EAAE;QAAExG,OAAO,EAAEqF,EAAE;QAAExG,IAAI,EAAE;MAAO;IACpC,CAAC;IAED,IAAIK,IAAI,CAACuH,WAAW,EAAE;MAEpB,IAAMhD,GAAG,GAAG,IAAI,CAAClE,OAAO,CAACL,IAAI,CAACuH,WAAW,CAAC;MAC1C,QAAQvH,IAAI,CAACwH,SAAS;QACpB,KAAK,WAAW;UACd,OAAO;YAAE1G,OAAO,EAAE,IAAI,CAAC2D,OAAO;YAAE9E,IAAI,YAAK4E,GAAG,CAAC5E,IAAI,OAAI;YAAEe;UAAS,CAAC;QACnE,KAAK,UAAU;UACb,OAAO;YACLI,OAAO,EAAE,IAAI,CAAC2D,OAAO;YACrB9E,IAAI,6BAAsB4E,GAAG,CAAC5E,IAAI,MAAG;YACrCe;UACF,CAAC;QACH,KAAK,gBAAgB;UACnB,OAAO;YACLI,OAAO,EAAE,IAAI,CAAC2D,OAAO;YACrB9E,IAAI,uBAAgB4E,GAAG,CAAC5E,IAAI,MAAG;YAC/Be;UACF,CAAC;QACH,KAAK,UAAU;UACb,OAAO;YAAEI,OAAO,EAAE,EAAE;YAAEnB,IAAI,EAAEK,IAAI,CAACL;UAAK,CAAC;MAAA;MAE3C,MAAM,IAAI8H,KAAK,qCAA8BC,IAAI,CAACC,SAAS,CAAC3H,IAAI,CAAC,EAAG;IACtE;IAEA,IAAIA,IAAI,CAACL,IAAI,EAAE;MACb,OACE0G,OAAO,CAACrG,IAAI,CAACL,IAAI,CAAC,IAAI;QAAEmB,OAAO,EAAE,IAAI,CAAC2D,OAAO;QAAE9E,IAAI,YAAKK,IAAI,CAACL,IAAI;MAAG,CAAC;IAEzE,CAAC,MAAM;MACL,MAAM,IAAI8H,KAAK,CAAC,gCAAgC,CAAC;IACnD;EACF;AACF;AAAC"}
@@ -4,30 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.findDeclaration = void 0;
7
-
8
7
  var _exampleInfo = require("./exampleInfo");
9
-
10
8
  var findDeclaration = function findDeclaration(lode, methodId, typeId) {
11
9
  var sourcerer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _exampleInfo.permaLink;
12
10
  var declaration;
13
-
14
11
  if (methodId) {
15
12
  declaration = lode.methods[methodId];
16
13
  } else if (typeId) {
17
14
  declaration = lode.types[typeId];
18
15
  }
19
-
20
16
  var link;
21
-
22
17
  if (declaration) {
23
18
  link = sourcerer(lode.remoteOrigin, lode.commitHash, declaration.sourceFile, declaration.line);
24
19
  }
25
-
26
20
  return {
27
21
  declaration,
28
22
  link
29
23
  };
30
24
  };
31
-
32
25
  exports.findDeclaration = findDeclaration;
33
26
  //# sourceMappingURL=declarationInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/declarationInfo.ts"],"names":["findDeclaration","lode","methodId","typeId","sourcerer","permaLink","declaration","methods","types","link","remoteOrigin","commitHash","sourceFile","line"],"mappings":";;;;;;;AA0BA;;AAqBO,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAC7BC,IAD6B,EAE7BC,QAF6B,EAG7BC,MAH6B,EAK1B;AAAA,MADHC,SACG,uEADqBC,sBACrB;AACH,MAAIC,WAAJ;;AACA,MAAIJ,QAAJ,EAAc;AACZI,IAAAA,WAAW,GAAGL,IAAI,CAACM,OAAL,CAAaL,QAAb,CAAd;AACD,GAFD,MAEO,IAAIC,MAAJ,EAAY;AACjBG,IAAAA,WAAW,GAAGL,IAAI,CAACO,KAAL,CAAWL,MAAX,CAAd;AACD;;AAED,MAAIM,IAAJ;;AACA,MAAIH,WAAJ,EAAiB;AACfG,IAAAA,IAAI,GAAGL,SAAS,CACdH,IAAI,CAACS,YADS,EAEdT,IAAI,CAACU,UAFS,EAGdL,WAAW,CAACM,UAHE,EAIdN,WAAW,CAACO,IAJE,CAAhB;AAOD;;AACD,SAAO;AAAEP,IAAAA,WAAF;AAAeG,IAAAA;AAAf,GAAP;AACD,CAxBM","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 */\nimport type { IMine, IFileCall, SourceLink } from './exampleInfo'\nimport { permaLink } from './exampleInfo'\nimport type { KeyedCollection } from './sdkModels'\n\n/** All mined declaration data */\nexport interface IDeclarationMine extends IMine {\n types: DeclarationNuggets\n methods: DeclarationNuggets\n}\n\nexport interface IDeclarationNugget extends IFileCall {}\n\nexport type DeclarationNuggets = KeyedCollection<IDeclarationNugget>\n\n/**\n * Searches for declaration of a given method or type and returns a GitHub\n * permalink if found\n * @param lode All declaration data\n * @param methodId Method id to search for\n * @param typeId Type id to search for\n * @param sourcerer Function to format source code link\n */\nexport const findDeclaration = (\n lode: IDeclarationMine,\n methodId?: string,\n typeId?: string,\n sourcerer: SourceLink = permaLink\n) => {\n let declaration\n if (methodId) {\n declaration = lode.methods[methodId]\n } else if (typeId) {\n declaration = lode.types[typeId]\n }\n\n let link\n if (declaration) {\n link = sourcerer(\n lode.remoteOrigin,\n lode.commitHash,\n declaration.sourceFile,\n declaration.line\n )\n // link = ideLink(parentPath, declaration.sourceFile, declaration.line)\n }\n return { declaration, link }\n}\n"],"file":"declarationInfo.js"}
1
+ {"version":3,"file":"declarationInfo.js","names":["findDeclaration","lode","methodId","typeId","sourcerer","permaLink","declaration","methods","types","link","remoteOrigin","commitHash","sourceFile","line"],"sources":["../src/declarationInfo.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 */\nimport type { IMine, IFileCall, SourceLink } from './exampleInfo'\nimport { permaLink } from './exampleInfo'\nimport type { KeyedCollection } from './sdkModels'\n\n/** All mined declaration data */\nexport interface IDeclarationMine extends IMine {\n types: DeclarationNuggets\n methods: DeclarationNuggets\n}\n\nexport interface IDeclarationNugget extends IFileCall {}\n\nexport type DeclarationNuggets = KeyedCollection<IDeclarationNugget>\n\n/**\n * Searches for declaration of a given method or type and returns a GitHub\n * permalink if found\n * @param lode All declaration data\n * @param methodId Method id to search for\n * @param typeId Type id to search for\n * @param sourcerer Function to format source code link\n */\nexport const findDeclaration = (\n lode: IDeclarationMine,\n methodId?: string,\n typeId?: string,\n sourcerer: SourceLink = permaLink\n) => {\n let declaration\n if (methodId) {\n declaration = lode.methods[methodId]\n } else if (typeId) {\n declaration = lode.types[typeId]\n }\n\n let link\n if (declaration) {\n link = sourcerer(\n lode.remoteOrigin,\n lode.commitHash,\n declaration.sourceFile,\n declaration.line\n )\n // link = ideLink(parentPath, declaration.sourceFile, declaration.line)\n }\n return { declaration, link }\n}\n"],"mappings":";;;;;;AA0BA;AAqBO,IAAMA,eAAe,GAAG,SAAlBA,eAAe,CAC1BC,IAAsB,EACtBC,QAAiB,EACjBC,MAAe,EAEZ;EAAA,IADHC,SAAqB,uEAAGC,sBAAS;EAEjC,IAAIC,WAAW;EACf,IAAIJ,QAAQ,EAAE;IACZI,WAAW,GAAGL,IAAI,CAACM,OAAO,CAACL,QAAQ,CAAC;EACtC,CAAC,MAAM,IAAIC,MAAM,EAAE;IACjBG,WAAW,GAAGL,IAAI,CAACO,KAAK,CAACL,MAAM,CAAC;EAClC;EAEA,IAAIM,IAAI;EACR,IAAIH,WAAW,EAAE;IACfG,IAAI,GAAGL,SAAS,CACdH,IAAI,CAACS,YAAY,EACjBT,IAAI,CAACU,UAAU,EACfL,WAAW,CAACM,UAAU,EACtBN,WAAW,CAACO,IAAI,CACjB;EAEH;EACA,OAAO;IAAEP,WAAW;IAAEG;EAAK,CAAC;AAC9B,CAAC;AAAA"}