@looker/sdk-codegen 21.8.2 → 21.9.2

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 (80) hide show
  1. package/CHANGELOG.md +153 -167
  2. package/README.md +0 -1
  3. package/lib/codeGen.d.ts +15 -1
  4. package/lib/codeGen.js +23 -6
  5. package/lib/codeGen.js.map +1 -1
  6. package/lib/codeGenerators.d.ts +3 -3
  7. package/lib/codeGenerators.js +2 -4
  8. package/lib/codeGenerators.js.map +1 -1
  9. package/lib/csharp.gen.d.ts +1 -1
  10. package/lib/csharp.gen.js +2 -2
  11. package/lib/csharp.gen.js.map +1 -1
  12. package/lib/declarationInfo.d.ts +3 -3
  13. package/lib/declarationInfo.js +1 -2
  14. package/lib/declarationInfo.js.map +1 -1
  15. package/lib/esm/codeGen.js +33 -23
  16. package/lib/esm/codeGen.js.map +1 -1
  17. package/lib/esm/codeGenerators.js +17 -28
  18. package/lib/esm/codeGenerators.js.map +1 -1
  19. package/lib/esm/csharp.gen.js +11 -18
  20. package/lib/esm/csharp.gen.js.map +1 -1
  21. package/lib/esm/declarationInfo.js +3 -10
  22. package/lib/esm/declarationInfo.js.map +1 -1
  23. package/lib/esm/exampleInfo.js +9 -24
  24. package/lib/esm/exampleInfo.js.map +1 -1
  25. package/lib/esm/go.gen.js +11 -18
  26. package/lib/esm/go.gen.js.map +1 -1
  27. package/lib/esm/index.js +13 -148
  28. package/lib/esm/index.js.map +1 -1
  29. package/lib/esm/kotlin.gen.js +11 -18
  30. package/lib/esm/kotlin.gen.js.map +1 -1
  31. package/lib/esm/pseudo.gen.js +6 -13
  32. package/lib/esm/pseudo.gen.js.map +1 -1
  33. package/lib/esm/python.gen.js +13 -20
  34. package/lib/esm/python.gen.js.map +1 -1
  35. package/lib/esm/sdkModels.js +431 -116
  36. package/lib/esm/sdkModels.js.map +1 -1
  37. package/lib/esm/specConverter.js +31 -59
  38. package/lib/esm/specConverter.js.map +1 -1
  39. package/lib/esm/specDiff.js +19 -36
  40. package/lib/esm/specDiff.js.map +1 -1
  41. package/lib/esm/swift.gen.js +17 -24
  42. package/lib/esm/swift.gen.js.map +1 -1
  43. package/lib/esm/typescript.gen.js +168 -31
  44. package/lib/esm/typescript.gen.js.map +1 -1
  45. package/lib/exampleInfo.d.ts +8 -20
  46. package/lib/exampleInfo.js +1 -2
  47. package/lib/exampleInfo.js.map +1 -1
  48. package/lib/go.gen.js +3 -3
  49. package/lib/go.gen.js.map +1 -1
  50. package/lib/index.js.map +1 -1
  51. package/lib/kotlin.gen.d.ts +1 -1
  52. package/lib/kotlin.gen.js +2 -2
  53. package/lib/kotlin.gen.js.map +1 -1
  54. package/lib/pseudo.gen.js +2 -2
  55. package/lib/pseudo.gen.js.map +1 -1
  56. package/lib/python.gen.js +4 -4
  57. package/lib/python.gen.js.map +1 -1
  58. package/lib/sdkModels.d.ts +33 -13
  59. package/lib/sdkModels.js +397 -46
  60. package/lib/sdkModels.js.map +1 -1
  61. package/lib/specConverter.d.ts +9 -12
  62. package/lib/specConverter.js +14 -22
  63. package/lib/specConverter.js.map +1 -1
  64. package/lib/specDiff.d.ts +4 -4
  65. package/lib/specDiff.js +6 -8
  66. package/lib/specDiff.js.map +1 -1
  67. package/lib/swift.gen.js +2 -2
  68. package/lib/swift.gen.js.map +1 -1
  69. package/lib/typescript.gen.d.ts +13 -0
  70. package/lib/typescript.gen.js +157 -13
  71. package/lib/typescript.gen.js.map +1 -1
  72. package/package.json +8 -7
  73. package/lib/esm/testUtils/index.js +0 -17
  74. package/lib/esm/testUtils/index.js.map +0 -1
  75. package/lib/esm/testUtils/testUtils.js +0 -66
  76. package/lib/esm/testUtils/testUtils.js.map +0 -1
  77. package/lib/testUtils/index.js +0 -17
  78. package/lib/testUtils/index.js.map +0 -1
  79. package/lib/testUtils/testUtils.js +0 -66
  80. package/lib/testUtils/testUtils.js.map +0 -1
@@ -1,21 +1,16 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.TypescriptGen = void 0;
7
- var _sdkModels = require("./sdkModels");
8
- var _codeGen = require("./codeGen");
9
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
3
  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; }
12
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
13
- 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
- class TypescriptGen extends _codeGen.CodeGen {
4
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
5
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
6
+ import { EnumType, describeParam, isSpecialName, strBody, titleCase } from './sdkModels';
7
+ import { CodeGen, commentBlock } from './codeGen';
8
+ export class TypescriptGen extends CodeGen {
15
9
  constructor() {
16
10
  super(...arguments);
17
11
  _defineProperty(this, "codePath", './packages/');
18
12
  _defineProperty(this, "useFunctions", true);
13
+ _defineProperty(this, "useSlices", true);
19
14
  _defineProperty(this, "useInterfaces", true);
20
15
  _defineProperty(this, "packagePath", 'sdk/src');
21
16
  _defineProperty(this, "itself", 'this');
@@ -32,14 +27,24 @@ class TypescriptGen extends _codeGen.CodeGen {
32
27
  _defineProperty(this, "useNamedParameters", false);
33
28
  _defineProperty(this, "useNamedArguments", false);
34
29
  _defineProperty(this, "rtlNeeds", new Set());
30
+ _defineProperty(this, "hookTypes", new Set());
31
+ _defineProperty(this, "enumTypes", new Set());
35
32
  }
36
33
  reset() {
37
34
  this.rtlNeeds = new Set();
35
+ this.hookTypes = new Set();
36
+ this.enumTypes = new Set();
38
37
  }
39
38
  sdkFileName(baseFileName) {
40
39
  var _this$versions;
41
40
  return this.fileName("".concat((_this$versions = this.versions) === null || _this$versions === void 0 ? void 0 : _this$versions.spec.key, "/").concat(baseFileName));
42
41
  }
42
+ sdkImport() {
43
+ var _this$versions2, _this$versions3;
44
+ var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'funcs';
45
+ if (((_this$versions2 = this.versions) === null || _this$versions2 === void 0 ? void 0 : _this$versions2.spec.status) !== 'undocumented') return '@looker/sdk';
46
+ return "@looker/sdk/src/".concat((_this$versions3 = this.versions) === null || _this$versions3 === void 0 ? void 0 : _this$versions3.spec.key, "/").concat(source);
47
+ }
43
48
  rtlImports() {
44
49
  var rtl = Array.from(this.rtlNeeds).join(', ');
45
50
  if (rtl) {
@@ -49,19 +54,33 @@ class TypescriptGen extends _codeGen.CodeGen {
49
54
  }
50
55
  rtlImportStatement() {
51
56
  var rtl = this.rtlImports();
52
- return rtl ? "\nimport type { ".concat(rtl, " } from '@looker/sdk-rtl'\n") : '';
57
+ return rtl ? "\nimport type { ".concat(rtl, " } from '@looker/sdk-rtl';\n") : '';
53
58
  }
54
59
  methodsPrologue(_indent) {
55
- return "\nimport type { ".concat(this.rtlImports(), "IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n/**\n * ").concat(this.warnEditing(), "\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { I").concat(this.packageName, " } from './methodsInterface'\nimport type { ").concat(this.typeNames().join(', '), " } from './models'\n\nexport class ").concat(this.packageName, " extends APIMethods implements I").concat(this.packageName, " {\n static readonly ApiVersion = '").concat(this.apiVersion, "'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ").concat(this.packageName, ".ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n\n");
60
+ return "\nimport type { ".concat(this.rtlImports(), "IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl';\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl';\n/**\n * ").concat(this.warnEditing(), "\n *\n */\nimport { sdkVersion } from '../constants';\nimport type { I").concat(this.packageName, " } from './methodsInterface';\nimport type { ").concat(this.typeNames().join(', '), " } from './models';\n\nexport class ").concat(this.packageName, " extends APIMethods implements I").concat(this.packageName, " {\n static readonly ApiVersion = '").concat(this.apiVersion, "'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ").concat(this.packageName, ".ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n\n");
61
+ }
62
+ mocksPrologue(_indent) {
63
+ return "\nimport { mockApiSpec } from '@looker/sdk-codegen-utils';\nimport { MockMethod } from '../mockMethod';\n/**\n * ".concat(this.warnEditing(), "\n *\n */\n\nconst apiSpec = mockApiSpec();\n\n");
64
+ }
65
+ mocksEpilogue(_indent) {
66
+ return '';
67
+ }
68
+ hooksPrologue(_indent) {
69
+ var imp = this.sdkImport();
70
+ var valImp = imp === '@looker/sdk' ? "import { ".concat(Array.from(this.enumTypes).join(), ", ").concat(Object.keys(this.api.methods).join(), " } from '").concat(imp, "';\n") : "import { ".concat(Object.keys(this.api.methods).join(), " } from '").concat(imp, "';\nimport { ").concat(Array.from(this.enumTypes).join(), " } from '").concat(this.sdkImport('models'), "';\n");
71
+ return "\nimport { createSdkHook } from '../createSdkHook';\n\n/**\n * ".concat(this.warnEditing(), "\n *\n */\n\n").concat(valImp, "\n");
72
+ }
73
+ hooksEpilogue(_indent) {
74
+ return '';
56
75
  }
57
76
  functionsPrologue(_indent) {
58
- return "\nimport type { ".concat(this.rtlImports(), "IAPIMethods, IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { encodeParam, functionalSdk } from '@looker/sdk-rtl'\n\n/**\n * ").concat(this.warnEditing(), "\n *\n */\n\nimport { sdkVersion } from '../constants'\nimport type { ").concat(this.typeNames().join(', '), " } from './models'\n\n/**\n * Creates a \"functional sdk\" that knows the API and Looker release version\n * @param authSession authentication session\n */\nexport const functionalSdk").concat(this.apiRef, " = (\n authSession: IAuthSession,\n) => {\n return functionalSdk(authSession, '").concat(this.apiVersion, "', sdkVersion)\n}\n\n");
77
+ return "\nimport type { ".concat(this.rtlImports(), "IAPIMethods, IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl';\nimport { encodeParam, functionalSdk } from '@looker/sdk-rtl';\n\n/**\n * ").concat(this.warnEditing(), "\n *\n */\n\nimport { sdkVersion } from '../constants';\nimport type { ").concat(this.typeNames().join(', '), " } from './models';\n\n/**\n * Creates a \"functional sdk\" that knows the API and Looker release version\n * @param authSession authentication session\n */\nexport const functionalSdk").concat(this.apiRef, " = (\n authSession: IAuthSession,\n) => {\n return functionalSdk(authSession, '").concat(this.apiVersion, "', sdkVersion)\n};\n\n");
59
78
  }
60
79
  interfacesPrologue(_indent) {
61
- return "\nimport type { ".concat(this.rtlImports(), " IAPIMethods, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\n/**\n * ").concat(this.warnEditing(), "\n *\n */\nimport type { ").concat(this.typeNames().join(', '), " } from './models'\n\nexport interface I").concat(this.packageName, " extends IAPIMethods {\n\n");
80
+ return "\nimport type { ".concat(this.rtlImports(), " IAPIMethods, ITransportSettings, SDKResponse } from '@looker/sdk-rtl';\n/**\n * ").concat(this.warnEditing(), "\n *\n */\nimport type { ").concat(this.typeNames().join(', '), " } from './models';\n\nexport interface I").concat(this.packageName, " extends IAPIMethods {\n\n");
62
81
  }
63
82
  streamsPrologue(_indent) {
64
- return "\nimport type { Readable } from 'readable-stream'\nimport type { ".concat(this.rtlImports(), "IAuthSession, ITransportSettings } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n\n/**\n * ").concat(this.warnEditing(), "\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { ").concat(this.typeNames().join(', '), " } from './models'\n\nexport class ").concat(this.packageName, "Stream extends APIMethods {\n static readonly ApiVersion = '").concat(this.apiVersion, "'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ").concat(this.packageName, "Stream.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n");
83
+ return "\nimport type { ".concat(this.rtlImports(), "IAuthSession, ITransportSettings } from '@looker/sdk-rtl';\nimport { APIMethods, agentPrefix, encodeParam } from '@looker/sdk-rtl';\n\n/**\n * ").concat(this.warnEditing(), "\n *\n */\nimport { sdkVersion } from '../constants';\nimport type { ").concat(this.typeNames().join(', '), " } from './models';\n\nexport class ").concat(this.packageName, "Stream extends APIMethods {\n static readonly ApiVersion = '").concat(this.apiVersion, "';\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion);\n this.apiVersion = ").concat(this.packageName, "Stream.ApiVersion;\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion;\n authSession.settings.agentTag = agentPrefix + ' Streaming ' + sdkVersion;\n }\n");
65
84
  }
66
85
  methodsEpilogue(_indent) {
67
86
  return '\n}';
@@ -77,9 +96,9 @@ class TypescriptGen extends _codeGen.CodeGen {
77
96
  if (this.noComment || !text) return '';
78
97
  var commentPrefix = text.includes(' License') && text.includes('Copyright (c)') ? '/*' : '/**';
79
98
  if (commentStr === ' ') {
80
- return "".concat(indent).concat(commentPrefix, "\n\n").concat((0, _codeGen.commentBlock)(text, indent, commentStr), "\n").concat(indent, " */\n");
99
+ return "".concat(indent).concat(commentPrefix, "\n\n").concat(commentBlock(text, indent, commentStr), "\n").concat(indent, " */\n");
81
100
  }
82
- return "".concat(indent).concat(commentPrefix, "\n").concat((0, _codeGen.commentBlock)(text, indent, commentStr), "\n").concat(indent, " */\n");
101
+ return "".concat(indent).concat(commentPrefix, "\n").concat(commentBlock(text, indent, commentStr), "\n").concat(indent, " */\n");
83
102
  }
84
103
  beginRegion(indent, description) {
85
104
  return "".concat(indent, "//#region ").concat(description);
@@ -90,7 +109,7 @@ class TypescriptGen extends _codeGen.CodeGen {
90
109
  declareProperty(indent, property) {
91
110
  var optional = !property.required ? '?' : '';
92
111
  var nullify = property.nullable ? ' | null' : '';
93
- if (property.name === _sdkModels.strBody) {
112
+ if (property.name === strBody) {
94
113
  property.type.refCount++;
95
114
  return this.commentHeader(indent, property.description || 'body parameter for dynamically created request type') + "".concat(indent).concat(property.name).concat(optional, ": ").concat(this.typeName(property.type)).concat(nullify);
96
115
  }
@@ -98,7 +117,7 @@ class TypescriptGen extends _codeGen.CodeGen {
98
117
  return this.commentHeader(indent, this.describeProperty(property)) + "".concat(indent).concat(this.reserve(property.name)).concat(optional, ": ").concat(mapped.name).concat(nullify);
99
118
  }
100
119
  impartial(param, mapped) {
101
- if (param.type.intrinsic || param.location !== _sdkModels.strBody) return mapped.name;
120
+ if (param.type.intrinsic || param.location !== strBody) return mapped.name;
102
121
  return "Partial<".concat(mapped.name, ">");
103
122
  }
104
123
  paramComment(param, mapped) {
@@ -106,12 +125,12 @@ class TypescriptGen extends _codeGen.CodeGen {
106
125
  if (!desc) {
107
126
  desc = this.impartial(param, mapped);
108
127
  }
109
- return "@param ".concat(param.name, " ").concat((0, _sdkModels.describeParam)(_objectSpread(_objectSpread({}, param), {
128
+ return "@param ".concat(param.name, " ").concat(describeParam(_objectSpread(_objectSpread({}, param), {}, {
110
129
  description: desc
111
130
  })));
112
131
  }
113
132
  declareParameter(indent, method, param) {
114
- var type = param.location === _sdkModels.strBody ? this.writeableType(param.type, method) || param.type : param.type;
133
+ var type = param.location === strBody ? this.writeableType(param.type, method) || param.type : param.type;
115
134
  var mapped = this.typeMap(type);
116
135
  var pOpt = '';
117
136
  mapped.name = this.impartial(param, mapped);
@@ -184,7 +203,7 @@ class TypescriptGen extends _codeGen.CodeGen {
184
203
  if (args && args.length > 0) args.forEach(p => params.push(this.declareParameter(bump, method, p)));
185
204
  fragment = params.length > 0 ? "\n".concat(params.join(this.paramDelimiter)) : '';
186
205
  }
187
- var callback = "callback: (readable: Readable) => Promise<".concat(mapped.name, ">,");
206
+ var callback = "callback: (response: Response) => Promise<".concat(mapped.name, ">,");
188
207
  var header = this.commentHeader(indent, headComment) + "".concat(indent, "async ").concat(method.name, "(") + (streamer ? "\n".concat(bump).concat(callback) : '');
189
208
  var returns = streamer ? '' : ": ".concat(this.returnType(indent, method));
190
209
  return header + fragment + (fragment ? ', ' : '') + "options?: Partial<ITransportSettings>)".concat(returns, " {\n");
@@ -215,6 +234,94 @@ class TypescriptGen extends _codeGen.CodeGen {
215
234
  var errors = this.errorResponses(indent, method);
216
235
  return "Promise<SDKResponse<".concat(mapped.name, ", ").concat(errors, ">>");
217
236
  }
237
+ customHeaderComment(term, method) {
238
+ var _method$description2;
239
+ var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
240
+ if (this.noComment) return '';
241
+ var lines = [];
242
+ lines.push("".concat(((_method$description2 = method.description) === null || _method$description2 === void 0 ? void 0 : _method$description2.trim()) || method.name, " ").concat(term));
243
+ lines.push('');
244
+ var resultType = this.typeMap(method.type).name;
245
+ lines.push("".concat(method.httpMethod, " ").concat(method.endpoint, " -> ").concat(resultType));
246
+ lines.push('');
247
+ if (method.deprecated) {
248
+ lines.push('@deprecated');
249
+ lines.push('');
250
+ }
251
+ params.forEach(p => lines.push("@param ".concat(p)));
252
+ var args = method.allParams;
253
+ if (args.length) {
254
+ var requestType = this.requestTypeName(method);
255
+ if (requestType) {
256
+ requestType = method.httpMethod === 'PATCH' ? "Partial<I".concat(requestType, ">") : "I".concat(requestType);
257
+ lines.push("@param request composed interface \"".concat(requestType, "\" for complex method parameters"));
258
+ } else {
259
+ args.forEach(p => lines.push(this.paramComment(p, this.paramMappedType(p, method))));
260
+ }
261
+ }
262
+ lines.push('@param options one-time API call overrides');
263
+ lines.push('');
264
+ return lines.join('\n');
265
+ }
266
+ defaultHookValue(type) {
267
+ var stringer = (val, ptype) => {
268
+ if (ptype instanceof EnumType) {
269
+ this.enumTypes.add(ptype.name);
270
+ return "".concat(ptype.name, ".").concat(val);
271
+ }
272
+ if (typeof val === 'string') {
273
+ return "'".concat(val, "'");
274
+ }
275
+ if (Array.isArray(val) || typeof val === 'object') {
276
+ return JSON.stringify(val);
277
+ }
278
+ return String(val);
279
+ };
280
+ var mapped = this.typeMap(type);
281
+ if (mapped.default) return mapped.default;
282
+ if (mapped.name === 'string') return "''";
283
+ if (mapped.name === 'void') return 'undefined';
284
+ if (Object.keys(type.requiredProperties).length > 0) {
285
+ this.hookTypes.add(mapped.name);
286
+ var props = [];
287
+ var inputs = type.mock({
288
+ empty: true
289
+ });
290
+ Object.keys(inputs).forEach(k => {
291
+ var val = stringer(inputs[k], type.requiredProperties[k].type);
292
+ props.push("".concat(k, ": ").concat(val));
293
+ });
294
+ return "{ ".concat(props.join(', '), " }");
295
+ }
296
+ return "{}";
297
+ }
298
+ declareHook(indent, method) {
299
+ var bump = this.bumper(indent);
300
+ var headComment = this.customHeaderComment('custom slice', method);
301
+ var defaultValue = this.defaultHookValue(method.type);
302
+ return "\n".concat(this.commentHeader(indent, headComment)).concat(indent, "export const use").concat(titleCase(method.name), " = createSdkHook({\n").concat(bump, "fetch: ").concat(method.name, ",\n").concat(bump, "initialState: ").concat(defaultValue, ",\n").concat(indent, "})");
303
+ }
304
+ mockPathArgs(method) {
305
+ var args = [];
306
+ method.pathParams.forEach(p => {
307
+ var v = p.type.mock({
308
+ fields: p.name
309
+ });
310
+ var val = this.argValue('', p, {
311
+ [p.name]: v
312
+ });
313
+ args.push("".concat(p.name, ": ").concat(val));
314
+ });
315
+ if (args.length > 0) {
316
+ return "\n## Requires:\n```ts\n{ pathArgs: { ".concat(args.join(', '), " } }\n```");
317
+ }
318
+ return '';
319
+ }
320
+ declareMock(indent, method) {
321
+ var pathArgs = this.mockPathArgs(method);
322
+ var comment = this.methodHeaderComment(method) + pathArgs;
323
+ return "".concat(this.commentHeader(indent, comment)).concat(indent, "export const ").concat(method.name, " = new MockMethod(apiSpec.methods.").concat(method.name, ");");
324
+ }
218
325
  functionSignature(indent, method) {
219
326
  var fragment;
220
327
  var requestType = this.requestTypeName(method);
@@ -244,7 +351,7 @@ class TypescriptGen extends _codeGen.CodeGen {
244
351
  declareInterface(indent, method) {
245
352
  var sig = this.methodSignature(indent, method).trimRight();
246
353
  sig = sig.replace(/^\s*async /gm, '');
247
- sig = sig.substr(0, sig.length - 2);
354
+ sig = sig.substring(0, sig.length - 2);
248
355
  return "".concat(sig, "\n");
249
356
  }
250
357
  streamerSignature(indent, method) {
@@ -255,18 +362,18 @@ class TypescriptGen extends _codeGen.CodeGen {
255
362
  return this.streamerSignature(indent, method) + this.encodePathParams(bump, method) + this.streamCall(bump, method) + "\n".concat(indent, "}");
256
363
  }
257
364
  reserve(name) {
258
- if (!(0, _sdkModels.isSpecialName)(name)) return name;
365
+ if (!isSpecialName(name)) return name;
259
366
  return "'".concat(name, "'");
260
367
  }
261
368
  typeName(type) {
262
369
  type.refCount++;
263
- if (type.customType && !(type instanceof _sdkModels.EnumType)) {
370
+ if (type.customType && !(type instanceof EnumType)) {
264
371
  return this.reserve("I".concat(type.name));
265
372
  }
266
373
  return this.reserve(type.name);
267
374
  }
268
375
  typeSignature(indent, type) {
269
- var meta = type instanceof _sdkModels.EnumType ? 'enum' : 'interface';
376
+ var meta = type instanceof EnumType ? 'enum' : 'interface';
270
377
  return this.commentHeader(indent, type.description) + "".concat(indent, "export ").concat(meta, " ").concat(this.typeName(type), " ").concat(this.typeOpen, "\n");
271
378
  }
272
379
  errorResponses(_indent, method) {
@@ -355,7 +462,13 @@ class TypescriptGen extends _codeGen.CodeGen {
355
462
  },
356
463
  byte: {
357
464
  default: mt,
358
- name: 'binary'
465
+ name: 'string',
466
+ asVal: asString
467
+ },
468
+ binary: {
469
+ default: mt,
470
+ name: 'string',
471
+ asVal: asString
359
472
  },
360
473
  date: {
361
474
  default: mt,
@@ -398,6 +511,31 @@ class TypescriptGen extends _codeGen.CodeGen {
398
511
  name: 'Password',
399
512
  asVal: asString
400
513
  },
514
+ email: {
515
+ default: mt,
516
+ name: 'string',
517
+ asVal: asString
518
+ },
519
+ uuid: {
520
+ default: mt,
521
+ name: 'string',
522
+ asVal: asString
523
+ },
524
+ hostname: {
525
+ default: mt,
526
+ name: 'string',
527
+ asVal: asString
528
+ },
529
+ ipv4: {
530
+ default: mt,
531
+ name: 'string',
532
+ asVal: asString
533
+ },
534
+ ipv6: {
535
+ default: mt,
536
+ name: 'string',
537
+ asVal: asString
538
+ },
401
539
  string: {
402
540
  default: mt,
403
541
  name: 'string',
@@ -461,5 +599,4 @@ class TypescriptGen extends _codeGen.CodeGen {
461
599
  }
462
600
  }
463
601
  }
464
- exports.TypescriptGen = TypescriptGen;
465
602
  //# sourceMappingURL=typescript.gen.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.gen.js","names":["_sdkModels","require","_codeGen","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","obj","value","_toPropertyKey","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","TypescriptGen","CodeGen","constructor","Set","reset","rtlNeeds","sdkFileName","baseFileName","_this$versions","fileName","concat","versions","spec","rtlImports","rtl","Array","from","join","rtlImportStatement","methodsPrologue","_indent","warnEditing","packageName","typeNames","apiVersion","functionsPrologue","apiRef","interfacesPrologue","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","commentHeader","indent","text","commentStr","noComment","commentPrefix","includes","commentBlock","beginRegion","description","endRegion","declareProperty","property","optional","required","nullify","nullable","name","strBody","type","refCount","typeName","mapped","typeMap","describeProperty","reserve","impartial","param","intrinsic","location","paramComment","desc","describeParam","declareParameter","method","writeableType","pOpt","default","makeTheCall","inputs","args","assignParams","fun","mono","methodHeaderComment","_method$description","params","lines","trim","resultType","httpMethod","endpoint","deprecated","responseIsBoth","responseIsBinary","p","allParams","requestType","requestTypeName","paramMappedType","methodHeaderDeclaration","streamer","fragment","bump","bumper","headComment","paramDelimiter","callback","header","returns","returnType","methodSignature","encodePathParams","indentStr","encodings","pathParams","prefix","useRequest","doEncode","accessor","declareMethod","httpCall","errors","errorResponses","functionSignature","declareFunction","itself","result","declareInterface","sig","trimRight","replace","substr","streamerSignature","declareStreamer","streamCall","isSpecialName","customType","EnumType","typeSignature","meta","typeOpen","results","map","r","httpPath","path","indexOf","argGroup","nullStr","hash","reserved","argDelimiter","argList","bits","a","argFill","current","httpArgs","request","bodyArg","queryArgs","it","toLowerCase","toUpperCase","summary","names","api","types","values","mt","asString","_","v","tsTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","password","asVal","string","uri","url","void","_i","_v","elementType","className","add","Error","JSON","stringify","exports"],"sources":["../../src/typescript.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 {\n Arg,\n ArgValues,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { describeParam, EnumType, isSpecialName, strBody } from './sdkModels'\nimport type { CodeAssignment, IMappedType } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\n\n/**\n * TypeScript code generator\n */\nexport class TypescriptGen extends CodeGen {\n /**\n * special case for TypeScript output path due to mono repository\n */\n codePath = './packages/'\n /**\n * special case for TypeScript output path due to mono repository\n */\n useFunctions = true\n useInterfaces = true\n packagePath = 'sdk/src'\n itself = 'this'\n fileExtension = '.ts'\n commentStr = '// '\n nullStr = 'null'\n transport = 'transport'\n\n argDelimiter = ', '\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n\n indentStr = ' '\n endTypeStr = '\\n}'\n willItStream = true\n useNamedParameters = false\n useNamedArguments = false\n /** Track special imports of sdk-rtl */\n rtlNeeds = new Set<string>()\n\n reset() {\n this.rtlNeeds = new Set<string>()\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.versions?.spec.key}/${baseFileName}`)\n }\n\n /** lists all special sdk-rtl import types encountered */\n rtlImports() {\n let rtl = Array.from(this.rtlNeeds).join(', ')\n if (rtl) {\n rtl += ', '\n }\n return rtl\n }\n\n /** creates a full @looker/sdk-rtl import statement if one is required */\n rtlImportStatement() {\n const rtl = this.rtlImports()\n return rtl ? `\\nimport type { ${rtl} } from '@looker/sdk-rtl'\\n` : ''\n }\n\n methodsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { I${this.packageName} } from './methodsInterface'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport class ${this.packageName} extends APIMethods implements I${\n this.packageName\n } {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n\n`\n }\n\n functionsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAPIMethods, IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\nimport { encodeParam, functionalSdk } from '@looker/sdk-rtl'\n\n/**\n * ${this.warnEditing()}\n *\n */\n\nimport { sdkVersion } from '../constants'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\n/**\n * Creates a \"functional sdk\" that knows the API and Looker release version\n * @param authSession authentication session\n */\nexport const functionalSdk${this.apiRef} = (\n authSession: IAuthSession,\n) => {\n return functionalSdk(authSession, '${this.apiVersion}', sdkVersion)\n}\n\n`\n }\n\n interfacesPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()} IAPIMethods, ITransportSettings, SDKResponse } from '@looker/sdk-rtl'\n/**\n * ${this.warnEditing()}\n *\n */\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport interface I${this.packageName} extends IAPIMethods {\n\n`\n }\n\n streamsPrologue(_indent: string): string {\n return `\nimport type { Readable } from 'readable-stream'\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings } from '@looker/sdk-rtl'\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl'\n\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants'\nimport type { ${this.typeNames().join(', ')} } from './models'\n\nexport class ${this.packageName}Stream extends APIMethods {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}Stream.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n`\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n modelsPrologue(_indent: string) {\n return `${this.rtlImportStatement()}\n/*\n * ${this.warnEditing()}\n */\n\n`\n }\n\n modelsEpilogue(_indent: string) {\n return ''\n }\n\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return ''\n const commentPrefix =\n text.includes(' License') && text.includes('Copyright (c)') ? '/*' : '/**'\n if (commentStr === ' ') {\n return `${indent}${commentPrefix}\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`\n }\n return `${indent}${commentPrefix}\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\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 declareProperty(indent: string, property: IProperty) {\n const optional = !property.required ? '?' : ''\n const nullify = property.nullable ? ' | null' : ''\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}${property.name}${optional}: ${this.typeName(\n property.type\n )}${nullify}`\n )\n }\n const mapped = this.typeMap(property.type)\n return (\n this.commentHeader(indent, this.describeProperty(property)) +\n `${indent}${this.reserve(property.name)}${optional}: ${\n mapped.name\n }${nullify}`\n )\n }\n\n /**\n * Detect need for Partial<T> vs T for a parameter type\n * @param param to cast (or not)\n * @param mapped type to cast\n */\n impartial(param: IParameter, mapped: IMappedType) {\n if (param.type.intrinsic || param.location !== strBody) return mapped.name\n return `Partial<${mapped.name}>`\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n // Don't include mapped type name for Typescript param comments in headers\n let desc = param.description || param.type.description\n if (!desc) {\n desc = this.impartial(param, mapped)\n }\n\n return `@param ${param.name} ${describeParam({\n ...param,\n ...{ description: desc },\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 mapped.name = this.impartial(param, mapped)\n if (!param.required) {\n pOpt = mapped.default ? '' : '?'\n }\n return (\n `${indent}${this.reserve(param.name)}${pOpt}: ${mapped.name}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n )\n }\n\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n const args = this.assignParams(method, inputs)\n const fun = `// functional SDK syntax is recommended for minimizing browser payloads\nlet response = await sdk.ok(${method.name}(sdk${args ? ',' : ''}`\n const mono = `// monolithic SDK syntax can also be used for Node apps\nlet response = await sdk.ok(sdk.${method.name}(`\n return `${fun}${args}))\\n${mono}${args}))`\n }\n\n methodHeaderComment(method: IMethod, params: string[] = []) {\n if (this.noComment) return ''\n const lines: string[] = []\n\n const desc = method.description?.trim()\n if (desc) {\n lines.push(desc)\n lines.push('')\n }\n\n const resultType = this.typeMap(method.type).name\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`)\n lines.push('')\n\n if (method.deprecated) {\n lines.push('@deprecated')\n lines.push('')\n }\n\n if (method.responseIsBoth()) {\n lines.push('@remarks')\n lines.push('**NOTE**: Binary content may be returned by this function.')\n lines.push('')\n } else if (method.responseIsBinary()) {\n lines.push('@remarks')\n lines.push('**NOTE**: Binary content is returned by this function.')\n lines.push('')\n }\n\n params.forEach((p) => lines.push(`@param ${p}`))\n\n const args = method.allParams\n if (args.length) {\n let requestType = this.requestTypeName(method)\n\n if (requestType) {\n requestType =\n method.httpMethod === 'PATCH'\n ? `Partial<I${requestType}>`\n : `I${requestType}`\n lines.push(\n `@param request composed interface \"${requestType}\" for complex method parameters`\n )\n } else {\n args.forEach((p) =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n )\n }\n }\n lines.push('@param options one-time API call overrides')\n lines.push('')\n\n return lines.join('\\n')\n }\n\n methodHeaderDeclaration(\n indent: string,\n method: IMethod,\n streamer = false,\n params: string[] = []\n ) {\n const mapped = this.typeMap(method.type)\n let fragment: string\n const requestType = this.requestTypeName(method)\n const bump = this.bumper(indent)\n const headComment = streamer\n ? this.methodHeaderComment(method, ['callback streaming output function'])\n : this.methodHeaderComment(method, params)\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`\n params.push(fragment)\n fragment = params.join(', ')\n } else {\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 const callback = `callback: (readable: Readable) => Promise<${mapped.name}>,`\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}async ${method.name}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n const returns = streamer ? '' : `: ${this.returnType(indent, method)}`\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>)${returns} {\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n encodePathParams(indent: string, method: IMethod) {\n const bump = indent + this.indentStr\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 encodings += `${bump}${name} = encodeParam(${name})\\n`\n }\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n /**\n * Return type declaration for the method\n * @param indent\n * @param method\n */\n returnType(indent: string, method: IMethod): string {\n const mapped = this.typeMap(method.type)\n const errors = this.errorResponses(indent, method)\n return `Promise<SDKResponse<${mapped.name}, ${errors}>>`\n }\n\n functionSignature(indent: string, method: IMethod): string {\n let fragment: string\n const requestType = this.requestTypeName(method)\n const bump = this.bumper(indent)\n const params = ['sdk: IAPIMethods']\n\n const headComment = this.methodHeaderComment(method, [\n 'sdk IAPIMethods implementation',\n ])\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`\n params.push(fragment)\n fragment = params.join(', ')\n } else {\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 const header =\n this.commentHeader(indent, headComment) +\n `${indent}export const ${method.name} = async (`\n const returns = this.returnType(indent, method)\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>): ${returns} => {\\n`\n )\n }\n\n declareFunction(indent: string, method: IMethod): string {\n const bump = this.bumper(indent)\n // horribly hacky tweak to httpCall\n this.itself = 'sdk'\n const result =\n this.functionSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n this.itself = 'this'\n return result\n }\n\n declareInterface(indent: string, method: IMethod): string {\n let sig = this.methodSignature(indent, method).trimRight()\n sig = sig.replace(/^\\s*async /gm, '')\n sig = sig.substr(0, sig.length - 2)\n return `${sig}\\n`\n }\n\n streamerSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, true)\n }\n\n declareStreamer(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.streamerSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.streamCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n reserve(name: string): string {\n if (!isSpecialName(name)) return name\n return `'${name}'`\n }\n\n /**\n * Get the language's type name for generation\n *\n * Also refcounts the type\n *\n * @param type to name\n * @private\n */\n private typeName(type: IType) {\n type.refCount++\n if (type.customType && !(type instanceof EnumType)) {\n return this.reserve(`I${type.name}`)\n }\n return this.reserve(type.name)\n }\n\n typeSignature(indent: string, type: IType) {\n const meta = type instanceof EnumType ? 'enum' : 'interface'\n return (\n this.commentHeader(indent, type.description) +\n `${indent}export ${meta} ${this.typeName(type)} ${this.typeOpen}\\n`\n )\n }\n\n errorResponses(_indent: string, method: IMethod) {\n const results: string[] = method.errorResponses.map(\n (r) => `${this.typeName(r.type)}`\n )\n return results.join(' | ')\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0)\n return `\\`${path.replace(/{/gi, '${' + prefix)}\\``\n return `'${path}'`\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)\n }\n }\n return `{${hash.join(this.argDelimiter)}}`\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(name)\n if (!prefix) return reserved\n if (reserved === name) return `${prefix}.${name}`\n return `${prefix}[${reserved}]`\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n const bits = args.map((a) => this.accessor(a, prefix))\n\n return args && args.length !== 0\n ? `\\n${indent}${bits.join(this.argDelimiter)}`\n : this.nullStr\n }\n\n // this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n argFill(current: string, args: string) {\n if (!current && args.trim() === this.nullStr) {\n // Don't append trailing optional arguments if none have been set yet\n return ''\n }\n return `${args}${current ? this.argDelimiter : ''}${current}`\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 httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n const mapped = this.typeMap(method.type)\n const bump = this.bumper(indent)\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return (\n `${indent}return ${this.it(method.httpMethod.toLowerCase())}` +\n `<${mapped.name}, ${errors}>(` +\n this.httpPath(method.endpoint, request) +\n `${args ? ', ' + args : ''})`\n )\n }\n\n streamCall(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 return `${indent}return ${this.it('authStream')}<${\n mapped.name\n }>(callback, '${method.httpMethod.toUpperCase()}', ${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})`\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text)\n }\n\n // TODO avoid duplicate code\n typeNames() {\n const names: string[] = []\n if (!this.api) return names\n const types = this.api.types\n Object.values(types)\n .filter((type) => type.refCount > 0 && !type.intrinsic)\n .forEach((type) => names.push(this.typeName(type)))\n return names\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n const mt = ''\n\n const asString: CodeAssignment = (_, v) => `'${v}'`\n const tsTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'any' },\n boolean: { default: mt, name: 'boolean' },\n // TODO can we use blob for binary somehow? https://developer.mozilla.org/en-US/docs/Web/API/Blob\n byte: { default: mt, name: 'binary' },\n date: { default: mt, name: 'Date' },\n datetime: { default: mt, name: 'Date' },\n double: { default: mt, name: 'number' },\n float: { default: mt, name: 'number' },\n int32: { default: mt, name: 'number' },\n int64: { default: mt, name: 'number' },\n integer: { default: mt, name: 'number' },\n number: { default: mt, name: 'number' },\n object: { default: mt, name: 'any' },\n password: { default: mt, name: 'Password', asVal: asString },\n string: { default: mt, name: 'string', asVal: asString },\n uri: { default: mt, name: 'Url', asVal: asString },\n url: { default: mt, name: 'Url', asVal: asString },\n void: { default: mt, name: 'void', asVal: (_i, _v: any) => '' },\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 {\n default: '[]',\n name: `${map.name}[]`,\n }\n case 'HashType':\n this.rtlNeeds.add('IDictionary')\n return {\n default: '',\n name: `IDictionary<${map.name}>`,\n }\n case 'DelimArrayType':\n this.rtlNeeds.add('DelimArray')\n return {\n default: '',\n name: `DelimArray<${map.name}>`,\n asVal: (_, v) => `new DelimArray<${map.name}>([${v}])`,\n }\n case 'EnumType':\n return {\n default: '',\n name: this.typeName(type),\n asVal: (_, v) => `${type.name}.${v}`,\n }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n const mapped = tsTypes[type.name]\n if (mapped && mapped.name === 'Url') this.rtlNeeds.add(mapped.name)\n return mapped || { default: '', name: this.typeName(type) } // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"typescript.gen.js","names":["EnumType","describeParam","isSpecialName","strBody","titleCase","CodeGen","commentBlock","TypescriptGen","constructor","arguments","_defineProperty","Set","reset","rtlNeeds","hookTypes","enumTypes","sdkFileName","baseFileName","_this$versions","fileName","concat","versions","spec","key","sdkImport","_this$versions2","_this$versions3","source","length","undefined","status","rtlImports","rtl","Array","from","join","rtlImportStatement","methodsPrologue","_indent","warnEditing","packageName","typeNames","apiVersion","mocksPrologue","mocksEpilogue","hooksPrologue","imp","valImp","Object","keys","api","methods","hooksEpilogue","functionsPrologue","apiRef","interfacesPrologue","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","commentHeader","indent","text","commentStr","noComment","commentPrefix","includes","beginRegion","description","endRegion","declareProperty","property","optional","required","nullify","nullable","name","type","refCount","typeName","mapped","typeMap","describeProperty","reserve","impartial","param","intrinsic","location","paramComment","desc","_objectSpread","declareParameter","method","writeableType","pOpt","default","makeTheCall","inputs","args","assignParams","fun","mono","methodHeaderComment","_method$description","params","lines","trim","push","resultType","httpMethod","endpoint","deprecated","responseIsBoth","responseIsBinary","forEach","p","allParams","requestType","requestTypeName","paramMappedType","methodHeaderDeclaration","streamer","fragment","bump","bumper","headComment","paramDelimiter","callback","header","returns","returnType","methodSignature","encodePathParams","indentStr","encodings","pathParams","prefix","useRequest","doEncode","accessor","declareMethod","httpCall","errors","errorResponses","customHeaderComment","term","_method$description2","defaultHookValue","stringer","val","ptype","add","isArray","JSON","stringify","String","requiredProperties","props","mock","empty","k","declareHook","defaultValue","mockPathArgs","v","fields","argValue","declareMock","pathArgs","comment","functionSignature","declareFunction","itself","result","declareInterface","sig","trimRight","replace","substring","streamerSignature","declareStreamer","streamCall","customType","typeSignature","meta","typeOpen","results","map","r","httpPath","path","indexOf","argGroup","nullStr","hash","arg","reserved","argDelimiter","argList","bits","a","argFill","current","httpArgs","request","bodyArg","queryArgs","it","toLowerCase","toUpperCase","summary","names","types","values","filter","mt","asString","_","tsTypes","any","boolean","byte","asVal","binary","date","datetime","double","float","int32","int64","integer","number","object","password","email","uuid","hostname","ipv4","ipv6","string","uri","url","void","_i","_v","elementType","className","Error"],"sources":["../../src/typescript.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 {\n Arg,\n ArgValues,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport {\n EnumType,\n describeParam,\n isSpecialName,\n strBody,\n titleCase,\n} from './sdkModels';\nimport type { CodeAssignment, IMappedType } from './codeGen';\nimport { CodeGen, commentBlock } from './codeGen';\n\n/**\n * TypeScript code generator\n */\nexport class TypescriptGen extends CodeGen {\n /**\n * special case for TypeScript output path due to mono repository\n */\n codePath = './packages/';\n /**\n * special case for TypeScript output path due to mono repository\n */\n useFunctions = true;\n useSlices = true;\n useInterfaces = true;\n packagePath = 'sdk/src';\n itself = 'this';\n fileExtension = '.ts';\n commentStr = '// ';\n nullStr = 'null';\n transport = 'transport';\n\n argDelimiter = ', ';\n paramDelimiter = ',\\n';\n propDelimiter = '\\n';\n\n indentStr = ' ';\n endTypeStr = '\\n}';\n willItStream = true;\n useNamedParameters = false;\n useNamedArguments = false;\n /** Track special imports of sdk-rtl */\n rtlNeeds = new Set<string>();\n hookTypes = new Set<string>();\n enumTypes = new Set<string>();\n\n reset() {\n this.rtlNeeds = new Set<string>();\n this.hookTypes = new Set<string>();\n this.enumTypes = new Set<string>();\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.versions?.spec.key}/${baseFileName}`);\n }\n\n /**\n * hacky conditional for which import to use for undocumented specifications\n */\n sdkImport(source = 'funcs') {\n if (this.versions?.spec.status !== 'undocumented') return '@looker/sdk';\n return `@looker/sdk/src/${this.versions?.spec.key}/${source}`;\n }\n\n /** lists all special sdk-rtl import types encountered */\n rtlImports() {\n let rtl = Array.from(this.rtlNeeds).join(', ');\n if (rtl) {\n rtl += ', ';\n }\n return rtl;\n }\n\n /** creates a full @looker/sdk-rtl import statement if one is required */\n rtlImportStatement() {\n const rtl = this.rtlImports();\n return rtl ? `\\nimport type { ${rtl} } from '@looker/sdk-rtl';\\n` : '';\n }\n\n methodsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl';\nimport { APIMethods, encodeParam } from '@looker/sdk-rtl';\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants';\nimport type { I${this.packageName} } from './methodsInterface';\nimport type { ${this.typeNames().join(', ')} } from './models';\n\nexport class ${this.packageName} extends APIMethods implements I${\n this.packageName\n } {\n static readonly ApiVersion = '${this.apiVersion}'\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion)\n this.apiVersion = ${this.packageName}.ApiVersion\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion\n }\n\n`;\n }\n\n mocksPrologue(_indent: string): string {\n return `\nimport { mockApiSpec } from '@looker/sdk-codegen-utils';\nimport { MockMethod } from '../mockMethod';\n/**\n * ${this.warnEditing()}\n *\n */\n\nconst apiSpec = mockApiSpec();\n\n`;\n }\n\n mocksEpilogue(_indent: string): string {\n return '';\n }\n\n hooksPrologue(_indent: string) {\n // TODO *** the various import permutations\n const imp = this.sdkImport();\n const valImp =\n imp === '@looker/sdk'\n ? `import { ${Array.from(this.enumTypes).join()}, ${Object.keys(\n this.api.methods\n ).join()} } from '${imp}';\n`\n : `import { ${Object.keys(this.api.methods).join()} } from '${imp}';\nimport { ${Array.from(this.enumTypes).join()} } from '${this.sdkImport(\n 'models'\n )}';\n`;\n return `\nimport { createSdkHook } from '../createSdkHook';\n\n/**\n * ${this.warnEditing()}\n *\n */\n\n${valImp}\n`;\n }\n\n hooksEpilogue(_indent: string) {\n return '';\n }\n\n functionsPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()}IAPIMethods, IAuthSession, ITransportSettings, SDKResponse } from '@looker/sdk-rtl';\nimport { encodeParam, functionalSdk } from '@looker/sdk-rtl';\n\n/**\n * ${this.warnEditing()}\n *\n */\n\nimport { sdkVersion } from '../constants';\nimport type { ${this.typeNames().join(', ')} } from './models';\n\n/**\n * Creates a \"functional sdk\" that knows the API and Looker release version\n * @param authSession authentication session\n */\nexport const functionalSdk${this.apiRef} = (\n authSession: IAuthSession,\n) => {\n return functionalSdk(authSession, '${this.apiVersion}', sdkVersion)\n};\n\n`;\n }\n\n interfacesPrologue(_indent: string) {\n return `\nimport type { ${this.rtlImports()} IAPIMethods, ITransportSettings, SDKResponse } from '@looker/sdk-rtl';\n/**\n * ${this.warnEditing()}\n *\n */\nimport type { ${this.typeNames().join(', ')} } from './models';\n\nexport interface I${this.packageName} extends IAPIMethods {\n\n`;\n }\n\n streamsPrologue(_indent: string): string {\n return `\nimport type { ${this.rtlImports()}IAuthSession, ITransportSettings } from '@looker/sdk-rtl';\nimport { APIMethods, agentPrefix, encodeParam } from '@looker/sdk-rtl';\n\n/**\n * ${this.warnEditing()}\n *\n */\nimport { sdkVersion } from '../constants';\nimport type { ${this.typeNames().join(', ')} } from './models';\n\nexport class ${this.packageName}Stream extends APIMethods {\n static readonly ApiVersion = '${this.apiVersion}';\n constructor(authSession: IAuthSession) {\n super(authSession, sdkVersion);\n this.apiVersion = ${this.packageName}Stream.ApiVersion;\n this.apiPath =\n authSession.settings.base_url === ''\n ? ''\n : authSession.settings.base_url + '/api/' + this.apiVersion;\n authSession.settings.agentTag = agentPrefix + ' Streaming ' + sdkVersion;\n }\n`;\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}';\n }\n\n modelsPrologue(_indent: string) {\n return `${this.rtlImportStatement()}\n/*\n * ${this.warnEditing()}\n */\n\n`;\n }\n\n modelsEpilogue(_indent: string) {\n return '';\n }\n\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return '';\n const commentPrefix =\n text.includes(' License') && text.includes('Copyright (c)')\n ? '/*'\n : '/**';\n if (commentStr === ' ') {\n return `${indent}${commentPrefix}\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`;\n }\n return `${indent}${commentPrefix}\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\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 declareProperty(indent: string, property: IProperty) {\n const optional = !property.required ? '?' : '';\n const nullify = property.nullable ? ' | null' : '';\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++;\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}${property.name}${optional}: ${this.typeName(\n property.type\n )}${nullify}`\n );\n }\n const mapped = this.typeMap(property.type);\n return (\n this.commentHeader(indent, this.describeProperty(property)) +\n `${indent}${this.reserve(property.name)}${optional}: ${\n mapped.name\n }${nullify}`\n );\n }\n\n /**\n * Detect need for Partial<T> vs T for a parameter type\n * @param param to cast (or not)\n * @param mapped type to cast\n */\n impartial(param: IParameter, mapped: IMappedType) {\n if (param.type.intrinsic || param.location !== strBody) return mapped.name;\n return `Partial<${mapped.name}>`;\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n // Don't include mapped type name for Typescript param comments in headers\n let desc = param.description || param.type.description;\n if (!desc) {\n desc = this.impartial(param, mapped);\n }\n\n return `@param ${param.name} ${describeParam({\n ...param,\n description: desc,\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 mapped.name = this.impartial(param, mapped);\n if (!param.required) {\n pOpt = mapped.default ? '' : '?';\n }\n return (\n `${indent}${this.reserve(param.name)}${pOpt}: ${mapped.name}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n );\n }\n\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n const args = this.assignParams(method, inputs);\n const fun = `// functional SDK syntax is recommended for minimizing browser payloads\nlet response = await sdk.ok(${method.name}(sdk${args ? ',' : ''}`;\n const mono = `// monolithic SDK syntax can also be used for Node apps\nlet response = await sdk.ok(sdk.${method.name}(`;\n return `${fun}${args}))\\n${mono}${args}))`;\n }\n\n methodHeaderComment(method: IMethod, params: string[] = []) {\n if (this.noComment) return '';\n const lines: string[] = [];\n\n const desc = method.description?.trim();\n if (desc) {\n lines.push(desc);\n lines.push('');\n }\n\n const resultType = this.typeMap(method.type).name;\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`);\n lines.push('');\n\n if (method.deprecated) {\n lines.push('@deprecated');\n lines.push('');\n }\n\n if (method.responseIsBoth()) {\n lines.push('@remarks');\n lines.push('**NOTE**: Binary content may be returned by this function.');\n lines.push('');\n } else if (method.responseIsBinary()) {\n lines.push('@remarks');\n lines.push('**NOTE**: Binary content is returned by this function.');\n lines.push('');\n }\n\n params.forEach(p => lines.push(`@param ${p}`));\n\n const args = method.allParams;\n if (args.length) {\n let requestType = this.requestTypeName(method);\n\n if (requestType) {\n requestType =\n method.httpMethod === 'PATCH'\n ? `Partial<I${requestType}>`\n : `I${requestType}`;\n lines.push(\n `@param request composed interface \"${requestType}\" for complex method parameters`\n );\n } else {\n args.forEach(p =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n );\n }\n }\n lines.push('@param options one-time API call overrides');\n lines.push('');\n\n return lines.join('\\n');\n }\n\n methodHeaderDeclaration(\n indent: string,\n method: IMethod,\n streamer = false,\n params: string[] = []\n ) {\n const mapped = this.typeMap(method.type);\n let fragment: string;\n const requestType = this.requestTypeName(method);\n const bump = this.bumper(indent);\n const headComment = streamer\n ? this.methodHeaderComment(method, ['callback streaming output function'])\n : this.methodHeaderComment(method, params);\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`;\n params.push(fragment);\n fragment = params.join(', ');\n } else {\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 const callback = `callback: (response: Response) => Promise<${mapped.name}>,`;\n const header =\n this.commentHeader(indent, headComment) +\n `${indent}async ${method.name}(` +\n (streamer ? `\\n${bump}${callback}` : '');\n const returns = streamer ? '' : `: ${this.returnType(indent, method)}`;\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>)${returns} {\\n`\n );\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false);\n }\n\n encodePathParams(indent: string, method: IMethod) {\n const bump = indent + this.indentStr;\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 encodings += `${bump}${name} = encodeParam(${name})\\n`;\n }\n }\n }\n return encodings;\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent);\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n );\n }\n\n /**\n * Return type declaration for the method\n * @param indent\n * @param method\n */\n returnType(indent: string, method: IMethod): string {\n const mapped = this.typeMap(method.type);\n const errors = this.errorResponses(indent, method);\n return `Promise<SDKResponse<${mapped.name}, ${errors}>>`;\n }\n\n customHeaderComment(term: string, method: IMethod, params: string[] = []) {\n if (this.noComment) return '';\n const lines: string[] = [];\n\n lines.push(`${method.description?.trim() || method.name} ${term}`);\n lines.push('');\n\n const resultType = this.typeMap(method.type).name;\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`);\n lines.push('');\n\n if (method.deprecated) {\n lines.push('@deprecated');\n lines.push('');\n }\n\n params.forEach(p => lines.push(`@param ${p}`));\n\n const args = method.allParams;\n if (args.length) {\n let requestType = this.requestTypeName(method);\n\n if (requestType) {\n requestType =\n method.httpMethod === 'PATCH'\n ? `Partial<I${requestType}>`\n : `I${requestType}`;\n lines.push(\n `@param request composed interface \"${requestType}\" for complex method parameters`\n );\n } else {\n args.forEach(p =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n );\n }\n }\n lines.push('@param options one-time API call overrides');\n lines.push('');\n\n return lines.join('\\n');\n }\n\n defaultHookValue(type: IType): string {\n const stringer = (val: any, ptype: IType) => {\n if (ptype instanceof EnumType) {\n this.enumTypes.add(ptype.name);\n return `${ptype.name}.${val}`;\n }\n if (typeof val === 'string') {\n return `'${val}'`;\n }\n if (Array.isArray(val) || typeof val === 'object') {\n return JSON.stringify(val);\n }\n return String(val);\n };\n const mapped = this.typeMap(type);\n if (mapped.default) return mapped.default;\n if (mapped.name === 'string') return `''`;\n if (mapped.name === 'void') return 'undefined';\n // if (\n // type.name !== 'any' &&\n // type.name.indexOf('<any>') < 0 &&\n // !type.name.startsWith('IDelimArray')\n // ) {\n if (Object.keys(type.requiredProperties).length > 0) {\n this.hookTypes.add(mapped.name);\n const props: string[] = [];\n const inputs: ArgValues = type.mock({ empty: true });\n Object.keys(inputs).forEach(k => {\n const val = stringer(inputs[k], type.requiredProperties[k].type);\n props.push(`${k}: ${val}`);\n });\n return `{ ${props.join(', ')} }`;\n }\n return `{}`;\n }\n\n declareHook(indent: string, method: IMethod): string {\n const bump = this.bumper(indent);\n const headComment = this.customHeaderComment('custom slice', method);\n const defaultValue = this.defaultHookValue(method.type);\n // const mapped = this.typeMap(method.type);\n // const frag =\n // Object.keys(method.type.requiredProperties).length > 0\n // ? `, ${mapped.name}`\n // : '';\n return `\n${this.commentHeader(indent, headComment)}${indent}export const use${titleCase(\n method.name\n )} = createSdkHook({\n${bump}fetch: ${method.name},\n${bump}initialState: ${defaultValue},\n${indent}})`;\n }\n\n mockPathArgs(method: IMethod) {\n const args: string[] = [];\n method.pathParams.forEach(p => {\n const v = p.type.mock({ fields: p.name });\n const val = this.argValue('', p, { [p.name]: v });\n args.push(`${p.name}: ${val}`);\n });\n if (args.length > 0) {\n return `\\n## Requires:\\n\\`\\`\\`ts\\n{ pathArgs: { ${args.join(\n ', '\n )} } }\\n\\`\\`\\``;\n }\n return '';\n }\n\n declareMock(indent: string, method: IMethod): string {\n const pathArgs = this.mockPathArgs(method);\n const comment = this.methodHeaderComment(method) + pathArgs;\n return `${this.commentHeader(indent, comment)}${indent}export const ${\n method.name\n } = new MockMethod(apiSpec.methods.${method.name});`;\n }\n\n functionSignature(indent: string, method: IMethod): string {\n let fragment: string;\n const requestType = this.requestTypeName(method);\n const bump = this.bumper(indent);\n const params = ['sdk: IAPIMethods'];\n\n const headComment = this.methodHeaderComment(method, [\n 'sdk IAPIMethods implementation',\n ]);\n if (requestType) {\n // use the request type that will be generated in models.ts\n // No longer using Partial<T> by default here because required and optional are supposed to be accurate\n // However, for update methods (iow, patch) Partial<T> is still necessary since only the delta gets set\n fragment =\n method.httpMethod === 'PATCH'\n ? `request: Partial<I${requestType}>`\n : `request: I${requestType}`;\n params.push(fragment);\n fragment = params.join(', ');\n } else {\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 const header =\n this.commentHeader(indent, headComment) +\n `${indent}export const ${method.name} = async (`;\n const returns = this.returnType(indent, method);\n\n return (\n header +\n fragment +\n (fragment ? ', ' : '') +\n `options?: Partial<ITransportSettings>): ${returns} => {\\n`\n );\n }\n\n declareFunction(indent: string, method: IMethod): string {\n const bump = this.bumper(indent);\n // horribly hacky tweak to httpCall\n this.itself = 'sdk';\n const result =\n this.functionSignature(indent, method) +\n this.encodePathParams(indent, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`;\n this.itself = 'this';\n return result;\n }\n\n declareInterface(indent: string, method: IMethod): string {\n let sig = this.methodSignature(indent, method).trimRight();\n sig = sig.replace(/^\\s*async /gm, '');\n sig = sig.substring(0, sig.length - 2);\n return `${sig}\\n`;\n }\n\n streamerSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, true);\n }\n\n declareStreamer(indent: string, method: IMethod) {\n const bump = this.bumper(indent);\n return (\n this.streamerSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.streamCall(bump, method) +\n `\\n${indent}}`\n );\n }\n\n reserve(name: string): string {\n if (!isSpecialName(name)) return name;\n return `'${name}'`;\n }\n\n /**\n * Get the language's type name for generation\n *\n * Also refcounts the type\n *\n * @param type to name\n * @private\n */\n private typeName(type: IType) {\n type.refCount++;\n if (type.customType && !(type instanceof EnumType)) {\n return this.reserve(`I${type.name}`);\n }\n return this.reserve(type.name);\n }\n\n typeSignature(indent: string, type: IType) {\n const meta = type instanceof EnumType ? 'enum' : 'interface';\n return (\n this.commentHeader(indent, type.description) +\n `${indent}export ${meta} ${this.typeName(type)} ${this.typeOpen}\\n`\n );\n }\n\n errorResponses(_indent: string, method: IMethod) {\n const results: string[] = method.errorResponses.map(\n r => `${this.typeName(r.type)}`\n );\n return results.join(' | ');\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || '';\n if (path.indexOf('{') >= 0)\n return `\\`${path.replace(/{/gi, '${' + prefix)}\\``;\n return `'${path}'`;\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);\n }\n }\n return `{${hash.join(this.argDelimiter)}}`;\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(name);\n if (!prefix) return reserved;\n if (reserved === name) return `${prefix}.${name}`;\n return `${prefix}[${reserved}]`;\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n const bits = args.map(a => this.accessor(a, prefix));\n\n return args && args.length !== 0\n ? `\\n${indent}${bits.join(this.argDelimiter)}`\n : this.nullStr;\n }\n\n // this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n argFill(current: string, args: string) {\n if (!current && args.trim() === this.nullStr) {\n // Don't append trailing optional arguments if none have been set yet\n return '';\n }\n return `${args}${current ? this.argDelimiter : ''}${current}`;\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 httpCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : '';\n const mapped = this.typeMap(method.type);\n const bump = this.bumper(indent);\n const args = this.httpArgs(bump, method);\n const errors = this.errorResponses(indent, method);\n return (\n `${indent}return ${this.it(method.httpMethod.toLowerCase())}` +\n `<${mapped.name}, ${errors}>(` +\n this.httpPath(method.endpoint, request) +\n `${args ? ', ' + args : ''})`\n );\n }\n\n streamCall(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 return `${indent}return ${this.it('authStream')}<${\n mapped.name\n }>(callback, '${method.httpMethod.toUpperCase()}', ${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})`;\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text);\n }\n\n // TODO avoid duplicate code\n typeNames() {\n const names: string[] = [];\n if (!this.api) return names;\n const types = this.api.types;\n Object.values(types)\n .filter(type => type.refCount > 0 && !type.intrinsic)\n .forEach(type => names.push(this.typeName(type)));\n return names;\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type);\n const mt = '';\n\n const asString: CodeAssignment = (_, v) => `'${v}'`;\n const tsTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'any' },\n boolean: { default: mt, name: 'boolean' },\n // TODO can we use blob for binary somehow? https://developer.mozilla.org/en-US/docs/Web/API/Blob\n byte: { default: mt, name: 'string' /* 'binary' */, asVal: asString },\n binary: { default: mt, name: 'string', asVal: asString },\n date: { default: mt, name: 'Date' },\n datetime: { default: mt, name: 'Date' },\n double: { default: mt, name: 'number' },\n float: { default: mt, name: 'number' },\n int32: { default: mt, name: 'number' },\n int64: { default: mt, name: 'number' },\n integer: { default: mt, name: 'number' },\n number: { default: mt, name: 'number' },\n object: { default: mt, name: 'any' },\n password: { default: mt, name: 'Password', asVal: asString },\n email: { default: mt, name: 'string', asVal: asString },\n uuid: { default: mt, name: 'string', asVal: asString },\n hostname: { default: mt, name: 'string', asVal: asString },\n ipv4: { default: mt, name: 'string', asVal: asString },\n ipv6: { default: mt, name: 'string', asVal: asString },\n string: { default: mt, name: 'string', asVal: asString },\n uri: { default: mt, name: 'Url', asVal: asString },\n url: { default: mt, name: 'Url', asVal: asString },\n void: { default: mt, name: 'void', asVal: (_i, _v: any) => '' },\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 {\n default: '[]',\n name: `${map.name}[]`,\n };\n case 'HashType':\n this.rtlNeeds.add('IDictionary');\n return {\n default: '',\n name: `IDictionary<${map.name}>`,\n };\n case 'DelimArrayType':\n this.rtlNeeds.add('DelimArray');\n return {\n default: '',\n name: `DelimArray<${map.name}>`,\n asVal: (_, v) => `new DelimArray<${map.name}>([${v}])`,\n };\n case 'EnumType':\n return {\n default: '',\n name: this.typeName(type),\n asVal: (_, v) => `${type.name}.${v}`,\n };\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`);\n }\n\n if (type.name) {\n const mapped = tsTypes[type.name];\n if (mapped && mapped.name === 'Url') this.rtlNeeds.add(mapped.name);\n return mapped || { default: '', name: this.typeName(type) }; // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.');\n }\n }\n}\n"],"mappings":";;;;;AAkCA,SACEA,QAAQ,EACRC,aAAa,EACbC,aAAa,EACbC,OAAO,EACPC,SAAS,QACJ,aAAa;AAEpB,SAASC,OAAO,EAAEC,YAAY,QAAQ,WAAW;AAKjD,OAAO,MAAMC,aAAa,SAASF,OAAO,CAAC;EAAAG,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,mBAI9B,aAAa;IAAAA,eAAA,uBAIT,IAAI;IAAAA,eAAA,oBACP,IAAI;IAAAA,eAAA,wBACA,IAAI;IAAAA,eAAA,sBACN,SAAS;IAAAA,eAAA,iBACd,MAAM;IAAAA,eAAA,wBACC,KAAK;IAAAA,eAAA,qBACR,KAAK;IAAAA,eAAA,kBACR,MAAM;IAAAA,eAAA,oBACJ,WAAW;IAAAA,eAAA,uBAER,IAAI;IAAAA,eAAA,yBACF,KAAK;IAAAA,eAAA,wBACN,IAAI;IAAAA,eAAA,oBAER,IAAI;IAAAA,eAAA,qBACH,KAAK;IAAAA,eAAA,uBACH,IAAI;IAAAA,eAAA,6BACE,KAAK;IAAAA,eAAA,4BACN,KAAK;IAAAA,eAAA,mBAEd,IAAIC,GAAG,CAAS,CAAC;IAAAD,eAAA,oBAChB,IAAIC,GAAG,CAAS,CAAC;IAAAD,eAAA,oBACjB,IAAIC,GAAG,CAAS,CAAC;EAAA;EAE7BC,KAAKA,CAAA,EAAG;IACN,IAAI,CAACC,QAAQ,GAAG,IAAIF,GAAG,CAAS,CAAC;IACjC,IAAI,CAACG,SAAS,GAAG,IAAIH,GAAG,CAAS,CAAC;IAClC,IAAI,CAACI,SAAS,GAAG,IAAIJ,GAAG,CAAS,CAAC;EACpC;EAEAK,WAAWA,CAACC,YAAoB,EAAE;IAAA,IAAAC,cAAA;IAChC,OAAO,IAAI,CAACC,QAAQ,IAAAC,MAAA,EAAAF,cAAA,GAAI,IAAI,CAACG,QAAQ,cAAAH,cAAA,uBAAbA,cAAA,CAAeI,IAAI,CAACC,GAAG,OAAAH,MAAA,CAAIH,YAAY,CAAE,CAAC;EACpE;EAKAO,SAASA,CAAA,EAAmB;IAAA,IAAAC,eAAA,EAAAC,eAAA;IAAA,IAAlBC,MAAM,GAAAlB,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,OAAO;IACxB,IAAI,EAAAgB,eAAA,OAAI,CAACJ,QAAQ,cAAAI,eAAA,uBAAbA,eAAA,CAAeH,IAAI,CAACQ,MAAM,MAAK,cAAc,EAAE,OAAO,aAAa;IACvE,0BAAAV,MAAA,EAAAM,eAAA,GAA0B,IAAI,CAACL,QAAQ,cAAAK,eAAA,uBAAbA,eAAA,CAAeJ,IAAI,CAACC,GAAG,OAAAH,MAAA,CAAIO,MAAM;EAC7D;EAGAI,UAAUA,CAAA,EAAG;IACX,IAAIC,GAAG,GAAGC,KAAK,CAACC,IAAI,CAAC,IAAI,CAACrB,QAAQ,CAAC,CAACsB,IAAI,CAAC,IAAI,CAAC;IAC9C,IAAIH,GAAG,EAAE;MACPA,GAAG,IAAI,IAAI;IACb;IACA,OAAOA,GAAG;EACZ;EAGAI,kBAAkBA,CAAA,EAAG;IACnB,IAAMJ,GAAG,GAAG,IAAI,CAACD,UAAU,CAAC,CAAC;IAC7B,OAAOC,GAAG,sBAAAZ,MAAA,CAAsBY,GAAG,oCAAiC,EAAE;EACxE;EAEAK,eAAeA,CAACC,OAAe,EAAE;IAC/B,0BAAAlB,MAAA,CACY,IAAI,CAACW,UAAU,CAAC,CAAC,mJAAAX,MAAA,CAG5B,IAAI,CAACmB,WAAW,CAAC,CAAC,4EAAAnB,MAAA,CAIN,IAAI,CAACoB,WAAW,mDAAApB,MAAA,CACjB,IAAI,CAACqB,SAAS,CAAC,CAAC,CAACN,IAAI,CAAC,IAAI,CAAC,0CAAAf,MAAA,CAE5B,IAAI,CAACoB,WAAW,sCAAApB,MAAA,CACzB,IAAI,CAACoB,WAAW,0CAAApB,MAAA,CAEY,IAAI,CAACsB,UAAU,+GAAAtB,MAAA,CAGzB,IAAI,CAACoB,WAAW;EAQtC;EAEAG,aAAaA,CAACL,OAAe,EAAU;IACrC,2HAAAlB,MAAA,CAIC,IAAI,CAACmB,WAAW,CAAC,CAAC;EAOrB;EAEAK,aAAaA,CAACN,OAAe,EAAU;IACrC,OAAO,EAAE;EACX;EAEAO,aAAaA,CAACP,OAAe,EAAE;IAE7B,IAAMQ,GAAG,GAAG,IAAI,CAACtB,SAAS,CAAC,CAAC;IAC5B,IAAMuB,MAAM,GACVD,GAAG,KAAK,aAAa,eAAA1B,MAAA,CACLa,KAAK,CAACC,IAAI,CAAC,IAAI,CAACnB,SAAS,CAAC,CAACoB,IAAI,CAAC,CAAC,QAAAf,MAAA,CAAK4B,MAAM,CAACC,IAAI,CAC3D,IAAI,CAACC,GAAG,CAACC,OACX,CAAC,CAAChB,IAAI,CAAC,CAAC,eAAAf,MAAA,CAAY0B,GAAG,wBAAA1B,MAAA,CAEX4B,MAAM,CAACC,IAAI,CAAC,IAAI,CAACC,GAAG,CAACC,OAAO,CAAC,CAAChB,IAAI,CAAC,CAAC,eAAAf,MAAA,CAAY0B,GAAG,mBAAA1B,MAAA,CAC9Da,KAAK,CAACC,IAAI,CAAC,IAAI,CAACnB,SAAS,CAAC,CAACoB,IAAI,CAAC,CAAC,eAAAf,MAAA,CAAY,IAAI,CAACI,SAAS,CAC1D,QACF,CAAC,SACV;IACG,yEAAAJ,MAAA,CAIC,IAAI,CAACmB,WAAW,CAAC,CAAC,mBAAAnB,MAAA,CAIrB2B,MAAM;EAEN;EAEAK,aAAaA,CAACd,OAAe,EAAE;IAC7B,OAAO,EAAE;EACX;EAEAe,iBAAiBA,CAACf,OAAe,EAAE;IACjC,0BAAAlB,MAAA,CACY,IAAI,CAACW,UAAU,CAAC,CAAC,qKAAAX,MAAA,CAI5B,IAAI,CAACmB,WAAW,CAAC,CAAC,6EAAAnB,MAAA,CAKP,IAAI,CAACqB,SAAS,CAAC,CAAC,CAACN,IAAI,CAAC,IAAI,CAAC,8LAAAf,MAAA,CAMf,IAAI,CAACkC,MAAM,uFAAAlC,MAAA,CAGA,IAAI,CAACsB,UAAU;EAIpD;EAEAa,kBAAkBA,CAACjB,OAAe,EAAE;IAClC,0BAAAlB,MAAA,CACY,IAAI,CAACW,UAAU,CAAC,CAAC,uFAAAX,MAAA,CAE5B,IAAI,CAACmB,WAAW,CAAC,CAAC,+BAAAnB,MAAA,CAGP,IAAI,CAACqB,SAAS,CAAC,CAAC,CAACN,IAAI,CAAC,IAAI,CAAC,+CAAAf,MAAA,CAEvB,IAAI,CAACoB,WAAW;EAGlC;EAEAgB,eAAeA,CAAClB,OAAe,EAAU;IACvC,0BAAAlB,MAAA,CACY,IAAI,CAACW,UAAU,CAAC,CAAC,qJAAAX,MAAA,CAI5B,IAAI,CAACmB,WAAW,CAAC,CAAC,2EAAAnB,MAAA,CAIP,IAAI,CAACqB,SAAS,CAAC,CAAC,CAACN,IAAI,CAAC,IAAI,CAAC,0CAAAf,MAAA,CAE5B,IAAI,CAACoB,WAAW,mEAAApB,MAAA,CACG,IAAI,CAACsB,UAAU,iHAAAtB,MAAA,CAGzB,IAAI,CAACoB,WAAW;EAQtC;EAEAiB,eAAeA,CAACnB,OAAe,EAAE;IAC/B,OAAO,KAAK;EACd;EAEAoB,cAAcA,CAACpB,OAAe,EAAE;IAC9B,UAAAlB,MAAA,CAAU,IAAI,CAACgB,kBAAkB,CAAC,CAAC,eAAAhB,MAAA,CAElC,IAAI,CAACmB,WAAW,CAAC,CAAC;EAIrB;EAEAoB,cAAcA,CAACrB,OAAe,EAAE;IAC9B,OAAO,EAAE;EACX;EAEAsB,aAAaA,CAACC,MAAc,EAAEC,IAAwB,EAAsB;IAAA,IAApBC,UAAU,GAAAtD,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,KAAK;IACxE,IAAI,IAAI,CAACuD,SAAS,IAAI,CAACF,IAAI,EAAE,OAAO,EAAE;IACtC,IAAMG,aAAa,GACjBH,IAAI,CAACI,QAAQ,CAAC,UAAU,CAAC,IAAIJ,IAAI,CAACI,QAAQ,CAAC,eAAe,CAAC,GACvD,IAAI,GACJ,KAAK;IACX,IAAIH,UAAU,KAAK,GAAG,EAAE;MACtB,UAAA3C,MAAA,CAAUyC,MAAM,EAAAzC,MAAA,CAAG6C,aAAa,UAAA7C,MAAA,CAAOd,YAAY,CACjDwD,IAAI,EACJD,MAAM,EACNE,UACF,CAAC,QAAA3C,MAAA,CAAKyC,MAAM;IACd;IACA,UAAAzC,MAAA,CAAUyC,MAAM,EAAAzC,MAAA,CAAG6C,aAAa,QAAA7C,MAAA,CAAKd,YAAY,CAC/CwD,IAAI,EACJD,MAAM,EACNE,UACF,CAAC,QAAA3C,MAAA,CAAKyC,MAAM;EACd;EAEAM,WAAWA,CAACN,MAAc,EAAEO,WAAmB,EAAU;IACvD,UAAAhD,MAAA,CAAUyC,MAAM,gBAAAzC,MAAA,CAAagD,WAAW;EAC1C;EAEAC,SAASA,CAACR,MAAc,EAAEO,WAAmB,EAAU;IACrD,UAAAhD,MAAA,CAAUyC,MAAM,mBAAAzC,MAAA,CAAgBgD,WAAW;EAC7C;EAEAE,eAAeA,CAACT,MAAc,EAAEU,QAAmB,EAAE;IACnD,IAAMC,QAAQ,GAAG,CAACD,QAAQ,CAACE,QAAQ,GAAG,GAAG,GAAG,EAAE;IAC9C,IAAMC,OAAO,GAAGH,QAAQ,CAACI,QAAQ,GAAG,SAAS,GAAG,EAAE;IAClD,IAAIJ,QAAQ,CAACK,IAAI,KAAKzE,OAAO,EAAE;MAE7BoE,QAAQ,CAACM,IAAI,CAACC,QAAQ,EAAE;MACxB,OACE,IAAI,CAAClB,aAAa,CAChBC,MAAM,EACNU,QAAQ,CAACH,WAAW,IAClB,qDACJ,CAAC,MAAAhD,MAAA,CACEyC,MAAM,EAAAzC,MAAA,CAAGmD,QAAQ,CAACK,IAAI,EAAAxD,MAAA,CAAGoD,QAAQ,QAAApD,MAAA,CAAK,IAAI,CAAC2D,QAAQ,CACpDR,QAAQ,CAACM,IACX,CAAC,EAAAzD,MAAA,CAAGsD,OAAO,CAAE;IAEjB;IACA,IAAMM,MAAM,GAAG,IAAI,CAACC,OAAO,CAACV,QAAQ,CAACM,IAAI,CAAC;IAC1C,OACE,IAAI,CAACjB,aAAa,CAACC,MAAM,EAAE,IAAI,CAACqB,gBAAgB,CAACX,QAAQ,CAAC,CAAC,MAAAnD,MAAA,CACxDyC,MAAM,EAAAzC,MAAA,CAAG,IAAI,CAAC+D,OAAO,CAACZ,QAAQ,CAACK,IAAI,CAAC,EAAAxD,MAAA,CAAGoD,QAAQ,QAAApD,MAAA,CAChD4D,MAAM,CAACJ,IAAI,EAAAxD,MAAA,CACVsD,OAAO,CAAE;EAEhB;EAOAU,SAASA,CAACC,KAAiB,EAAEL,MAAmB,EAAE;IAChD,IAAIK,KAAK,CAACR,IAAI,CAACS,SAAS,IAAID,KAAK,CAACE,QAAQ,KAAKpF,OAAO,EAAE,OAAO6E,MAAM,CAACJ,IAAI;IAC1E,kBAAAxD,MAAA,CAAkB4D,MAAM,CAACJ,IAAI;EAC/B;EAEAY,YAAYA,CAACH,KAAiB,EAAEL,MAAmB,EAAE;IAEnD,IAAIS,IAAI,GAAGJ,KAAK,CAACjB,WAAW,IAAIiB,KAAK,CAACR,IAAI,CAACT,WAAW;IACtD,IAAI,CAACqB,IAAI,EAAE;MACTA,IAAI,GAAG,IAAI,CAACL,SAAS,CAACC,KAAK,EAAEL,MAAM,CAAC;IACtC;IAEA,iBAAA5D,MAAA,CAAiBiE,KAAK,CAACT,IAAI,OAAAxD,MAAA,CAAInB,aAAa,CAAAyF,aAAA,CAAAA,aAAA,KACvCL,KAAK;MACRjB,WAAW,EAAEqB;IAAI,EAClB,CAAC;EACJ;EAEAE,gBAAgBA,CAAC9B,MAAc,EAAE+B,MAAe,EAAEP,KAAiB,EAAE;IACnE,IAAMR,IAAI,GACRQ,KAAK,CAACE,QAAQ,KAAKpF,OAAO,GACtB,IAAI,CAAC0F,aAAa,CAACR,KAAK,CAACR,IAAI,EAAEe,MAAM,CAAC,IAAIP,KAAK,CAACR,IAAI,GACpDQ,KAAK,CAACR,IAAI;IAChB,IAAMG,MAAM,GAAG,IAAI,CAACC,OAAO,CAACJ,IAAI,CAAC;IACjC,IAAIiB,IAAI,GAAG,EAAE;IACbd,MAAM,CAACJ,IAAI,GAAG,IAAI,CAACQ,SAAS,CAACC,KAAK,EAAEL,MAAM,CAAC;IAC3C,IAAI,CAACK,KAAK,CAACZ,QAAQ,EAAE;MACnBqB,IAAI,GAAGd,MAAM,CAACe,OAAO,GAAG,EAAE,GAAG,GAAG;IAClC;IACA,OACE,GAAA3E,MAAA,CAAGyC,MAAM,EAAAzC,MAAA,CAAG,IAAI,CAAC+D,OAAO,CAACE,KAAK,CAACT,IAAI,CAAC,EAAAxD,MAAA,CAAG0E,IAAI,QAAA1E,MAAA,CAAK4D,MAAM,CAACJ,IAAI,KAC1DS,KAAK,CAACZ,QAAQ,GAAG,EAAE,GAAGO,MAAM,CAACe,OAAO,SAAA3E,MAAA,CAAS4D,MAAM,CAACe,OAAO,IAAK,EAAE,CAAC;EAExE;EAEAC,WAAWA,CAACJ,MAAe,EAAEK,MAAiB,EAAU;IACtD,IAAMC,IAAI,GAAG,IAAI,CAACC,YAAY,CAACP,MAAM,EAAEK,MAAM,CAAC;IAC9C,IAAMG,GAAG,2GAAAhF,MAAA,CACiBwE,MAAM,CAAChB,IAAI,UAAAxD,MAAA,CAAO8E,IAAI,GAAG,GAAG,GAAG,EAAE,CAAE;IAC7D,IAAMG,IAAI,+FAAAjF,MAAA,CACoBwE,MAAM,CAAChB,IAAI,MAAG;IAC5C,UAAAxD,MAAA,CAAUgF,GAAG,EAAAhF,MAAA,CAAG8E,IAAI,UAAA9E,MAAA,CAAOiF,IAAI,EAAAjF,MAAA,CAAG8E,IAAI;EACxC;EAEAI,mBAAmBA,CAACV,MAAe,EAAyB;IAAA,IAAAW,mBAAA;IAAA,IAAvBC,MAAgB,GAAA/F,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,EAAE;IACxD,IAAI,IAAI,CAACuD,SAAS,EAAE,OAAO,EAAE;IAC7B,IAAMyC,KAAe,GAAG,EAAE;IAE1B,IAAMhB,IAAI,IAAAc,mBAAA,GAAGX,MAAM,CAACxB,WAAW,cAAAmC,mBAAA,uBAAlBA,mBAAA,CAAoBG,IAAI,CAAC,CAAC;IACvC,IAAIjB,IAAI,EAAE;MACRgB,KAAK,CAACE,IAAI,CAAClB,IAAI,CAAC;MAChBgB,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAChB;IAEA,IAAMC,UAAU,GAAG,IAAI,CAAC3B,OAAO,CAACW,MAAM,CAACf,IAAI,CAAC,CAACD,IAAI;IACjD6B,KAAK,CAACE,IAAI,IAAAvF,MAAA,CAAIwE,MAAM,CAACiB,UAAU,OAAAzF,MAAA,CAAIwE,MAAM,CAACkB,QAAQ,UAAA1F,MAAA,CAAOwF,UAAU,CAAE,CAAC;IACtEH,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAEd,IAAIf,MAAM,CAACmB,UAAU,EAAE;MACrBN,KAAK,CAACE,IAAI,CAAC,aAAa,CAAC;MACzBF,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAChB;IAEA,IAAIf,MAAM,CAACoB,cAAc,CAAC,CAAC,EAAE;MAC3BP,KAAK,CAACE,IAAI,CAAC,UAAU,CAAC;MACtBF,KAAK,CAACE,IAAI,CAAC,4DAA4D,CAAC;MACxEF,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAChB,CAAC,MAAM,IAAIf,MAAM,CAACqB,gBAAgB,CAAC,CAAC,EAAE;MACpCR,KAAK,CAACE,IAAI,CAAC,UAAU,CAAC;MACtBF,KAAK,CAACE,IAAI,CAAC,wDAAwD,CAAC;MACpEF,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAChB;IAEAH,MAAM,CAACU,OAAO,CAACC,CAAC,IAAIV,KAAK,CAACE,IAAI,WAAAvF,MAAA,CAAW+F,CAAC,CAAE,CAAC,CAAC;IAE9C,IAAMjB,IAAI,GAAGN,MAAM,CAACwB,SAAS;IAC7B,IAAIlB,IAAI,CAACtE,MAAM,EAAE;MACf,IAAIyF,WAAW,GAAG,IAAI,CAACC,eAAe,CAAC1B,MAAM,CAAC;MAE9C,IAAIyB,WAAW,EAAE;QACfA,WAAW,GACTzB,MAAM,CAACiB,UAAU,KAAK,OAAO,eAAAzF,MAAA,CACbiG,WAAW,aAAAjG,MAAA,CACnBiG,WAAW,CAAE;QACvBZ,KAAK,CAACE,IAAI,wCAAAvF,MAAA,CAC8BiG,WAAW,qCACnD,CAAC;MACH,CAAC,MAAM;QACLnB,IAAI,CAACgB,OAAO,CAACC,CAAC,IACZV,KAAK,CAACE,IAAI,CAAC,IAAI,CAACnB,YAAY,CAAC2B,CAAC,EAAE,IAAI,CAACI,eAAe,CAACJ,CAAC,EAAEvB,MAAM,CAAC,CAAC,CAClE,CAAC;MACH;IACF;IACAa,KAAK,CAACE,IAAI,CAAC,4CAA4C,CAAC;IACxDF,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAEd,OAAOF,KAAK,CAACtE,IAAI,CAAC,IAAI,CAAC;EACzB;EAEAqF,uBAAuBA,CACrB3D,MAAc,EACd+B,MAAe,EAGf;IAAA,IAFA6B,QAAQ,GAAAhH,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,KAAK;IAAA,IAChB+F,MAAgB,GAAA/F,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,EAAE;IAErB,IAAMuE,MAAM,GAAG,IAAI,CAACC,OAAO,CAACW,MAAM,CAACf,IAAI,CAAC;IACxC,IAAI6C,QAAgB;IACpB,IAAML,WAAW,GAAG,IAAI,CAACC,eAAe,CAAC1B,MAAM,CAAC;IAChD,IAAM+B,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAChC,IAAMgE,WAAW,GAAGJ,QAAQ,GACxB,IAAI,CAACnB,mBAAmB,CAACV,MAAM,EAAE,CAAC,oCAAoC,CAAC,CAAC,GACxE,IAAI,CAACU,mBAAmB,CAACV,MAAM,EAAEY,MAAM,CAAC;IAC5C,IAAIa,WAAW,EAAE;MAIfK,QAAQ,GACN9B,MAAM,CAACiB,UAAU,KAAK,OAAO,wBAAAzF,MAAA,CACJiG,WAAW,sBAAAjG,MAAA,CACnBiG,WAAW,CAAE;MAChCb,MAAM,CAACG,IAAI,CAACe,QAAQ,CAAC;MACrBA,QAAQ,GAAGlB,MAAM,CAACrE,IAAI,CAAC,IAAI,CAAC;IAC9B,CAAC,MAAM;MACL,IAAM+D,IAAI,GAAGN,MAAM,CAACwB,SAAS;MAC7B,IAAIlB,IAAI,IAAIA,IAAI,CAACtE,MAAM,GAAG,CAAC,EACzBsE,IAAI,CAACgB,OAAO,CAACC,CAAC,IAAIX,MAAM,CAACG,IAAI,CAAC,IAAI,CAAChB,gBAAgB,CAACgC,IAAI,EAAE/B,MAAM,EAAEuB,CAAC,CAAC,CAAC,CAAC;MACxEO,QAAQ,GACNlB,MAAM,CAAC5E,MAAM,GAAG,CAAC,QAAAR,MAAA,CAAQoF,MAAM,CAACrE,IAAI,CAAC,IAAI,CAAC2F,cAAc,CAAC,IAAK,EAAE;IACpE;IACA,IAAMC,QAAQ,gDAAA3G,MAAA,CAAgD4D,MAAM,CAACJ,IAAI,OAAI;IAC7E,IAAMoD,MAAM,GACV,IAAI,CAACpE,aAAa,CAACC,MAAM,EAAEgE,WAAW,CAAC,MAAAzG,MAAA,CACpCyC,MAAM,YAAAzC,MAAA,CAASwE,MAAM,CAAChB,IAAI,MAAG,IAC/B6C,QAAQ,QAAArG,MAAA,CAAQuG,IAAI,EAAAvG,MAAA,CAAG2G,QAAQ,IAAK,EAAE,CAAC;IAC1C,IAAME,OAAO,GAAGR,QAAQ,GAAG,EAAE,QAAArG,MAAA,CAAQ,IAAI,CAAC8G,UAAU,CAACrE,MAAM,EAAE+B,MAAM,CAAC,CAAE;IAEtE,OACEoC,MAAM,GACNN,QAAQ,IACPA,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC,4CAAAtG,MAAA,CACmB6G,OAAO,SAAM;EAE1D;EAEAE,eAAeA,CAACtE,MAAc,EAAE+B,MAAe,EAAE;IAC/C,OAAO,IAAI,CAAC4B,uBAAuB,CAAC3D,MAAM,EAAE+B,MAAM,EAAE,KAAK,CAAC;EAC5D;EAEAwC,gBAAgBA,CAACvE,MAAc,EAAE+B,MAAe,EAAE;IAChD,IAAM+B,IAAI,GAAG9D,MAAM,GAAG,IAAI,CAACwE,SAAS;IACpC,IAAIC,SAAS,GAAG,EAAE;IAClB,IAAI1C,MAAM,CAAC2C,UAAU,CAAC3G,MAAM,GAAG,CAAC,EAAE;MAChC,IAAM4G,MAAM,GAAG,IAAI,CAACC,UAAU,CAAC7C,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE;MACvD,KAAK,IAAMP,KAAK,IAAIO,MAAM,CAAC2C,UAAU,EAAE;QACrC,IAAIlD,KAAK,CAACqD,QAAQ,CAAC,CAAC,EAAE;UACpB,IAAM9D,IAAI,GAAG,IAAI,CAAC+D,QAAQ,CAACtD,KAAK,CAACT,IAAI,EAAE4D,MAAM,CAAC;UAC9CF,SAAS,OAAAlH,MAAA,CAAOuG,IAAI,EAAAvG,MAAA,CAAGwD,IAAI,qBAAAxD,MAAA,CAAkBwD,IAAI,QAAK;QACxD;MACF;IACF;IACA,OAAO0D,SAAS;EAClB;EAEAM,aAAaA,CAAC/E,MAAc,EAAE+B,MAAe,EAAE;IAC7C,IAAM+B,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAChC,OACE,IAAI,CAACsE,eAAe,CAACtE,MAAM,EAAE+B,MAAM,CAAC,GACpC,IAAI,CAACwC,gBAAgB,CAACvE,MAAM,EAAE+B,MAAM,CAAC,GACrC,IAAI,CAACiD,QAAQ,CAAClB,IAAI,EAAE/B,MAAM,CAAC,QAAAxE,MAAA,CACtByC,MAAM,MAAG;EAElB;EAOAqE,UAAUA,CAACrE,MAAc,EAAE+B,MAAe,EAAU;IAClD,IAAMZ,MAAM,GAAG,IAAI,CAACC,OAAO,CAACW,MAAM,CAACf,IAAI,CAAC;IACxC,IAAMiE,MAAM,GAAG,IAAI,CAACC,cAAc,CAAClF,MAAM,EAAE+B,MAAM,CAAC;IAClD,8BAAAxE,MAAA,CAA8B4D,MAAM,CAACJ,IAAI,QAAAxD,MAAA,CAAK0H,MAAM;EACtD;EAEAE,mBAAmBA,CAACC,IAAY,EAAErD,MAAe,EAAyB;IAAA,IAAAsD,oBAAA;IAAA,IAAvB1C,MAAgB,GAAA/F,SAAA,CAAAmB,MAAA,QAAAnB,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,EAAE;IACtE,IAAI,IAAI,CAACuD,SAAS,EAAE,OAAO,EAAE;IAC7B,IAAMyC,KAAe,GAAG,EAAE;IAE1BA,KAAK,CAACE,IAAI,IAAAvF,MAAA,CAAI,EAAA8H,oBAAA,GAAAtD,MAAM,CAACxB,WAAW,cAAA8E,oBAAA,uBAAlBA,oBAAA,CAAoBxC,IAAI,CAAC,CAAC,KAAId,MAAM,CAAChB,IAAI,OAAAxD,MAAA,CAAI6H,IAAI,CAAE,CAAC;IAClExC,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAEd,IAAMC,UAAU,GAAG,IAAI,CAAC3B,OAAO,CAACW,MAAM,CAACf,IAAI,CAAC,CAACD,IAAI;IACjD6B,KAAK,CAACE,IAAI,IAAAvF,MAAA,CAAIwE,MAAM,CAACiB,UAAU,OAAAzF,MAAA,CAAIwE,MAAM,CAACkB,QAAQ,UAAA1F,MAAA,CAAOwF,UAAU,CAAE,CAAC;IACtEH,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAEd,IAAIf,MAAM,CAACmB,UAAU,EAAE;MACrBN,KAAK,CAACE,IAAI,CAAC,aAAa,CAAC;MACzBF,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAChB;IAEAH,MAAM,CAACU,OAAO,CAACC,CAAC,IAAIV,KAAK,CAACE,IAAI,WAAAvF,MAAA,CAAW+F,CAAC,CAAE,CAAC,CAAC;IAE9C,IAAMjB,IAAI,GAAGN,MAAM,CAACwB,SAAS;IAC7B,IAAIlB,IAAI,CAACtE,MAAM,EAAE;MACf,IAAIyF,WAAW,GAAG,IAAI,CAACC,eAAe,CAAC1B,MAAM,CAAC;MAE9C,IAAIyB,WAAW,EAAE;QACfA,WAAW,GACTzB,MAAM,CAACiB,UAAU,KAAK,OAAO,eAAAzF,MAAA,CACbiG,WAAW,aAAAjG,MAAA,CACnBiG,WAAW,CAAE;QACvBZ,KAAK,CAACE,IAAI,wCAAAvF,MAAA,CAC8BiG,WAAW,qCACnD,CAAC;MACH,CAAC,MAAM;QACLnB,IAAI,CAACgB,OAAO,CAACC,CAAC,IACZV,KAAK,CAACE,IAAI,CAAC,IAAI,CAACnB,YAAY,CAAC2B,CAAC,EAAE,IAAI,CAACI,eAAe,CAACJ,CAAC,EAAEvB,MAAM,CAAC,CAAC,CAClE,CAAC;MACH;IACF;IACAa,KAAK,CAACE,IAAI,CAAC,4CAA4C,CAAC;IACxDF,KAAK,CAACE,IAAI,CAAC,EAAE,CAAC;IAEd,OAAOF,KAAK,CAACtE,IAAI,CAAC,IAAI,CAAC;EACzB;EAEAgH,gBAAgBA,CAACtE,IAAW,EAAU;IACpC,IAAMuE,QAAQ,GAAGA,CAACC,GAAQ,EAAEC,KAAY,KAAK;MAC3C,IAAIA,KAAK,YAAYtJ,QAAQ,EAAE;QAC7B,IAAI,CAACe,SAAS,CAACwI,GAAG,CAACD,KAAK,CAAC1E,IAAI,CAAC;QAC9B,UAAAxD,MAAA,CAAUkI,KAAK,CAAC1E,IAAI,OAAAxD,MAAA,CAAIiI,GAAG;MAC7B;MACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;QAC3B,WAAAjI,MAAA,CAAWiI,GAAG;MAChB;MACA,IAAIpH,KAAK,CAACuH,OAAO,CAACH,GAAG,CAAC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;QACjD,OAAOI,IAAI,CAACC,SAAS,CAACL,GAAG,CAAC;MAC5B;MACA,OAAOM,MAAM,CAACN,GAAG,CAAC;IACpB,CAAC;IACD,IAAMrE,MAAM,GAAG,IAAI,CAACC,OAAO,CAACJ,IAAI,CAAC;IACjC,IAAIG,MAAM,CAACe,OAAO,EAAE,OAAOf,MAAM,CAACe,OAAO;IACzC,IAAIf,MAAM,CAACJ,IAAI,KAAK,QAAQ,EAAE;IAC9B,IAAII,MAAM,CAACJ,IAAI,KAAK,MAAM,EAAE,OAAO,WAAW;IAM9C,IAAI5B,MAAM,CAACC,IAAI,CAAC4B,IAAI,CAAC+E,kBAAkB,CAAC,CAAChI,MAAM,GAAG,CAAC,EAAE;MACnD,IAAI,CAACd,SAAS,CAACyI,GAAG,CAACvE,MAAM,CAACJ,IAAI,CAAC;MAC/B,IAAMiF,KAAe,GAAG,EAAE;MAC1B,IAAM5D,MAAiB,GAAGpB,IAAI,CAACiF,IAAI,CAAC;QAAEC,KAAK,EAAE;MAAK,CAAC,CAAC;MACpD/G,MAAM,CAACC,IAAI,CAACgD,MAAM,CAAC,CAACiB,OAAO,CAAC8C,CAAC,IAAI;QAC/B,IAAMX,GAAG,GAAGD,QAAQ,CAACnD,MAAM,CAAC+D,CAAC,CAAC,EAAEnF,IAAI,CAAC+E,kBAAkB,CAACI,CAAC,CAAC,CAACnF,IAAI,CAAC;QAChEgF,KAAK,CAAClD,IAAI,IAAAvF,MAAA,CAAI4I,CAAC,QAAA5I,MAAA,CAAKiI,GAAG,CAAE,CAAC;MAC5B,CAAC,CAAC;MACF,YAAAjI,MAAA,CAAYyI,KAAK,CAAC1H,IAAI,CAAC,IAAI,CAAC;IAC9B;IACA;EACF;EAEA8H,WAAWA,CAACpG,MAAc,EAAE+B,MAAe,EAAU;IACnD,IAAM+B,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAChC,IAAMgE,WAAW,GAAG,IAAI,CAACmB,mBAAmB,CAAC,cAAc,EAAEpD,MAAM,CAAC;IACpE,IAAMsE,YAAY,GAAG,IAAI,CAACf,gBAAgB,CAACvD,MAAM,CAACf,IAAI,CAAC;IAMvD,YAAAzD,MAAA,CACF,IAAI,CAACwC,aAAa,CAACC,MAAM,EAAEgE,WAAW,CAAC,EAAAzG,MAAA,CAAGyC,MAAM,sBAAAzC,MAAA,CAAmBhB,SAAS,CACxEwF,MAAM,CAAChB,IACT,CAAC,0BAAAxD,MAAA,CACHuG,IAAI,aAAAvG,MAAA,CAAUwE,MAAM,CAAChB,IAAI,SAAAxD,MAAA,CACzBuG,IAAI,oBAAAvG,MAAA,CAAiB8I,YAAY,SAAA9I,MAAA,CACjCyC,MAAM;EACN;EAEAsG,YAAYA,CAACvE,MAAe,EAAE;IAC5B,IAAMM,IAAc,GAAG,EAAE;IACzBN,MAAM,CAAC2C,UAAU,CAACrB,OAAO,CAACC,CAAC,IAAI;MAC7B,IAAMiD,CAAC,GAAGjD,CAAC,CAACtC,IAAI,CAACiF,IAAI,CAAC;QAAEO,MAAM,EAAElD,CAAC,CAACvC;MAAK,CAAC,CAAC;MACzC,IAAMyE,GAAG,GAAG,IAAI,CAACiB,QAAQ,CAAC,EAAE,EAAEnD,CAAC,EAAE;QAAE,CAACA,CAAC,CAACvC,IAAI,GAAGwF;MAAE,CAAC,CAAC;MACjDlE,IAAI,CAACS,IAAI,IAAAvF,MAAA,CAAI+F,CAAC,CAACvC,IAAI,QAAAxD,MAAA,CAAKiI,GAAG,CAAE,CAAC;IAChC,CAAC,CAAC;IACF,IAAInD,IAAI,CAACtE,MAAM,GAAG,CAAC,EAAE;MACnB,+CAAAR,MAAA,CAAkD8E,IAAI,CAAC/D,IAAI,CACzD,IACF,CAAC;IACH;IACA,OAAO,EAAE;EACX;EAEAoI,WAAWA,CAAC1G,MAAc,EAAE+B,MAAe,EAAU;IACnD,IAAM4E,QAAQ,GAAG,IAAI,CAACL,YAAY,CAACvE,MAAM,CAAC;IAC1C,IAAM6E,OAAO,GAAG,IAAI,CAACnE,mBAAmB,CAACV,MAAM,CAAC,GAAG4E,QAAQ;IAC3D,UAAApJ,MAAA,CAAU,IAAI,CAACwC,aAAa,CAACC,MAAM,EAAE4G,OAAO,CAAC,EAAArJ,MAAA,CAAGyC,MAAM,mBAAAzC,MAAA,CACpDwE,MAAM,CAAChB,IAAI,wCAAAxD,MAAA,CACwBwE,MAAM,CAAChB,IAAI;EAClD;EAEA8F,iBAAiBA,CAAC7G,MAAc,EAAE+B,MAAe,EAAU;IACzD,IAAI8B,QAAgB;IACpB,IAAML,WAAW,GAAG,IAAI,CAACC,eAAe,CAAC1B,MAAM,CAAC;IAChD,IAAM+B,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAChC,IAAM2C,MAAM,GAAG,CAAC,kBAAkB,CAAC;IAEnC,IAAMqB,WAAW,GAAG,IAAI,CAACvB,mBAAmB,CAACV,MAAM,EAAE,CACnD,gCAAgC,CACjC,CAAC;IACF,IAAIyB,WAAW,EAAE;MAIfK,QAAQ,GACN9B,MAAM,CAACiB,UAAU,KAAK,OAAO,wBAAAzF,MAAA,CACJiG,WAAW,sBAAAjG,MAAA,CACnBiG,WAAW,CAAE;MAChCb,MAAM,CAACG,IAAI,CAACe,QAAQ,CAAC;MACrBA,QAAQ,GAAGlB,MAAM,CAACrE,IAAI,CAAC,IAAI,CAAC;IAC9B,CAAC,MAAM;MACL,IAAM+D,IAAI,GAAGN,MAAM,CAACwB,SAAS;MAC7B,IAAIlB,IAAI,IAAIA,IAAI,CAACtE,MAAM,GAAG,CAAC,EACzBsE,IAAI,CAACgB,OAAO,CAACC,CAAC,IAAIX,MAAM,CAACG,IAAI,CAAC,IAAI,CAAChB,gBAAgB,CAACgC,IAAI,EAAE/B,MAAM,EAAEuB,CAAC,CAAC,CAAC,CAAC;MACxEO,QAAQ,GACNlB,MAAM,CAAC5E,MAAM,GAAG,CAAC,QAAAR,MAAA,CAAQoF,MAAM,CAACrE,IAAI,CAAC,IAAI,CAAC2F,cAAc,CAAC,IAAK,EAAE;IACpE;IACA,IAAME,MAAM,GACV,IAAI,CAACpE,aAAa,CAACC,MAAM,EAAEgE,WAAW,CAAC,MAAAzG,MAAA,CACpCyC,MAAM,mBAAAzC,MAAA,CAAgBwE,MAAM,CAAChB,IAAI,eAAY;IAClD,IAAMqD,OAAO,GAAG,IAAI,CAACC,UAAU,CAACrE,MAAM,EAAE+B,MAAM,CAAC;IAE/C,OACEoC,MAAM,GACNN,QAAQ,IACPA,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC,8CAAAtG,MAAA,CACqB6G,OAAO,YAAS;EAE/D;EAEA0C,eAAeA,CAAC9G,MAAc,EAAE+B,MAAe,EAAU;IACvD,IAAM+B,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAEhC,IAAI,CAAC+G,MAAM,GAAG,KAAK;IACnB,IAAMC,MAAM,GACV,IAAI,CAACH,iBAAiB,CAAC7G,MAAM,EAAE+B,MAAM,CAAC,GACtC,IAAI,CAACwC,gBAAgB,CAACvE,MAAM,EAAE+B,MAAM,CAAC,GACrC,IAAI,CAACiD,QAAQ,CAAClB,IAAI,EAAE/B,MAAM,CAAC,QAAAxE,MAAA,CACtByC,MAAM,MAAG;IAChB,IAAI,CAAC+G,MAAM,GAAG,MAAM;IACpB,OAAOC,MAAM;EACf;EAEAC,gBAAgBA,CAACjH,MAAc,EAAE+B,MAAe,EAAU;IACxD,IAAImF,GAAG,GAAG,IAAI,CAAC5C,eAAe,CAACtE,MAAM,EAAE+B,MAAM,CAAC,CAACoF,SAAS,CAAC,CAAC;IAC1DD,GAAG,GAAGA,GAAG,CAACE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;IACrCF,GAAG,GAAGA,GAAG,CAACG,SAAS,CAAC,CAAC,EAAEH,GAAG,CAACnJ,MAAM,GAAG,CAAC,CAAC;IACtC,UAAAR,MAAA,CAAU2J,GAAG;EACf;EAEAI,iBAAiBA,CAACtH,MAAc,EAAE+B,MAAe,EAAE;IACjD,OAAO,IAAI,CAAC4B,uBAAuB,CAAC3D,MAAM,EAAE+B,MAAM,EAAE,IAAI,CAAC;EAC3D;EAEAwF,eAAeA,CAACvH,MAAc,EAAE+B,MAAe,EAAE;IAC/C,IAAM+B,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAChC,OACE,IAAI,CAACsH,iBAAiB,CAACtH,MAAM,EAAE+B,MAAM,CAAC,GACtC,IAAI,CAACwC,gBAAgB,CAACT,IAAI,EAAE/B,MAAM,CAAC,GACnC,IAAI,CAACyF,UAAU,CAAC1D,IAAI,EAAE/B,MAAM,CAAC,QAAAxE,MAAA,CACxByC,MAAM,MAAG;EAElB;EAEAsB,OAAOA,CAACP,IAAY,EAAU;IAC5B,IAAI,CAAC1E,aAAa,CAAC0E,IAAI,CAAC,EAAE,OAAOA,IAAI;IACrC,WAAAxD,MAAA,CAAWwD,IAAI;EACjB;EAUQG,QAAQA,CAACF,IAAW,EAAE;IAC5BA,IAAI,CAACC,QAAQ,EAAE;IACf,IAAID,IAAI,CAACyG,UAAU,IAAI,EAAEzG,IAAI,YAAY7E,QAAQ,CAAC,EAAE;MAClD,OAAO,IAAI,CAACmF,OAAO,KAAA/D,MAAA,CAAKyD,IAAI,CAACD,IAAI,CAAE,CAAC;IACtC;IACA,OAAO,IAAI,CAACO,OAAO,CAACN,IAAI,CAACD,IAAI,CAAC;EAChC;EAEA2G,aAAaA,CAAC1H,MAAc,EAAEgB,IAAW,EAAE;IACzC,IAAM2G,IAAI,GAAG3G,IAAI,YAAY7E,QAAQ,GAAG,MAAM,GAAG,WAAW;IAC5D,OACE,IAAI,CAAC4D,aAAa,CAACC,MAAM,EAAEgB,IAAI,CAACT,WAAW,CAAC,MAAAhD,MAAA,CACzCyC,MAAM,aAAAzC,MAAA,CAAUoK,IAAI,OAAApK,MAAA,CAAI,IAAI,CAAC2D,QAAQ,CAACF,IAAI,CAAC,OAAAzD,MAAA,CAAI,IAAI,CAACqK,QAAQ,OAAI;EAEvE;EAEA1C,cAAcA,CAACzG,OAAe,EAAEsD,MAAe,EAAE;IAC/C,IAAM8F,OAAiB,GAAG9F,MAAM,CAACmD,cAAc,CAAC4C,GAAG,CACjDC,CAAC,OAAAxK,MAAA,CAAO,IAAI,CAAC2D,QAAQ,CAAC6G,CAAC,CAAC/G,IAAI,CAAC,CAC/B,CAAC;IACD,OAAO6G,OAAO,CAACvJ,IAAI,CAAC,KAAK,CAAC;EAC5B;EAEA0J,QAAQA,CAACC,IAAY,EAAEtD,MAAe,EAAE;IACtCA,MAAM,GAAGA,MAAM,IAAI,EAAE;IACrB,IAAIsD,IAAI,CAACC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EACxB,WAAA3K,MAAA,CAAY0K,IAAI,CAACb,OAAO,CAAC,KAAK,EAAE,IAAI,GAAGzC,MAAM,CAAC;IAChD,WAAApH,MAAA,CAAW0K,IAAI;EACjB;EAEAE,QAAQA,CAAC1J,OAAe,EAAE4D,IAAW,EAAEsC,MAAe,EAAE;IACtD,IAAI,CAACtC,IAAI,IAAIA,IAAI,CAACtE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI,CAACqK,OAAO;IACnD,IAAMC,IAAc,GAAG,EAAE;IACzB,KAAK,IAAMC,GAAG,IAAIjG,IAAI,EAAE;MACtB,IAAMkG,QAAQ,GAAG,IAAI,CAACjH,OAAO,CAACgH,GAAG,CAAC;MAClC,IAAI3D,MAAM,EAAE;QACV0D,IAAI,CAACvF,IAAI,IAAAvF,MAAA,CAAIgL,QAAQ,QAAAhL,MAAA,CAAK,IAAI,CAACuH,QAAQ,CAACwD,GAAG,EAAE3D,MAAM,CAAC,CAAE,CAAC;MACzD,CAAC,MAAM;QACL0D,IAAI,CAACvF,IAAI,CAACyF,QAAQ,CAAC;MACrB;IACF;IACA,WAAAhL,MAAA,CAAW8K,IAAI,CAAC/J,IAAI,CAAC,IAAI,CAACkK,YAAY,CAAC;EACzC;EAeA1D,QAAQA,CAAC/D,IAAY,EAAE4D,MAAe,EAAE;IACtC,IAAM4D,QAAQ,GAAG,IAAI,CAACjH,OAAO,CAACP,IAAI,CAAC;IACnC,IAAI,CAAC4D,MAAM,EAAE,OAAO4D,QAAQ;IAC5B,IAAIA,QAAQ,KAAKxH,IAAI,EAAE,UAAAxD,MAAA,CAAUoH,MAAM,OAAApH,MAAA,CAAIwD,IAAI;IAC/C,UAAAxD,MAAA,CAAUoH,MAAM,OAAApH,MAAA,CAAIgL,QAAQ;EAC9B;EAEAE,OAAOA,CAACzI,MAAc,EAAEqC,IAAW,EAAEsC,MAAe,EAAE;IACpDA,MAAM,GAAGA,MAAM,IAAI,EAAE;IACrB,IAAM+D,IAAI,GAAGrG,IAAI,CAACyF,GAAG,CAACa,CAAC,IAAI,IAAI,CAAC7D,QAAQ,CAAC6D,CAAC,EAAEhE,MAAM,CAAC,CAAC;IAEpD,OAAOtC,IAAI,IAAIA,IAAI,CAACtE,MAAM,KAAK,CAAC,QAAAR,MAAA,CACvByC,MAAM,EAAAzC,MAAA,CAAGmL,IAAI,CAACpK,IAAI,CAAC,IAAI,CAACkK,YAAY,CAAC,IAC1C,IAAI,CAACJ,OAAO;EAClB;EAGAQ,OAAOA,CAACC,OAAe,EAAExG,IAAY,EAAE;IACrC,IAAI,CAACwG,OAAO,IAAIxG,IAAI,CAACQ,IAAI,CAAC,CAAC,KAAK,IAAI,CAACuF,OAAO,EAAE;MAE5C,OAAO,EAAE;IACX;IACA,UAAA7K,MAAA,CAAU8E,IAAI,EAAA9E,MAAA,CAAGsL,OAAO,GAAG,IAAI,CAACL,YAAY,GAAG,EAAE,EAAAjL,MAAA,CAAGsL,OAAO;EAC7D;EAUAC,QAAQA,CAAC9I,MAAc,EAAE+B,MAAe,EAAE;IACxC,IAAMgH,OAAO,GAAG,IAAI,CAACnE,UAAU,CAAC7C,MAAM,CAAC,GAAG,SAAS,GAAG,EAAE;IAIxD,IAAIiF,MAAM,GAAG,IAAI,CAAC4B,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC;IAGxC5B,MAAM,GAAG,IAAI,CAAC4B,OAAO,CACnB5B,MAAM,EACNjF,MAAM,CAACiH,OAAO,GAAG,IAAI,CAAClE,QAAQ,CAAC/C,MAAM,CAACiH,OAAO,EAAED,OAAO,CAAC,GAAG,IAAI,CAACX,OACjE,CAAC;IACDpB,MAAM,GAAG,IAAI,CAAC4B,OAAO,CACnB5B,MAAM,EACN,IAAI,CAACmB,QAAQ,CAACnI,MAAM,EAAE+B,MAAM,CAACkH,SAAS,EAAEF,OAAO,CACjD,CAAC;IACD,OAAO/B,MAAM;EACf;EAEAhC,QAAQA,CAAChF,MAAc,EAAE+B,MAAe,EAAE;IACxC,IAAMgH,OAAO,GAAG,IAAI,CAACnE,UAAU,CAAC7C,MAAM,CAAC,GAAG,UAAU,GAAG,EAAE;IACzD,IAAMZ,MAAM,GAAG,IAAI,CAACC,OAAO,CAACW,MAAM,CAACf,IAAI,CAAC;IACxC,IAAM8C,IAAI,GAAG,IAAI,CAACC,MAAM,CAAC/D,MAAM,CAAC;IAChC,IAAMqC,IAAI,GAAG,IAAI,CAACyG,QAAQ,CAAChF,IAAI,EAAE/B,MAAM,CAAC;IACxC,IAAMkD,MAAM,GAAG,IAAI,CAACC,cAAc,CAAClF,MAAM,EAAE+B,MAAM,CAAC;IAClD,OACE,GAAAxE,MAAA,CAAGyC,MAAM,aAAAzC,MAAA,CAAU,IAAI,CAAC2L,EAAE,CAACnH,MAAM,CAACiB,UAAU,CAACmG,WAAW,CAAC,CAAC,CAAC,QAAA5L,MAAA,CACvD4D,MAAM,CAACJ,IAAI,QAAAxD,MAAA,CAAK0H,MAAM,OAAI,GAC9B,IAAI,CAAC+C,QAAQ,CAACjG,MAAM,CAACkB,QAAQ,EAAE8F,OAAO,CAAC,MAAAxL,MAAA,CACpC8E,IAAI,GAAG,IAAI,GAAGA,IAAI,GAAG,EAAE,MAAG;EAEjC;EAEAmF,UAAUA,CAACxH,MAAc,EAAE+B,MAAe,EAAE;IAC1C,IAAMgH,OAAO,GAAG,IAAI,CAACnE,UAAU,CAAC7C,MAAM,CAAC,GAAG,UAAU,GAAG,EAAE;IACzD,IAAMZ,MAAM,GAAG,IAAI,CAACC,OAAO,CAACW,MAAM,CAACf,IAAI,CAAC;IACxC,IAAM8C,IAAI,GAAG9D,MAAM,GAAG,IAAI,CAACwE,SAAS;IACpC,IAAMnC,IAAI,GAAG,IAAI,CAACyG,QAAQ,CAAChF,IAAI,EAAE/B,MAAM,CAAC;IAExC,UAAAxE,MAAA,CAAUyC,MAAM,aAAAzC,MAAA,CAAU,IAAI,CAAC2L,EAAE,CAAC,YAAY,CAAC,OAAA3L,MAAA,CAC7C4D,MAAM,CAACJ,IAAI,mBAAAxD,MAAA,CACGwE,MAAM,CAACiB,UAAU,CAACoG,WAAW,CAAC,CAAC,SAAA7L,MAAA,CAAM,IAAI,CAACyK,QAAQ,CAChEjG,MAAM,CAACkB,QAAQ,EACf8F,OACF,CAAC,EAAAxL,MAAA,CAAG8E,IAAI,GAAG,IAAI,GAAGA,IAAI,GAAG,EAAE;EAC7B;EAEAgH,OAAOA,CAACrJ,MAAc,EAAEC,IAAwB,EAAE;IAChD,OAAO,IAAI,CAACF,aAAa,CAACC,MAAM,EAAEC,IAAI,CAAC;EACzC;EAGArB,SAASA,CAAA,EAAG;IACV,IAAM0K,KAAe,GAAG,EAAE;IAC1B,IAAI,CAAC,IAAI,CAACjK,GAAG,EAAE,OAAOiK,KAAK;IAC3B,IAAMC,KAAK,GAAG,IAAI,CAAClK,GAAG,CAACkK,KAAK;IAC5BpK,MAAM,CAACqK,MAAM,CAACD,KAAK,CAAC,CACjBE,MAAM,CAACzI,IAAI,IAAIA,IAAI,CAACC,QAAQ,GAAG,CAAC,IAAI,CAACD,IAAI,CAACS,SAAS,CAAC,CACpD4B,OAAO,CAACrC,IAAI,IAAIsI,KAAK,CAACxG,IAAI,CAAC,IAAI,CAAC5B,QAAQ,CAACF,IAAI,CAAC,CAAC,CAAC;IACnD,OAAOsI,KAAK;EACd;EAEAlI,OAAOA,CAACJ,IAAW,EAAe;IAChC,KAAK,CAACI,OAAO,CAACJ,IAAI,CAAC;IACnB,IAAM0I,EAAE,GAAG,EAAE;IAEb,IAAMC,QAAwB,GAAGA,CAACC,CAAC,EAAErD,CAAC,SAAAhJ,MAAA,CAASgJ,CAAC,MAAG;IACnD,IAAMsD,OAAoC,GAAG;MAC3CC,GAAG,EAAE;QAAE5H,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAM,CAAC;MACjCgJ,OAAO,EAAE;QAAE7H,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAU,CAAC;MAEzCiJ,IAAI,EAAE;QAAE9H,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAiBkJ,KAAK,EAAEN;MAAS,CAAC;MACrEO,MAAM,EAAE;QAAEhI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MACxDQ,IAAI,EAAE;QAAEjI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAO,CAAC;MACnCqJ,QAAQ,EAAE;QAAElI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAO,CAAC;MACvCsJ,MAAM,EAAE;QAAEnI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAS,CAAC;MACvCuJ,KAAK,EAAE;QAAEpI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAS,CAAC;MACtCwJ,KAAK,EAAE;QAAErI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAS,CAAC;MACtCyJ,KAAK,EAAE;QAAEtI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAS,CAAC;MACtC0J,OAAO,EAAE;QAAEvI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAS,CAAC;MACxC2J,MAAM,EAAE;QAAExI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAS,CAAC;MACvC4J,MAAM,EAAE;QAAEzI,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE;MAAM,CAAC;MACpC6J,QAAQ,EAAE;QAAE1I,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,UAAU;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MAC5DkB,KAAK,EAAE;QAAE3I,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MACvDmB,IAAI,EAAE;QAAE5I,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MACtDoB,QAAQ,EAAE;QAAE7I,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MAC1DqB,IAAI,EAAE;QAAE9I,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MACtDsB,IAAI,EAAE;QAAE/I,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MACtDuB,MAAM,EAAE;QAAEhJ,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,QAAQ;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MACxDwB,GAAG,EAAE;QAAEjJ,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,KAAK;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MAClDyB,GAAG,EAAE;QAAElJ,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,KAAK;QAAEkJ,KAAK,EAAEN;MAAS,CAAC;MAClD0B,IAAI,EAAE;QAAEnJ,OAAO,EAAEwH,EAAE;QAAE3I,IAAI,EAAE,MAAM;QAAEkJ,KAAK,EAAEA,CAACqB,EAAE,EAAEC,EAAO,KAAK;MAAG;IAChE,CAAC;IAED,IAAIvK,IAAI,CAACwK,WAAW,EAAE;MAEpB,IAAM1D,GAAG,GAAG,IAAI,CAAC1G,OAAO,CAACJ,IAAI,CAACwK,WAAW,CAAC;MAC1C,QAAQxK,IAAI,CAACyK,SAAS;QACpB,KAAK,WAAW;UACd,OAAO;YACLvJ,OAAO,EAAE,IAAI;YACbnB,IAAI,KAAAxD,MAAA,CAAKuK,GAAG,CAAC/G,IAAI;UACnB,CAAC;QACH,KAAK,UAAU;UACb,IAAI,CAAC/D,QAAQ,CAAC0I,GAAG,CAAC,aAAa,CAAC;UAChC,OAAO;YACLxD,OAAO,EAAE,EAAE;YACXnB,IAAI,iBAAAxD,MAAA,CAAiBuK,GAAG,CAAC/G,IAAI;UAC/B,CAAC;QACH,KAAK,gBAAgB;UACnB,IAAI,CAAC/D,QAAQ,CAAC0I,GAAG,CAAC,YAAY,CAAC;UAC/B,OAAO;YACLxD,OAAO,EAAE,EAAE;YACXnB,IAAI,gBAAAxD,MAAA,CAAgBuK,GAAG,CAAC/G,IAAI,MAAG;YAC/BkJ,KAAK,EAAEA,CAACL,CAAC,EAAErD,CAAC,uBAAAhJ,MAAA,CAAuBuK,GAAG,CAAC/G,IAAI,SAAAxD,MAAA,CAAMgJ,CAAC;UACpD,CAAC;QACH,KAAK,UAAU;UACb,OAAO;YACLrE,OAAO,EAAE,EAAE;YACXnB,IAAI,EAAE,IAAI,CAACG,QAAQ,CAACF,IAAI,CAAC;YACzBiJ,KAAK,EAAEA,CAACL,CAAC,EAAErD,CAAC,QAAAhJ,MAAA,CAAQyD,IAAI,CAACD,IAAI,OAAAxD,MAAA,CAAIgJ,CAAC;UACpC,CAAC;MACL;MACA,MAAM,IAAImF,KAAK,8BAAAnO,MAAA,CAA8BqI,IAAI,CAACC,SAAS,CAAC7E,IAAI,CAAC,CAAE,CAAC;IACtE;IAEA,IAAIA,IAAI,CAACD,IAAI,EAAE;MACb,IAAMI,MAAM,GAAG0I,OAAO,CAAC7I,IAAI,CAACD,IAAI,CAAC;MACjC,IAAII,MAAM,IAAIA,MAAM,CAACJ,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC/D,QAAQ,CAAC0I,GAAG,CAACvE,MAAM,CAACJ,IAAI,CAAC;MACnE,OAAOI,MAAM,IAAI;QAAEe,OAAO,EAAE,EAAE;QAAEnB,IAAI,EAAE,IAAI,CAACG,QAAQ,CAACF,IAAI;MAAE,CAAC;IAC7D,CAAC,MAAM;MACL,MAAM,IAAI0K,KAAK,CAAC,gCAAgC,CAAC;IACnD;EACF;AACF"}