@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
package/lib/sdkModels.js CHANGED
@@ -3,28 +3,27 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.typeRefs = exports.typeOfType = exports.titleCase = exports.tagTypes = exports.strWrite = exports.strRequest = exports.strBody = exports.setToCriteria = exports.safeName = exports.methodRefs = exports.mayQuote = exports.keyValues = exports.isSpecialName = exports.firstMethodRef = exports.firstCase = exports.describeParam = exports.criteriaToSet = exports.camelCase = exports.WriteType = exports.TypeOfType = exports.Type = exports.SearchCriterion = exports.SearchAll = exports.RequestType = exports.Property = exports.Parameter = exports.Method = exports.MetaType = exports.IntrinsicType = exports.HashType = exports.EnumType = exports.DelimArrayType = exports.ArrayType = exports.ApiModel = void 0;
6
+ exports.typeRefs = exports.typeOfType = exports.titleCase = exports.tagTypes = exports.strWrite = exports.strRequest = exports.strBody = exports.specToModel = exports.setToCriteria = exports.safeName = exports.parseFields = exports.methodRefs = exports.mayQuote = exports.keyValues = exports.isSpecialName = exports.firstMethodRef = exports.firstCase = exports.describeParam = exports.criteriaToSet = exports.camelCase = exports.WriteType = exports.TypeOfType = exports.Type = exports.SearchCriterion = exports.SearchAll = exports.RequestType = exports.Property = exports.Parameter = exports.Method = exports.MetaType = exports.IntrinsicType = exports.HashType = exports.EnumType = exports.DelimArrayType = exports.ArrayType = exports.ApiModel = void 0;
7
7
  var OAS = _interopRequireWildcard(require("openapi3-ts"));
8
8
  var _blueimpMd = _interopRequireDefault(require("blueimp-md5"));
9
+ var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
9
10
  var _sdkRtl = require("@looker/sdk-rtl");
11
+ var _specConverter = require("./specConverter");
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
- 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; }
14
- 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; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ 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; }
16
+ 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; }
15
17
  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; }
16
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
17
- 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); }
18
- var strBody = 'body';
19
- exports.strBody = strBody;
20
- var strRequest = 'Request';
21
- exports.strRequest = strRequest;
22
- var strWrite = 'Write';
23
- exports.strWrite = strWrite;
18
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
19
+ 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); }
20
+ var strBody = exports.strBody = 'body';
21
+ var strRequest = exports.strRequest = 'Request';
22
+ var strWrite = exports.strWrite = 'Write';
24
23
  var lookerValuesTag = 'x-looker-values';
25
24
  var enumTag = 'enum';
26
25
  var simpleName = /^[a-z_][a-z_\d]*(\[])?$/im;
27
- var TypeOfType = function (TypeOfType) {
26
+ var TypeOfType = exports.TypeOfType = function (TypeOfType) {
28
27
  TypeOfType[TypeOfType["Intrinsic"] = 0] = "Intrinsic";
29
28
  TypeOfType[TypeOfType["Array"] = 1] = "Array";
30
29
  TypeOfType[TypeOfType["Hash"] = 2] = "Hash";
@@ -33,7 +32,74 @@ var TypeOfType = function (TypeOfType) {
33
32
  TypeOfType[TypeOfType["Complex"] = 5] = "Complex";
34
33
  return TypeOfType;
35
34
  }({});
36
- exports.TypeOfType = TypeOfType;
35
+ var parseFields = fields => {
36
+ function splitConsideringParentheses(segment) {
37
+ var parts = [];
38
+ var currentPart = '';
39
+ var openParentheses = 0;
40
+ var lastChar = '';
41
+ function charCheck(char) {
42
+ if (lastChar === char) {
43
+ if (char === '(' || char === ')' && openParentheses < 0) {
44
+ throw new Error("Unexpected '".concat(char, "' after '").concat(currentPart, "' parens:").concat(openParentheses));
45
+ }
46
+ }
47
+ }
48
+ for (var char of segment) {
49
+ if (char === '(') {
50
+ openParentheses++;
51
+ charCheck(char);
52
+ } else if (char === ')') {
53
+ openParentheses--;
54
+ charCheck(char);
55
+ }
56
+ if (char === ',' && openParentheses === 0) {
57
+ parts.push(currentPart);
58
+ currentPart = '';
59
+ } else {
60
+ currentPart += char;
61
+ }
62
+ lastChar = char;
63
+ }
64
+ if (currentPart) {
65
+ parts.push(currentPart);
66
+ }
67
+ return parts;
68
+ }
69
+ function parseSegment(segment) {
70
+ var parts = splitConsideringParentheses(segment);
71
+ var result = {};
72
+ parts.forEach(part => {
73
+ var [key, nestedStr] = part.split(/\((.+)/);
74
+ key = key.trim();
75
+ if (nestedStr) {
76
+ nestedStr = nestedStr.slice(0, -1);
77
+ if (key in result) {
78
+ throw new Error("Duplicate '".concat(key, "' found"));
79
+ }
80
+ result[key] = parseSegment(nestedStr);
81
+ } else {
82
+ var p = part.trim();
83
+ if (p in result) {
84
+ throw new Error("Duplicate '".concat(key, "' found"));
85
+ }
86
+ if (p) result[p] = p;
87
+ }
88
+ });
89
+ return result;
90
+ }
91
+ if (typeof fields === 'string') {
92
+ fields = fields.trim();
93
+ if (!fields) return {};
94
+ return parseSegment(fields);
95
+ } else if (Array.isArray(fields)) {
96
+ var result = {};
97
+ fields.forEach(f => result[f] = f);
98
+ return result;
99
+ }
100
+ return fields;
101
+ };
102
+ exports.parseFields = parseFields;
37
103
  var typeOfType = type => {
38
104
  if (type.intrinsic) return TypeOfType.Intrinsic;
39
105
  switch (type.className) {
@@ -73,13 +139,13 @@ exports.camelCase = camelCase;
73
139
  var titleCase = value => {
74
140
  if (!value) return '';
75
141
  value = camelCase(value);
76
- return value[0].toLocaleUpperCase() + value.substr(1);
142
+ return value[0].toLocaleUpperCase() + value.substring(1);
77
143
  };
78
144
  exports.titleCase = titleCase;
79
145
  var firstCase = value => {
80
146
  if (!value) return '';
81
147
  value = camelCase(value);
82
- return value[0].toLocaleUpperCase() + value.substr(1).toLocaleLowerCase();
148
+ return value[0].toLocaleUpperCase() + value.substring(1).toLocaleLowerCase();
83
149
  };
84
150
  exports.firstCase = firstCase;
85
151
  var searchIt = value => value ? value + '\t' : '';
@@ -100,13 +166,12 @@ var keyValues = list => {
100
166
  return Array.from(list.values()).sort();
101
167
  };
102
168
  exports.keyValues = keyValues;
103
- var mayQuote = function mayQuote(value) {
169
+ var mayQuote = exports.mayQuote = function mayQuote(value) {
104
170
  var quoteChar = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "'";
105
171
  var str = value.toString();
106
172
  if (!isSpecialName(str)) return str;
107
173
  return "".concat(quoteChar).concat(str).concat(quoteChar);
108
174
  };
109
- exports.mayQuote = mayQuote;
110
175
  var methodRefs = (api, refs) => {
111
176
  var keys = keyValues(refs);
112
177
  var result = [];
@@ -130,7 +195,7 @@ var typeRefs = (api, refs) => {
130
195
  return result;
131
196
  };
132
197
  exports.typeRefs = typeRefs;
133
- var firstMethodRef = function firstMethodRef(api, type) {
198
+ var firstMethodRef = exports.firstMethodRef = function firstMethodRef(api, type) {
134
199
  var stack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();
135
200
  stack.add(type.name);
136
201
  var method = methodRefs(api, type.methodRefs)[0];
@@ -145,7 +210,6 @@ var firstMethodRef = function firstMethodRef(api, type) {
145
210
  }
146
211
  return method;
147
212
  };
148
- exports.firstMethodRef = firstMethodRef;
149
213
  var anyWriter = function anyWriter(api, type) {
150
214
  var stack = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();
151
215
  var result;
@@ -171,7 +235,7 @@ var anyWriter = function anyWriter(api, type) {
171
235
  }
172
236
  return result;
173
237
  };
174
- var SearchCriterion = function (SearchCriterion) {
238
+ var SearchCriterion = exports.SearchCriterion = function (SearchCriterion) {
175
239
  SearchCriterion[SearchCriterion["method"] = 0] = "method";
176
240
  SearchCriterion[SearchCriterion["type"] = 1] = "type";
177
241
  SearchCriterion[SearchCriterion["name"] = 2] = "name";
@@ -184,9 +248,7 @@ var SearchCriterion = function (SearchCriterion) {
184
248
  SearchCriterion[SearchCriterion["response"] = 9] = "response";
185
249
  return SearchCriterion;
186
250
  }({});
187
- exports.SearchCriterion = SearchCriterion;
188
- var SearchAll = new Set([SearchCriterion.method, SearchCriterion.type, SearchCriterion.name, SearchCriterion.description, SearchCriterion.argument, SearchCriterion.property, SearchCriterion.title, SearchCriterion.activityType, SearchCriterion.status, SearchCriterion.response]);
189
- exports.SearchAll = SearchAll;
251
+ var SearchAll = exports.SearchAll = new Set([SearchCriterion.method, SearchCriterion.type, SearchCriterion.name, SearchCriterion.description, SearchCriterion.argument, SearchCriterion.property, SearchCriterion.title, SearchCriterion.activityType, SearchCriterion.status, SearchCriterion.response]);
190
252
  var criteriaToSet = criteria => {
191
253
  var result = new Set();
192
254
  criteria.forEach(name => {
@@ -202,7 +264,7 @@ var setToCriteria = criteria => {
202
264
  return result;
203
265
  };
204
266
  exports.setToCriteria = setToCriteria;
205
- var MetaType = function (MetaType) {
267
+ var MetaType = exports.MetaType = function (MetaType) {
206
268
  MetaType["Intrinsic"] = "Intrinsic";
207
269
  MetaType["Specification"] = "Specification";
208
270
  MetaType["Write"] = "Write";
@@ -210,7 +272,6 @@ var MetaType = function (MetaType) {
210
272
  MetaType["Enumerated"] = "Enumerated";
211
273
  return MetaType;
212
274
  }({});
213
- exports.MetaType = MetaType;
214
275
  var tagTypes = (api, types) => {
215
276
  var typeTags = {};
216
277
  Object.entries(types).filter(_ref => {
@@ -305,6 +366,150 @@ class SchemadSymbol extends _Symbol {
305
366
  return this.deprecated ? 'deprecated' : '';
306
367
  }
307
368
  }
369
+ var mockData = function mockData(propertyName, type, override) {
370
+ var _dataMocks$type$name;
371
+ var empty = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
372
+ var over = override !== undefined;
373
+ var stringer = mocked => {
374
+ if (over) {
375
+ return String(override);
376
+ }
377
+ if (empty) {
378
+ return '';
379
+ }
380
+ return mocked;
381
+ };
382
+ var inter = mocked => {
383
+ if (over) {
384
+ return parseInt(override, 10);
385
+ }
386
+ if (empty) {
387
+ return 0;
388
+ }
389
+ return mocked;
390
+ };
391
+ var floater = mocked => {
392
+ if (over) {
393
+ return parseFloat(override);
394
+ }
395
+ if (empty) {
396
+ return 0.0;
397
+ }
398
+ return mocked;
399
+ };
400
+ var dater = mocked => {
401
+ if (over) {
402
+ return new Date(override);
403
+ }
404
+ if (empty) {
405
+ return new Date(1970, 0, 1);
406
+ }
407
+ return mocked;
408
+ };
409
+ var booler = mocked => {
410
+ if (over) {
411
+ return Boolean(override);
412
+ }
413
+ if (empty) {
414
+ return false;
415
+ }
416
+ return mocked;
417
+ };
418
+ var anyer = mocked => {
419
+ if (over) {
420
+ return override;
421
+ }
422
+ if (empty) {
423
+ return {};
424
+ }
425
+ return mocked;
426
+ };
427
+ var dataMocks = {
428
+ any: {
429
+ value: anyer({
430
+ a: 1,
431
+ b: 'two'
432
+ })
433
+ },
434
+ boolean: {
435
+ value: booler(true)
436
+ },
437
+ byte: {
438
+ value: stringer('A')
439
+ },
440
+ binary: {
441
+ value: stringer('01')
442
+ },
443
+ date: {
444
+ value: dater(new Date(2024, 0, 5))
445
+ },
446
+ datetime: {
447
+ value: dater(new Date(2024, 0, 5, 1))
448
+ },
449
+ double: {
450
+ value: floater(2.2)
451
+ },
452
+ float: {
453
+ value: floater(1.1)
454
+ },
455
+ int32: {
456
+ value: inter(32)
457
+ },
458
+ int64: {
459
+ value: inter(64)
460
+ },
461
+ integer: {
462
+ value: inter(1)
463
+ },
464
+ number: {
465
+ value: inter(2)
466
+ },
467
+ object: {
468
+ value: anyer({
469
+ [propertyName]: 1
470
+ })
471
+ },
472
+ password: {
473
+ value: stringer('*')
474
+ },
475
+ string: {
476
+ value: stringer(propertyName)
477
+ },
478
+ uri: {
479
+ value: stringer("urn:".concat(propertyName))
480
+ },
481
+ url: {
482
+ value: stringer("https://".concat(propertyName, ".mock"))
483
+ },
484
+ email: {
485
+ value: stringer("".concat(propertyName, "@example.com"))
486
+ },
487
+ uuid: {
488
+ value: stringer("uuid-".concat(propertyName))
489
+ },
490
+ hostname: {
491
+ value: stringer("https://".concat(propertyName))
492
+ },
493
+ ipv4: {
494
+ value: stringer('127.0.0.1')
495
+ },
496
+ ipv6: {
497
+ value: stringer('::1')
498
+ },
499
+ void: {
500
+ value: over ? override : null
501
+ }
502
+ };
503
+ return (_dataMocks$type$name = dataMocks[type.name]) !== null && _dataMocks$type$name !== void 0 ? _dataMocks$type$name : override;
504
+ };
505
+ var mockOptions = options => {
506
+ var _options$override, _options$empty;
507
+ return {
508
+ fields: options !== null && options !== void 0 && options.fields ? options === null || options === void 0 ? void 0 : options.fields : '',
509
+ override: (_options$override = options === null || options === void 0 ? void 0 : options.override) !== null && _options$override !== void 0 ? _options$override : {},
510
+ empty: (_options$empty = options === null || options === void 0 ? void 0 : options.empty) !== null && _options$empty !== void 0 ? _options$empty : false
511
+ };
512
+ };
308
513
  class Property extends SchemadSymbol {
309
514
  constructor(name, type, schema) {
310
515
  var _schema$required;
@@ -315,7 +520,7 @@ class Property extends SchemadSymbol {
315
520
  _defineProperty(this, "nullable", false);
316
521
  _defineProperty(this, "readOnly", false);
317
522
  _defineProperty(this, "writeOnly", false);
318
- this.required = !!(required.includes(name) || (_schema$required = schema.required) !== null && _schema$required !== void 0 && _schema$required.includes(name));
523
+ this.required = Boolean(required.includes(name) || ((_schema$required = schema.required) === null || _schema$required === void 0 ? void 0 : _schema$required.includes(name)));
319
524
  this.nullable = this.schema.nullable || this.schema['x-looker-nullable'] || false;
320
525
  this.readOnly = this.schema.readOnly || false;
321
526
  this.writeOnly = this.schema.writeOnly || false;
@@ -338,6 +543,56 @@ class Property extends SchemadSymbol {
338
543
  search(rx, criteria) {
339
544
  return rx.test(this.searchString(criteria)) || this.type.search(rx, criteria);
340
545
  }
546
+ mock() {
547
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
548
+ var {
549
+ fields,
550
+ override,
551
+ empty
552
+ } = mockOptions(options);
553
+ if ((0, _isEmpty.default)(fields) && !this.required) return undefined;
554
+ var keys = parseFields(fields);
555
+ if (!(0, _isEmpty.default)(fields) && !(this.name in keys)) return undefined;
556
+ var type = this.type;
557
+ if (type.elementType) {
558
+ var el = type.elementType;
559
+ var over = el.intrinsic && el.isString ? this.name : override;
560
+ var scope = typeof keys[this.name] === 'string' ? undefined : keys[this.name];
561
+ var opts = el.intrinsic ? {
562
+ fields: el.name,
563
+ override: over
564
+ } : {
565
+ fields: scope,
566
+ override
567
+ };
568
+ var val = el.mock(opts);
569
+ switch (type.className) {
570
+ case 'ArrayType':
571
+ return empty ? [] : [val];
572
+ case 'HashType':
573
+ return empty ? {} : {
574
+ a: val
575
+ };
576
+ case 'DelimArrayType':
577
+ return empty ? new _sdkRtl.DelimArray([]) : new _sdkRtl.DelimArray([val]);
578
+ case 'EnumType':
579
+ return type.values[0];
580
+ }
581
+ throw new Error("Don't know how to handle: ".concat(JSON.stringify(type)));
582
+ }
583
+ if (type.name) {
584
+ if (type.intrinsic) {
585
+ var data = mockData(this.name, type, undefined, empty);
586
+ return data.value;
587
+ }
588
+ return type.mock({
589
+ override,
590
+ empty
591
+ });
592
+ } else {
593
+ throw new Error('Cannot output a nameless type.');
594
+ }
595
+ }
341
596
  }
342
597
  exports.Property = Property;
343
598
  class Parameter extends SchemadSymbol {
@@ -726,7 +981,7 @@ class Type {
726
981
  var type = prop.type;
727
982
  var w = type.intrinsic ? undefined : api.mayGetWriteableType(type);
728
983
  if (w) {
729
- var writeProp = _objectSpread(_objectSpread({}, prop), {
984
+ var writeProp = _objectSpread(_objectSpread({}, prop), {}, {
730
985
  type: w
731
986
  });
732
987
  result.push(writeProp);
@@ -790,6 +1045,74 @@ class Type {
790
1045
  return prop.hasSpecialNeeds;
791
1046
  });
792
1047
  }
1048
+ mock() {
1049
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1050
+ var {
1051
+ fields,
1052
+ override,
1053
+ empty
1054
+ } = mockOptions(options);
1055
+ var isArray = this.className === 'ArrayType';
1056
+ var props = isArray ? this.elementType.properties : this.properties;
1057
+ if (typeof override !== 'string' && typeof override !== 'function') {
1058
+ for (var _key in override) {
1059
+ if (!(_key in props)) {
1060
+ delete override[_key];
1061
+ } else {
1062
+ var prop = props[_key];
1063
+ if (prop.type.intrinsic) {
1064
+ override[_key] = mockData(_key, prop.type, override[_key], empty).value;
1065
+ }
1066
+ }
1067
+ }
1068
+ }
1069
+ var keys = parseFields(fields);
1070
+ if (keys['*']) {
1071
+ var merge = {};
1072
+ Object.keys(props).forEach(k => merge[k] = k);
1073
+ keys = _objectSpread(_objectSpread({}, merge), keys);
1074
+ delete keys['*'];
1075
+ } else if ((0, _isEmpty.default)(fields)) {
1076
+ for (var [_key2, _prop] of Object.entries(props)) {
1077
+ if (_prop.required) {
1078
+ keys[_key2] = _key2;
1079
+ }
1080
+ }
1081
+ }
1082
+ var overKeys = typeof override === 'string' || typeof override === 'function';
1083
+ var result = {};
1084
+ Object.keys(keys).forEach(k => {
1085
+ var v = keys[k];
1086
+ var over = overKeys ? undefined : override[k];
1087
+ var p = props[k];
1088
+ var scope = v === k ? k : {
1089
+ [k]: v
1090
+ };
1091
+ if (!p) {
1092
+ throw new Error("No property named '".concat(k, "' in type ").concat(this.name));
1093
+ }
1094
+ var val = typeof override === 'function' ? p.mock({
1095
+ fields: scope,
1096
+ empty
1097
+ }) : p.mock({
1098
+ fields: scope,
1099
+ override: over,
1100
+ empty
1101
+ });
1102
+ if (val !== undefined) {
1103
+ result[k] = val;
1104
+ }
1105
+ });
1106
+ if (typeof override !== 'string') {
1107
+ result = _objectSpread(_objectSpread({}, result), override);
1108
+ }
1109
+ return result;
1110
+ }
1111
+ mockType() {
1112
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1113
+ var result = this.mock(options);
1114
+ return result;
1115
+ }
793
1116
  load(api) {
794
1117
  Object.entries(this.schema.properties || {}).forEach(_ref7 => {
795
1118
  var [propName, propSchema] = _ref7;
@@ -883,6 +1206,14 @@ class ArrayType extends Type {
883
1206
  get readOnly() {
884
1207
  return this.elementType.readOnly;
885
1208
  }
1209
+ mock() {
1210
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1211
+ var result = super.mock(options);
1212
+ if (Array.isArray(result)) {
1213
+ return result;
1214
+ }
1215
+ return [result];
1216
+ }
886
1217
  }
887
1218
  exports.ArrayType = ArrayType;
888
1219
  class EnumType extends Type {
@@ -923,6 +1254,10 @@ class EnumType extends Type {
923
1254
  enums[hash] = this;
924
1255
  return name;
925
1256
  }
1257
+ mock() {
1258
+ var _options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1259
+ return this.values[0];
1260
+ }
926
1261
  searchString(criteria) {
927
1262
  var result = super.searchString(criteria);
928
1263
  if (criteria.has(SearchCriterion.property)) {
@@ -980,6 +1315,15 @@ class IntrinsicType extends Type {
980
1315
  this.customType = '';
981
1316
  this.isString = IntrinsicType.stringTypes.includes(name);
982
1317
  }
1318
+ mock() {
1319
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1320
+ var {
1321
+ override,
1322
+ empty
1323
+ } = mockOptions(options);
1324
+ if (this.isString && typeof override === 'string') return override;
1325
+ return mockData(this.name, this, undefined, empty).value;
1326
+ }
983
1327
  get className() {
984
1328
  return 'IntrinsicType';
985
1329
  }
@@ -991,7 +1335,7 @@ class IntrinsicType extends Type {
991
1335
  }
992
1336
  }
993
1337
  exports.IntrinsicType = IntrinsicType;
994
- _defineProperty(IntrinsicType, "stringTypes", ['string', 'uri', 'email', 'uuid', 'uri', 'hostname', 'ipv4', 'ipv6']);
1338
+ _defineProperty(IntrinsicType, "stringTypes", ['string', 'uri', 'url', 'email', 'uuid', 'hostname', 'password', 'ipv4', 'ipv6', 'byte', 'binary']);
995
1339
  class RequestType extends Type {
996
1340
  constructor(api, name, params) {
997
1341
  var description = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
@@ -1042,6 +1386,15 @@ _defineProperty(WriteType, "readonlyProps", properties => {
1042
1386
  });
1043
1387
  return result;
1044
1388
  });
1389
+ var specToModel = spec => {
1390
+ if (typeof spec === 'string') {
1391
+ spec = JSON.parse(spec);
1392
+ }
1393
+ var json = (0, _specConverter.upgradeSpecObject)(spec);
1394
+ var obj = new OAS.OpenApiBuilder(json).getSpec();
1395
+ return new ApiModel(obj);
1396
+ };
1397
+ exports.specToModel = specToModel;
1045
1398
  class ApiModel {
1046
1399
  constructor(spec) {
1047
1400
  this.spec = spec;
@@ -1051,8 +1404,7 @@ class ApiModel {
1051
1404
  _defineProperty(this, "types", {});
1052
1405
  _defineProperty(this, "tags", {});
1053
1406
  _defineProperty(this, "typeTags", {});
1054
- ;
1055
- ['string', 'integer', 'int64', 'boolean', 'object', 'uri', 'float', 'double', 'void', 'datetime', 'email', 'uuid', 'uri', 'hostname', 'ipv4', 'ipv6', 'any'].forEach(name => this.types[name] = new IntrinsicType(name));
1407
+ ['string', 'integer', 'int64', 'boolean', 'object', 'float', 'double', 'void', 'date', 'datetime', 'binary', 'byte', 'email', 'uuid', 'uri', 'url', 'hostname', 'password', 'ipv4', 'ipv6', 'any'].forEach(name => this.types[name] = new IntrinsicType(name));
1056
1408
  this.load();
1057
1409
  }
1058
1410
  get version() {
@@ -1064,12 +1416,10 @@ class ApiModel {
1064
1416
  return ((_this$spec2 = this.spec) === null || _this$spec2 === void 0 ? void 0 : (_this$spec2$info = _this$spec2.info) === null || _this$spec2$info === void 0 ? void 0 : (_this$spec2$info$desc = _this$spec2$info.description) === null || _this$spec2$info$desc === void 0 ? void 0 : _this$spec2$info$desc.trim()) || '';
1065
1417
  }
1066
1418
  static fromString(specContent) {
1067
- var json = JSON.parse(specContent);
1068
- return ApiModel.fromJson(json);
1419
+ return specToModel(specContent);
1069
1420
  }
1070
1421
  static fromJson(json) {
1071
- var spec = new OAS.OpenApiBuilder(json).getSpec();
1072
- return new ApiModel(spec);
1422
+ return specToModel(json);
1073
1423
  }
1074
1424
  static isMethodSearch(criteria) {
1075
1425
  return criteria.has(SearchCriterion.method) || criteria.has(SearchCriterion.argument) || criteria.has(SearchCriterion.response) || criteria.has(SearchCriterion.status) || criteria.has(SearchCriterion.activityType);
@@ -1142,9 +1492,9 @@ class ApiModel {
1142
1492
  if (!(path instanceof Array)) {
1143
1493
  keys = path.split(splitter);
1144
1494
  }
1145
- for (var _key of keys) {
1146
- if (_key === '#') continue;
1147
- item = item[_key];
1495
+ for (var _key3 of keys) {
1496
+ if (_key3 === '#') continue;
1497
+ item = item[_key3];
1148
1498
  if (item == null) return null;
1149
1499
  }
1150
1500
  return item;
@@ -1166,7 +1516,7 @@ class ApiModel {
1166
1516
  return result;
1167
1517
  };
1168
1518
  if (typeof schema === 'string') {
1169
- if (schema.indexOf('/requestBodies/') < 0) return this.types[schema.substr(schema.lastIndexOf('/') + 1)];
1519
+ if (schema.indexOf('/requestBodies/') < 0) return this.types[schema.substring(schema.lastIndexOf('/') + 1)];
1170
1520
  var deref = this.jsonPath(schema);
1171
1521
  if (deref) {
1172
1522
  var ref = this.jsonPath(['content', 'application/json', 'schema', '$ref'], deref);
@@ -1178,8 +1528,9 @@ class ApiModel {
1178
1528
  if (schema.type === 'integer' && schema.format === 'int64') {
1179
1529
  return this.types.int64;
1180
1530
  }
1181
- if (schema.type === 'number' && schema.format) {
1182
- return this.types[schema.format];
1531
+ if (schema.type === 'number') {
1532
+ if (schema.format) return this.types[schema.format];
1533
+ return this.types.float;
1183
1534
  }
1184
1535
  if (schema.type === 'array' && schema.items) {
1185
1536
  var resolved = this.resolveType(schema.items);
@@ -1306,8 +1657,8 @@ class ApiModel {
1306
1657
  sortList(list) {
1307
1658
  var result = {};
1308
1659
  var sortedKeys = Object.keys(list).sort(localeSort);
1309
- for (var _key2 of sortedKeys) {
1310
- result[_key2] = list[_key2];
1660
+ for (var _key4 of sortedKeys) {
1661
+ result[_key4] = list[_key4];
1311
1662
  }
1312
1663
  return result;
1313
1664
  }
@@ -1422,7 +1773,7 @@ class ApiModel {
1422
1773
  if (!OAS.isReferenceObject(obj)) {
1423
1774
  var req = obj;
1424
1775
  if ('required' in req) {
1425
- required = req.required;
1776
+ required = Boolean(req.required);
1426
1777
  }
1427
1778
  }
1428
1779
  var typeSchema = {
@@ -1452,7 +1803,7 @@ class ApiModel {
1452
1803
  description: '',
1453
1804
  location: strBody,
1454
1805
  name: strBody,
1455
- required: required
1806
+ required
1456
1807
  }, type);
1457
1808
  }
1458
1809
  }