@looker/sdk-codegen 21.0.25 → 21.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/lib/codeGen.d.ts +7 -5
  3. package/lib/codeGen.js +24 -13
  4. package/lib/codeGen.js.map +1 -1
  5. package/lib/codeGenerators.d.ts +2 -2
  6. package/lib/codeGenerators.js.map +1 -1
  7. package/lib/csharp.gen.d.ts +3 -2
  8. package/lib/csharp.gen.js.map +1 -1
  9. package/lib/declarationInfo.d.ts +2 -2
  10. package/lib/declarationInfo.js.map +1 -1
  11. package/lib/esm/codeGen.js +24 -13
  12. package/lib/esm/codeGen.js.map +1 -1
  13. package/lib/esm/codeGenerators.js.map +1 -1
  14. package/lib/esm/csharp.gen.js.map +1 -1
  15. package/lib/esm/declarationInfo.js.map +1 -1
  16. package/lib/esm/exampleInfo.js.map +1 -1
  17. package/lib/esm/go.gen.js.map +1 -1
  18. package/lib/esm/kotlin.gen.js +89 -9
  19. package/lib/esm/kotlin.gen.js.map +1 -1
  20. package/lib/esm/pseudo.gen.js.map +1 -1
  21. package/lib/esm/python.gen.js +2 -2
  22. package/lib/esm/python.gen.js.map +1 -1
  23. package/lib/esm/sdkModels.js +199 -71
  24. package/lib/esm/sdkModels.js.map +1 -1
  25. package/lib/esm/specConverter.js.map +1 -1
  26. package/lib/esm/specDiff.js +1 -1
  27. package/lib/esm/specDiff.js.map +1 -1
  28. package/lib/esm/swift.gen.js +60 -8
  29. package/lib/esm/swift.gen.js.map +1 -1
  30. package/lib/esm/typescript.gen.js +12 -11
  31. package/lib/esm/typescript.gen.js.map +1 -1
  32. package/lib/exampleInfo.d.ts +1 -1
  33. package/lib/exampleInfo.js.map +1 -1
  34. package/lib/go.gen.d.ts +3 -2
  35. package/lib/go.gen.js.map +1 -1
  36. package/lib/kotlin.gen.d.ts +16 -2
  37. package/lib/kotlin.gen.js +88 -8
  38. package/lib/kotlin.gen.js.map +1 -1
  39. package/lib/pseudo.gen.d.ts +1 -1
  40. package/lib/pseudo.gen.js.map +1 -1
  41. package/lib/python.gen.d.ts +3 -2
  42. package/lib/python.gen.js +2 -2
  43. package/lib/python.gen.js.map +1 -1
  44. package/lib/sdkModels.d.ts +20 -5
  45. package/lib/sdkModels.js +208 -74
  46. package/lib/sdkModels.js.map +1 -1
  47. package/lib/specConverter.d.ts +7 -6
  48. package/lib/specConverter.js.map +1 -1
  49. package/lib/specDiff.d.ts +1 -1
  50. package/lib/specDiff.js +1 -1
  51. package/lib/specDiff.js.map +1 -1
  52. package/lib/swift.gen.d.ts +6 -2
  53. package/lib/swift.gen.js +60 -8
  54. package/lib/swift.gen.js.map +1 -1
  55. package/lib/typescript.gen.d.ts +4 -2
  56. package/lib/typescript.gen.js +12 -11
  57. package/lib/typescript.gen.js.map +1 -1
  58. package/package.json +4 -4
package/lib/python.gen.js CHANGED
@@ -63,7 +63,7 @@ class PythonGen extends _codeGen.CodeGen {
63
63
 
64
64
  _defineProperty(this, "pythonReservedKeywordClasses", new Set());
65
65
 
66
- _defineProperty(this, "methodsPrologue", _indent => "\n# ".concat(this.warnEditing(), "\nimport datetime\nfrom typing import Any, MutableMapping, Optional, Sequence, Union, cast\nimport warnings\n\nfrom . import models\nfrom ").concat(this.packagePath, ".rtl import api_methods\nfrom ").concat(this.packagePath, ".rtl import transport\n\nclass ").concat(this.packageName, "(api_methods.APIMethods):\n"));
66
+ _defineProperty(this, "methodsPrologue", _indent => "\n# ".concat(this.warnEditing(), "\nimport datetime\nfrom typing import Any, MutableMapping, Optional, Sequence, Union, cast\nimport warnings\n\nfrom . import models as mdls\nfrom ").concat(this.packagePath, ".rtl import api_methods\nfrom ").concat(this.packagePath, ".rtl import transport\n\nclass ").concat(this.packageName, "(api_methods.APIMethods):\n"));
67
67
 
68
68
  _defineProperty(this, "methodsEpilogue", _indent => this.apiVersion === '3.1' ? "LookerSDK = ".concat(this.packageName) : '');
69
69
 
@@ -391,7 +391,7 @@ class PythonGen extends _codeGen.CodeGen {
391
391
  if (format === 'models') {
392
392
  name = forwardRef ? "\"".concat(name, "\"") : name;
393
393
  } else if (format === 'methods') {
394
- name = "models.".concat(name);
394
+ name = "mdls.".concat(name);
395
395
  }
396
396
 
397
397
  return name;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/python.gen.ts"],"names":["PythonGen","CodeGen","indentStr","repeat","Set","_indent","warnEditing","packagePath","packageName","apiVersion","structureHookFR","apiRef","structureHookTK","hooks","join","prop","required","type","customType","EnumType","includes","className","sdkFileName","baseFileName","fileName","argGroup","args","length","nullStr","hash","arg","push","dataStructureDelimiter","beginRegion","indent","description","endRegion","_description","declareProperty","property","annotations","mappedType","typeMapModels","propName","name","pythonKeywords","has","propType","propDef","annotation","isBareForwardRef","bumper","methodReturnType","method","typeMapMethods","returnType","responseIsBoth","responseIsBinary","methodSignature","bump","params","allParams","forEach","p","declareParameter","head","trim","httpMethod","endpoint","commentHeader","paramDelimiter","param","location","strBody","writeableType","mapped","paramType","default","makeTheCall","inputs","origDelim","argDelimiter","resp","assignParams","initArg","declareType","decl","invalid","typeProperties","Object","values","requiredProperties","concat","optionalProperties","construct","inits","declareConstructorArg","result","properties","some","argFill","current","delimiter","match","replace","httpArgs","callerIndent","currIndent","bodyArg","queryArgs","queryParams","test","httpCall","deprecation","callOpener","it","toLowerCase","callArgs","callCloser","returnStmt","encodePathParams","encodings","pathParams","doEncode","declareMethod","summary","typeSignature","b2","attrs","isEnum","baseClass","usesReservedPythonKeyword","attr","forwardRef","text","prefixModelsNamespace","format","typeMap","asString","_","v","pythonTypes","any","boolean","byte","datetime","double","float","int32","int64","integer","number","password","asVal","string","uri","void","elementType","map","typeName","defaultValue","Error","JSON","stringify","mt"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport {\n Arg,\n ArgValues,\n EnumType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n strBody,\n} from './sdkModels'\nimport { CodeGen, IMappedType, CodeAssignment, trimInputs } from './codeGen'\n\nexport class PythonGen extends CodeGen {\n codePath = './python/'\n packagePath = 'looker_sdk'\n itself = 'self'\n fileExtension = '.py'\n commentStr = '# '\n nullStr = 'None'\n\n indentStr = ' '\n argDelimiter = `,\\n${this.indentStr.repeat(3)}`\n argSetSep = '='\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n dataStructureDelimiter = ', '\n enumDelimiter = '\\n'\n codeQuote = '\"'\n typeOpen = '('\n typeClose = ')'\n hashKeyQuote = '\"'\n useModelClassForTypes = true\n\n endTypeStr = ''\n\n // keyword.kwlist\n pythonKeywords = new Set<string>([\n 'False',\n 'None',\n 'True',\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'nonlocal',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield',\n ])\n\n // cattrs [un]structure hooks for model [de]serialization\n hooks: string[] = []\n structureHookFR = 'forward_ref_structure_hook'\n structureHookTK = 'translate_keys_structure_hook'\n pythonReservedKeywordClasses: Set<string> = new Set()\n\n methodsPrologue = (_indent: string) => `\n# ${this.warnEditing()}\nimport datetime\nfrom typing import Any, MutableMapping, Optional, Sequence, Union, cast\nimport warnings\n\nfrom . import models\nfrom ${this.packagePath}.rtl import api_methods\nfrom ${this.packagePath}.rtl import transport\n\nclass ${this.packageName}(api_methods.APIMethods):\n`\n\n methodsEpilogue = (_indent: string) =>\n this.apiVersion === '3.1' ? `LookerSDK = ${this.packageName}` : ''\n\n modelsPrologue = (_indent: string) => `\n# ${this.warnEditing()}\nimport datetime\nimport enum\nfrom typing import Any, MutableMapping, Optional, Sequence\n\ntry:\n from typing import ForwardRef # type: ignore\nexcept ImportError:\n from typing import _ForwardRef as ForwardRef # type: ignore\n\nimport attr\n\nfrom ${this.packagePath}.rtl import model\nfrom ${this.packagePath}.rtl import serialize as sr\n\nEXPLICIT_NULL = model.EXPLICIT_NULL # type: ignore\nDelimSequence = model.DelimSequence\n`\n\n modelsEpilogue = (_indent: string) => `\n\n# The following cattrs structure hook registrations are a workaround\n# for https://github.com/Tinche/cattrs/pull/42 Once this issue is resolved\n# these calls will be removed.\n\nimport functools # noqa:E402\n\n${\n this.structureHookFR\n} = functools.partial(sr.forward_ref_structure_hook, globals(), sr.converter${\n this.apiRef\n })\n${\n this.structureHookTK\n} = functools.partial(sr.translate_keys_structure_hook, sr.converter${\n this.apiRef\n })\n${this.hooks.join('\\n')}\n`\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`sdk/api${this.apiRef}/${baseFileName}`)\n }\n\n argGroup(_indent: string, args: Arg[]) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n hash.push(`\"${arg}\": ${arg}`)\n }\n return `{${hash.join(this.dataStructureDelimiter)}}`\n }\n\n beginRegion(indent: string, description: string): string {\n // Sadly, Black reformats this to \"# region\" and IntelliJ doesn't recognize it either way\n return `${indent}#region ${description}`\n }\n\n endRegion(indent: string, _description: string): string {\n // Sadly, Black reformats this to \"# endregion\" and IntelliJ doesn't recognize it either way\n return `${indent}#endregion`\n }\n\n declareProperty(indent: string, property: IProperty, annotations = false) {\n const mappedType = this.typeMapModels(property.type)\n let propName = property.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n }\n let propType = mappedType.name\n if (!property.required) {\n propType = `Optional[${mappedType.name}]`\n }\n\n let propDef\n if (annotations) {\n let annotation = propType\n if (this.isBareForwardRef(property)) {\n annotation = `ForwardRef(${propType})`\n }\n propDef = `${this.bumper(indent)}\"${propName}\": ${annotation}`\n } else {\n if (!property.required) {\n propType += ` = ${this.nullStr}`\n }\n propDef = `${indent}${propName}: ${propType}`\n }\n return propDef\n }\n\n private methodReturnType(method: IMethod) {\n const type = this.typeMapMethods(method.type)\n let returnType = type.name\n if (method.responseIsBoth()) {\n returnType = `Union[${returnType}, bytes]`\n } else if (method.responseIsBinary()) {\n returnType = 'bytes'\n }\n return returnType\n }\n\n // because Python has named default parameters, Request types are not required like\n // they are for TypeScript\n methodSignature(indent: string, method: IMethod) {\n const returnType = this.methodReturnType(method)\n const bump = this.bumper(indent)\n const params: string[] = []\n const args = method.allParams\n if (args && args.length > 0) {\n method.allParams.forEach((p) =>\n params.push(this.declareParameter(bump, method, p))\n )\n }\n let head = method.description?.trim()\n head =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${returnType}`\n params.push(\n `${bump}transport_options: Optional[transport.TransportOptions] = None,`\n )\n return (\n this.commentHeader(indent, head) +\n `${indent}def ${method.name}(\\n` +\n `${bump}self${params.length > 0 ? ',\\n' : ''}` +\n `${params.join(this.paramDelimiter)}\\n` +\n `${indent}) -> ${returnType}:\\n`\n )\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n let type: IType\n if (param.location === strBody) {\n type = this.writeableType(param.type, method) || param.type\n } else {\n type = param.type\n }\n const mapped = this.typeMapMethods(type)\n const paramType = param.required ? mapped.name : `Optional[${mapped.name}]`\n return (\n this.commentHeader(indent, param.description) +\n `${indent}${param.name}: ${paramType}` +\n (param.required ? '' : ` = ${mapped.default}`)\n )\n }\n\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n const origDelim = this.argDelimiter\n this.argDelimiter = `,\\n${this.indentStr}`\n inputs = trimInputs(inputs)\n const resp = `response = sdk.${method.name}(`\n const args = this.assignParams(method, inputs)\n this.argDelimiter = origDelim\n return `${resp}${args})`\n }\n\n initArg(indent: string, property: IProperty) {\n let propName = property.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n }\n return `${indent}self.${propName} = ${propName}`\n }\n\n declareType(indent: string, type: IType) {\n let decl = super.declareType(indent, type)\n if (type instanceof EnumType) {\n const invalid =\n 'invalid_api_enum_value = \"invalid_api_enum_value\"' +\n '\\n\\n\\n# https://github.com/python/mypy/issues/2427' +\n `\\n${type.name}.__new__ = model.safe_enum__new__ # type: ignore`\n decl += `\\n${this.bumper(indent)}${invalid}`\n }\n return decl\n }\n\n typeProperties(type: IType) {\n return Object.values(type.requiredProperties).concat(\n Object.values(type.optionalProperties)\n )\n }\n\n private isBareForwardRef = (prop: IProperty) => {\n // contains a \"bare\" forward reference e.g. `result_format: \"ResultFormat\"`\n // so we need to emit the `__annotations__` property\n return (\n prop.required &&\n (prop.type.customType || prop.type instanceof EnumType) &&\n !['ArrayType', 'HashType', 'DelimArrayType'].includes(prop.type.className)\n )\n }\n\n /**\n * Ideally we'd rely on @attr.s to generate the constructor for us\n * However, neither Jedi (https://github.com/davidhalter/jedi-vim/issues/816)\n * nor microsoft/python-language-server\n * (https://github.com/microsoft/python-language-server/issues/399)\n * display good tooltips for these auto-generated __init__ methods. So for\n * now we'll generate them ourselves following the functionality of\n * @attr.s(kw_only=True) we'll only allow kw_args.\n */\n construct(indent: string, type: IType) {\n if (type instanceof EnumType) return ''\n indent = this.bumper(indent)\n const bump = this.bumper(indent)\n const annotations: string[] = []\n const args: string[] = []\n const inits: string[] = []\n this.typeProperties(type).forEach((prop) => {\n annotations.push(this.declareProperty(indent, prop, true))\n args.push(this.declareConstructorArg('', prop))\n inits.push(this.initArg(bump, prop))\n })\n let result = ''\n if (Object.values(type.properties).some(this.isBareForwardRef)) {\n result =\n `\\n${indent}__annotations__ = {\\n` +\n `${annotations.join(',\\n')}` +\n `\\n${indent}}`\n }\n result +=\n `\\n\\n${indent}def __init__(self, *${this.argDelimiter}` +\n `${args.join(this.argDelimiter)}):\\n` +\n inits.join('\\n')\n return result\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n const mappedType = this.typeMapModels(property.type)\n let propType: string\n if (property.required) {\n propType = mappedType.name\n } else {\n propType = `Optional[${mappedType.name}] = ${this.nullStr}`\n }\n let propName = property.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n }\n return `${indent}${propName}: ${propType}`\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): 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 let delimiter = ',\\n'\n if (!current) {\n delimiter = ''\n // Caller manually inserted delimiter followed by inline comment\n } else if (args.match(/, {2}#/)) {\n delimiter = delimiter.replace(',', '')\n }\n return `${args}${delimiter}${current}`\n }\n\n httpArgs(callerIndent: string, method: IMethod): string {\n const currIndent = this.bumper(callerIndent)\n let args = ''\n args = this.argFill(\n args,\n `${currIndent}transport_options=transport_options`\n )\n if (method.bodyArg) {\n args = this.argFill(args, `${currIndent}body=${method.bodyArg}`)\n }\n if (method.queryArgs.length) {\n const queryParams = this.argGroup('', method.queryArgs)\n args = this.argFill(args, `${currIndent}query_params=${queryParams}`)\n }\n let returnType = this.methodReturnType(method)\n if (method.responseIsBoth()) {\n // cattrs needs the python object Union[<rt>, bytes] in order\n // to properly deserialize the response. However, this argument\n // is passed as a value so we get a mypy error that the argument\n // has type \"object\" instead of TStructure. Hence the # type: ignore\n returnType += ', # type: ignore'\n }\n args = this.argFill(args, `${currIndent}structure=${returnType}`)\n let endpoint = `\"${method.endpoint}\"`\n if (/\\{\\w+\\}/.test(endpoint)) {\n // avoid flake8: f-string is missing placeholders\n endpoint = `f${endpoint}`\n }\n args = this.argFill(args, `${currIndent}path=${endpoint}`)\n return args\n }\n\n httpCall(callerIndent: string, method: IMethod): string {\n // callOpener itself is nested inside a cast()\n const currIndent = this.bumper(callerIndent)\n let deprecation = ''\n if (method.name === 'login_user') {\n deprecation =\n `${callerIndent}warnings.warn(\"login_user behavior changed significantly ` +\n `in 21.4.0. See https://git.io/JOtH1\")\\n`\n }\n const callOpener =\n `${callerIndent}response = cast(\\n` +\n `${currIndent}${this.methodReturnType(method)},\\n` +\n `${currIndent}${this.it(method.httpMethod.toLowerCase())}(\\n`\n const callArgs = `${this.httpArgs(currIndent, method)}\\n`\n const callCloser = `${currIndent})\\n${callerIndent})\\n`\n const returnStmt = `${callerIndent}return response`\n return deprecation + callOpener + callArgs + callCloser + returnStmt\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n const pathParams = method.pathParams\n if (pathParams.length > 0) {\n for (const param of pathParams) {\n if (param.doEncode()) {\n encodings += `${indent}${param.name} = self.encode_path_param(${param.name})\\n`\n }\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n\n return (\n this.methodSignature(indent, method) +\n this.summary(bump, method.summary) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method)\n )\n }\n\n typeSignature(indent: string, type: IType) {\n const bump = this.bumper(indent)\n const b2 = this.bumper(bump)\n const attrs: string[] = []\n const isEnum = type instanceof EnumType\n const baseClass = isEnum ? 'enum.Enum' : 'model.Model'\n let usesReservedPythonKeyword = false\n\n if (!isEnum) {\n for (const prop of this.typeProperties(type)) {\n let propName = prop.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n usesReservedPythonKeyword = true\n }\n let attr = `${b2}${propName}:`\n if (prop.description) {\n attr += ` ${prop.description}`\n }\n attrs.push(attr)\n }\n }\n\n const forwardRef = `ForwardRef(\"${type.name}\")`\n this.hooks.push(\n `sr.converter${this.apiRef}.register_structure_hook(\\n${bump}${forwardRef}, # type: ignore\\n${bump}${this.structureHookFR} # type:ignore\\n)`\n )\n if (usesReservedPythonKeyword) {\n this.hooks.push(\n `sr.converter${this.apiRef}.register_structure_hook(\\n${bump}${type.name}, # type: ignore\\n${bump}${this.structureHookTK} # type:ignore\\n)`\n )\n }\n\n let result =\n `\\n` +\n (isEnum ? '' : `${indent}@attr.s(auto_attribs=True, init=False)\\n`) +\n `${indent}class ${type.name}(${baseClass}):\\n` +\n `${bump}\"\"\"\\n` +\n (type.description ? `${bump}${type.description}\\n\\n` : '')\n\n if (attrs.length > 0) {\n result += `${bump}Attributes:\\n` + `${attrs.join('\\n')}\\n`\n }\n\n return result + `${bump}\"\"\"\\n`\n }\n\n summary(indent: string, text: string | undefined) {\n return text ? `${indent}\"\"\"${text}\"\"\"\\n` : ''\n }\n\n // when format is \"methods\" that means we're in the methods.py module\n // and we need to reference the type by the `models.` package name\n prefixModelsNamespace(\n name: string,\n format: 'models' | 'methods',\n forwardRef = false\n ): string {\n if (format === 'models') {\n // need to quote this forwardRef\n name = forwardRef ? `\"${name}\"` : name\n } else if (format === 'methods') {\n name = `models.${name}`\n }\n return name\n }\n\n // hack default format to 'methods' so that argValue() calls the right thing\n typeMap(type: IType, format: 'models' | 'methods' = 'methods'): IMappedType {\n const asString: CodeAssignment = (_, v) => `\"${v}\"`\n const pythonTypes: Record<string, IMappedType> = {\n any: { default: this.nullStr, name: 'Any' },\n boolean: { default: this.nullStr, name: 'bool' },\n byte: { default: this.nullStr, name: 'bytes' },\n datetime: { default: this.nullStr, name: 'datetime.datetime' },\n double: { default: this.nullStr, name: 'float' },\n float: { default: this.nullStr, name: 'float' },\n int32: { default: this.nullStr, name: 'int' },\n int64: { default: this.nullStr, name: 'int' },\n integer: { default: this.nullStr, name: 'int' },\n number: { default: this.nullStr, name: 'float' },\n password: { default: this.nullStr, name: 'str', asVal: asString },\n string: { default: this.nullStr, name: 'str', asVal: asString },\n uri: { default: this.nullStr, name: 'str', asVal: asString },\n void: { default: this.nullStr, name: 'None' },\n }\n\n super.typeMap(type)\n if (type.elementType) {\n const map = this.typeMap(type.elementType, format)\n let typeName: string\n let name: string\n const defaultValue = this.nullStr\n let asVal: CodeAssignment | undefined\n switch (type.className) {\n case 'ArrayType':\n typeName = 'Sequence'\n name = `${typeName}[${map.name}]`\n break\n case 'HashType':\n typeName = 'MutableMapping'\n // TODO fix bad API spec, like MergeQuery vis_config\n name =\n typeName +\n '[str, ' +\n (type.elementType.name === 'string' ? 'Any' : map.name) +\n ']'\n break\n case 'DelimArrayType':\n typeName = this.prefixModelsNamespace('DelimSequence', format)\n name = `${typeName}[${map.name}]`\n asVal = (_, v) => `${typeName}([${v}])`\n break\n case 'EnumType':\n name = typeName = this.prefixModelsNamespace(type.name, format, true)\n asVal = (_, v) => `${typeName}.${v}`\n break\n default:\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n const mt: IMappedType = { default: defaultValue, name: name }\n if (asVal) {\n mt.asVal = asVal\n }\n return mt\n }\n if (!type.name) {\n throw new Error('Cannot output a nameless type.')\n }\n const name = this.prefixModelsNamespace(\n type.name,\n format,\n !!type.customType\n )\n const result = pythonTypes[type.name]\n return result || { default: this.nullStr, name: name }\n }\n\n typeMapMethods(type: IType) {\n return this.typeMap(type, 'methods')\n }\n\n typeMapModels(type: IType) {\n return this.typeMap(type, 'models')\n }\n}\n"],"file":"python.gen.js"}
1
+ {"version":3,"sources":["../src/python.gen.ts"],"names":["PythonGen","CodeGen","indentStr","repeat","Set","_indent","warnEditing","packagePath","packageName","apiVersion","structureHookFR","apiRef","structureHookTK","hooks","join","prop","required","type","customType","EnumType","includes","className","sdkFileName","baseFileName","fileName","argGroup","args","length","nullStr","hash","arg","push","dataStructureDelimiter","beginRegion","indent","description","endRegion","_description","declareProperty","property","annotations","mappedType","typeMapModels","propName","name","pythonKeywords","has","propType","propDef","annotation","isBareForwardRef","bumper","methodReturnType","method","typeMapMethods","returnType","responseIsBoth","responseIsBinary","methodSignature","bump","params","allParams","forEach","p","declareParameter","head","trim","httpMethod","endpoint","commentHeader","paramDelimiter","param","location","strBody","writeableType","mapped","paramType","default","makeTheCall","inputs","origDelim","argDelimiter","resp","assignParams","initArg","declareType","decl","invalid","typeProperties","Object","values","requiredProperties","concat","optionalProperties","construct","inits","declareConstructorArg","result","properties","some","argFill","current","delimiter","match","replace","httpArgs","callerIndent","currIndent","bodyArg","queryArgs","queryParams","test","httpCall","deprecation","callOpener","it","toLowerCase","callArgs","callCloser","returnStmt","encodePathParams","encodings","pathParams","doEncode","declareMethod","summary","typeSignature","b2","attrs","isEnum","baseClass","usesReservedPythonKeyword","attr","forwardRef","text","prefixModelsNamespace","format","typeMap","asString","_","v","pythonTypes","any","boolean","byte","datetime","double","float","int32","int64","integer","number","password","asVal","string","uri","void","elementType","map","typeName","defaultValue","Error","JSON","stringify","mt"],"mappings":"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","sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type {\n Arg,\n ArgValues,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport { EnumType, strBody } from './sdkModels'\nimport type { IMappedType, CodeAssignment } from './codeGen'\nimport { CodeGen, trimInputs } from './codeGen'\n\nexport class PythonGen extends CodeGen {\n codePath = './python/'\n packagePath = 'looker_sdk'\n itself = 'self'\n fileExtension = '.py'\n commentStr = '# '\n nullStr = 'None'\n\n indentStr = ' '\n argDelimiter = `,\\n${this.indentStr.repeat(3)}`\n argSetSep = '='\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n dataStructureDelimiter = ', '\n enumDelimiter = '\\n'\n codeQuote = '\"'\n typeOpen = '('\n typeClose = ')'\n hashKeyQuote = '\"'\n useModelClassForTypes = true\n\n endTypeStr = ''\n\n // keyword.kwlist\n pythonKeywords = new Set<string>([\n 'False',\n 'None',\n 'True',\n 'and',\n 'as',\n 'assert',\n 'async',\n 'await',\n 'break',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'nonlocal',\n 'not',\n 'or',\n 'pass',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield',\n ])\n\n // cattrs [un]structure hooks for model [de]serialization\n hooks: string[] = []\n structureHookFR = 'forward_ref_structure_hook'\n structureHookTK = 'translate_keys_structure_hook'\n pythonReservedKeywordClasses: Set<string> = new Set()\n\n methodsPrologue = (_indent: string) => `\n# ${this.warnEditing()}\nimport datetime\nfrom typing import Any, MutableMapping, Optional, Sequence, Union, cast\nimport warnings\n\nfrom . import models as mdls\nfrom ${this.packagePath}.rtl import api_methods\nfrom ${this.packagePath}.rtl import transport\n\nclass ${this.packageName}(api_methods.APIMethods):\n`\n\n methodsEpilogue = (_indent: string) =>\n this.apiVersion === '3.1' ? `LookerSDK = ${this.packageName}` : ''\n\n modelsPrologue = (_indent: string) => `\n# ${this.warnEditing()}\nimport datetime\nimport enum\nfrom typing import Any, MutableMapping, Optional, Sequence\n\ntry:\n from typing import ForwardRef # type: ignore\nexcept ImportError:\n from typing import _ForwardRef as ForwardRef # type: ignore\n\nimport attr\n\nfrom ${this.packagePath}.rtl import model\nfrom ${this.packagePath}.rtl import serialize as sr\n\nEXPLICIT_NULL = model.EXPLICIT_NULL # type: ignore\nDelimSequence = model.DelimSequence\n`\n\n modelsEpilogue = (_indent: string) => `\n\n# The following cattrs structure hook registrations are a workaround\n# for https://github.com/Tinche/cattrs/pull/42 Once this issue is resolved\n# these calls will be removed.\n\nimport functools # noqa:E402\n\n${\n this.structureHookFR\n} = functools.partial(sr.forward_ref_structure_hook, globals(), sr.converter${\n this.apiRef\n })\n${\n this.structureHookTK\n} = functools.partial(sr.translate_keys_structure_hook, sr.converter${\n this.apiRef\n })\n${this.hooks.join('\\n')}\n`\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`sdk/api${this.apiRef}/${baseFileName}`)\n }\n\n argGroup(_indent: string, args: Arg[]) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n hash.push(`\"${arg}\": ${arg}`)\n }\n return `{${hash.join(this.dataStructureDelimiter)}}`\n }\n\n beginRegion(indent: string, description: string): string {\n // Sadly, Black reformats this to \"# region\" and IntelliJ doesn't recognize it either way\n return `${indent}#region ${description}`\n }\n\n endRegion(indent: string, _description: string): string {\n // Sadly, Black reformats this to \"# endregion\" and IntelliJ doesn't recognize it either way\n return `${indent}#endregion`\n }\n\n declareProperty(indent: string, property: IProperty, annotations = false) {\n const mappedType = this.typeMapModels(property.type)\n let propName = property.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n }\n let propType = mappedType.name\n if (!property.required) {\n propType = `Optional[${mappedType.name}]`\n }\n\n let propDef\n if (annotations) {\n let annotation = propType\n if (this.isBareForwardRef(property)) {\n annotation = `ForwardRef(${propType})`\n }\n propDef = `${this.bumper(indent)}\"${propName}\": ${annotation}`\n } else {\n if (!property.required) {\n propType += ` = ${this.nullStr}`\n }\n propDef = `${indent}${propName}: ${propType}`\n }\n return propDef\n }\n\n private methodReturnType(method: IMethod) {\n const type = this.typeMapMethods(method.type)\n let returnType = type.name\n if (method.responseIsBoth()) {\n returnType = `Union[${returnType}, bytes]`\n } else if (method.responseIsBinary()) {\n returnType = 'bytes'\n }\n return returnType\n }\n\n // because Python has named default parameters, Request types are not required like\n // they are for TypeScript\n methodSignature(indent: string, method: IMethod) {\n const returnType = this.methodReturnType(method)\n const bump = this.bumper(indent)\n const params: string[] = []\n const args = method.allParams\n if (args && args.length > 0) {\n method.allParams.forEach((p) =>\n params.push(this.declareParameter(bump, method, p))\n )\n }\n let head = method.description?.trim()\n head =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${returnType}`\n params.push(\n `${bump}transport_options: Optional[transport.TransportOptions] = None,`\n )\n return (\n this.commentHeader(indent, head) +\n `${indent}def ${method.name}(\\n` +\n `${bump}self${params.length > 0 ? ',\\n' : ''}` +\n `${params.join(this.paramDelimiter)}\\n` +\n `${indent}) -> ${returnType}:\\n`\n )\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n let type: IType\n if (param.location === strBody) {\n type = this.writeableType(param.type, method) || param.type\n } else {\n type = param.type\n }\n const mapped = this.typeMapMethods(type)\n const paramType = param.required ? mapped.name : `Optional[${mapped.name}]`\n return (\n this.commentHeader(indent, param.description) +\n `${indent}${param.name}: ${paramType}` +\n (param.required ? '' : ` = ${mapped.default}`)\n )\n }\n\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n const origDelim = this.argDelimiter\n this.argDelimiter = `,\\n${this.indentStr}`\n inputs = trimInputs(inputs)\n const resp = `response = sdk.${method.name}(`\n const args = this.assignParams(method, inputs)\n this.argDelimiter = origDelim\n return `${resp}${args})`\n }\n\n initArg(indent: string, property: IProperty) {\n let propName = property.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n }\n return `${indent}self.${propName} = ${propName}`\n }\n\n declareType(indent: string, type: IType) {\n let decl = super.declareType(indent, type)\n if (type instanceof EnumType) {\n const invalid =\n 'invalid_api_enum_value = \"invalid_api_enum_value\"' +\n '\\n\\n\\n# https://github.com/python/mypy/issues/2427' +\n `\\n${type.name}.__new__ = model.safe_enum__new__ # type: ignore`\n decl += `\\n${this.bumper(indent)}${invalid}`\n }\n return decl\n }\n\n typeProperties(type: IType) {\n return Object.values(type.requiredProperties).concat(\n Object.values(type.optionalProperties)\n )\n }\n\n private isBareForwardRef = (prop: IProperty) => {\n // contains a \"bare\" forward reference e.g. `result_format: \"ResultFormat\"`\n // so we need to emit the `__annotations__` property\n return (\n prop.required &&\n (prop.type.customType || prop.type instanceof EnumType) &&\n !['ArrayType', 'HashType', 'DelimArrayType'].includes(prop.type.className)\n )\n }\n\n /**\n * Ideally we'd rely on @attr.s to generate the constructor for us\n * However, neither Jedi (https://github.com/davidhalter/jedi-vim/issues/816)\n * nor microsoft/python-language-server\n * (https://github.com/microsoft/python-language-server/issues/399)\n * display good tooltips for these auto-generated __init__ methods. So for\n * now we'll generate them ourselves following the functionality of\n * @attr.s(kw_only=True) we'll only allow kw_args.\n */\n construct(indent: string, type: IType) {\n if (type instanceof EnumType) return ''\n indent = this.bumper(indent)\n const bump = this.bumper(indent)\n const annotations: string[] = []\n const args: string[] = []\n const inits: string[] = []\n this.typeProperties(type).forEach((prop) => {\n annotations.push(this.declareProperty(indent, prop, true))\n args.push(this.declareConstructorArg('', prop))\n inits.push(this.initArg(bump, prop))\n })\n let result = ''\n if (Object.values(type.properties).some(this.isBareForwardRef)) {\n result =\n `\\n${indent}__annotations__ = {\\n` +\n `${annotations.join(',\\n')}` +\n `\\n${indent}}`\n }\n result +=\n `\\n\\n${indent}def __init__(self, *${this.argDelimiter}` +\n `${args.join(this.argDelimiter)}):\\n` +\n inits.join('\\n')\n return result\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n const mappedType = this.typeMapModels(property.type)\n let propType: string\n if (property.required) {\n propType = mappedType.name\n } else {\n propType = `Optional[${mappedType.name}] = ${this.nullStr}`\n }\n let propName = property.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n }\n return `${indent}${propName}: ${propType}`\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): 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 let delimiter = ',\\n'\n if (!current) {\n delimiter = ''\n // Caller manually inserted delimiter followed by inline comment\n } else if (args.match(/, {2}#/)) {\n delimiter = delimiter.replace(',', '')\n }\n return `${args}${delimiter}${current}`\n }\n\n httpArgs(callerIndent: string, method: IMethod): string {\n const currIndent = this.bumper(callerIndent)\n let args = ''\n args = this.argFill(\n args,\n `${currIndent}transport_options=transport_options`\n )\n if (method.bodyArg) {\n args = this.argFill(args, `${currIndent}body=${method.bodyArg}`)\n }\n if (method.queryArgs.length) {\n const queryParams = this.argGroup('', method.queryArgs)\n args = this.argFill(args, `${currIndent}query_params=${queryParams}`)\n }\n let returnType = this.methodReturnType(method)\n if (method.responseIsBoth()) {\n // cattrs needs the python object Union[<rt>, bytes] in order\n // to properly deserialize the response. However, this argument\n // is passed as a value so we get a mypy error that the argument\n // has type \"object\" instead of TStructure. Hence the # type: ignore\n returnType += ', # type: ignore'\n }\n args = this.argFill(args, `${currIndent}structure=${returnType}`)\n let endpoint = `\"${method.endpoint}\"`\n if (/\\{\\w+\\}/.test(endpoint)) {\n // avoid flake8: f-string is missing placeholders\n endpoint = `f${endpoint}`\n }\n args = this.argFill(args, `${currIndent}path=${endpoint}`)\n return args\n }\n\n httpCall(callerIndent: string, method: IMethod): string {\n // callOpener itself is nested inside a cast()\n const currIndent = this.bumper(callerIndent)\n let deprecation = ''\n if (method.name === 'login_user') {\n deprecation =\n `${callerIndent}warnings.warn(\"login_user behavior changed significantly ` +\n `in 21.4.0. See https://git.io/JOtH1\")\\n`\n }\n const callOpener =\n `${callerIndent}response = cast(\\n` +\n `${currIndent}${this.methodReturnType(method)},\\n` +\n `${currIndent}${this.it(method.httpMethod.toLowerCase())}(\\n`\n const callArgs = `${this.httpArgs(currIndent, method)}\\n`\n const callCloser = `${currIndent})\\n${callerIndent})\\n`\n const returnStmt = `${callerIndent}return response`\n return deprecation + callOpener + callArgs + callCloser + returnStmt\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n const pathParams = method.pathParams\n if (pathParams.length > 0) {\n for (const param of pathParams) {\n if (param.doEncode()) {\n encodings += `${indent}${param.name} = self.encode_path_param(${param.name})\\n`\n }\n }\n }\n return encodings\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n\n return (\n this.methodSignature(indent, method) +\n this.summary(bump, method.summary) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method)\n )\n }\n\n typeSignature(indent: string, type: IType) {\n const bump = this.bumper(indent)\n const b2 = this.bumper(bump)\n const attrs: string[] = []\n const isEnum = type instanceof EnumType\n const baseClass = isEnum ? 'enum.Enum' : 'model.Model'\n let usesReservedPythonKeyword = false\n\n if (!isEnum) {\n for (const prop of this.typeProperties(type)) {\n let propName = prop.name\n if (this.pythonKeywords.has(propName)) {\n propName = propName + '_'\n usesReservedPythonKeyword = true\n }\n let attr = `${b2}${propName}:`\n if (prop.description) {\n attr += ` ${prop.description}`\n }\n attrs.push(attr)\n }\n }\n\n const forwardRef = `ForwardRef(\"${type.name}\")`\n this.hooks.push(\n `sr.converter${this.apiRef}.register_structure_hook(\\n${bump}${forwardRef}, # type: ignore\\n${bump}${this.structureHookFR} # type:ignore\\n)`\n )\n if (usesReservedPythonKeyword) {\n this.hooks.push(\n `sr.converter${this.apiRef}.register_structure_hook(\\n${bump}${type.name}, # type: ignore\\n${bump}${this.structureHookTK} # type:ignore\\n)`\n )\n }\n\n let result =\n `\\n` +\n (isEnum ? '' : `${indent}@attr.s(auto_attribs=True, init=False)\\n`) +\n `${indent}class ${type.name}(${baseClass}):\\n` +\n `${bump}\"\"\"\\n` +\n (type.description ? `${bump}${type.description}\\n\\n` : '')\n\n if (attrs.length > 0) {\n result += `${bump}Attributes:\\n` + `${attrs.join('\\n')}\\n`\n }\n\n return result + `${bump}\"\"\"\\n`\n }\n\n summary(indent: string, text: string | undefined) {\n return text ? `${indent}\"\"\"${text}\"\"\"\\n` : ''\n }\n\n // when format is \"methods\" that means we're in the methods.py module\n // and we need to reference the type by the `mdls.` package name\n prefixModelsNamespace(\n name: string,\n format: 'models' | 'methods',\n forwardRef = false\n ): string {\n if (format === 'models') {\n // need to quote this forwardRef\n name = forwardRef ? `\"${name}\"` : name\n } else if (format === 'methods') {\n name = `mdls.${name}`\n }\n return name\n }\n\n // hack default format to 'methods' so that argValue() calls the right thing\n typeMap(type: IType, format: 'models' | 'methods' = 'methods'): IMappedType {\n const asString: CodeAssignment = (_, v) => `\"${v}\"`\n const pythonTypes: Record<string, IMappedType> = {\n any: { default: this.nullStr, name: 'Any' },\n boolean: { default: this.nullStr, name: 'bool' },\n byte: { default: this.nullStr, name: 'bytes' },\n datetime: { default: this.nullStr, name: 'datetime.datetime' },\n double: { default: this.nullStr, name: 'float' },\n float: { default: this.nullStr, name: 'float' },\n int32: { default: this.nullStr, name: 'int' },\n int64: { default: this.nullStr, name: 'int' },\n integer: { default: this.nullStr, name: 'int' },\n number: { default: this.nullStr, name: 'float' },\n password: { default: this.nullStr, name: 'str', asVal: asString },\n string: { default: this.nullStr, name: 'str', asVal: asString },\n uri: { default: this.nullStr, name: 'str', asVal: asString },\n void: { default: this.nullStr, name: 'None' },\n }\n\n super.typeMap(type)\n if (type.elementType) {\n const map = this.typeMap(type.elementType, format)\n let typeName: string\n let name: string\n const defaultValue = this.nullStr\n let asVal: CodeAssignment | undefined\n switch (type.className) {\n case 'ArrayType':\n typeName = 'Sequence'\n name = `${typeName}[${map.name}]`\n break\n case 'HashType':\n typeName = 'MutableMapping'\n // TODO fix bad API spec, like MergeQuery vis_config\n name =\n typeName +\n '[str, ' +\n (type.elementType.name === 'string' ? 'Any' : map.name) +\n ']'\n break\n case 'DelimArrayType':\n typeName = this.prefixModelsNamespace('DelimSequence', format)\n name = `${typeName}[${map.name}]`\n asVal = (_, v) => `${typeName}([${v}])`\n break\n case 'EnumType':\n name = typeName = this.prefixModelsNamespace(type.name, format, true)\n asVal = (_, v) => `${typeName}.${v}`\n break\n default:\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n const mt: IMappedType = { default: defaultValue, name: name }\n if (asVal) {\n mt.asVal = asVal\n }\n return mt\n }\n if (!type.name) {\n throw new Error('Cannot output a nameless type.')\n }\n const name = this.prefixModelsNamespace(\n type.name,\n format,\n !!type.customType\n )\n const result = pythonTypes[type.name]\n return result || { default: this.nullStr, name: name }\n }\n\n typeMapMethods(type: IType) {\n return this.typeMap(type, 'methods')\n }\n\n typeMapModels(type: IType) {\n return this.typeMap(type, 'models')\n }\n}\n"],"file":"python.gen.js"}
@@ -1,5 +1,6 @@
1
1
  import * as OAS from 'openapi3-ts';
2
- import { HttpMethod, ResponseMode } from '@looker/sdk-rtl';
2
+ import type { HttpMethod } from '@looker/sdk-rtl';
3
+ import { ResponseMode } from '@looker/sdk-rtl';
3
4
  export declare const strBody = "body";
4
5
  export declare const strRequest = "Request";
5
6
  export declare const strWrite = "Write";
@@ -50,13 +51,15 @@ export declare type KeyedCollection<T> = Record<string, T>;
50
51
  export declare type MethodList = KeyedCollection<IMethod>;
51
52
  export declare type TypeList = KeyedCollection<IType>;
52
53
  export declare type TagList = KeyedCollection<MethodList>;
54
+ export declare type TypeTagList = KeyedCollection<TypeList>;
53
55
  export declare type PropertyList = KeyedCollection<IProperty>;
54
56
  export declare type KeyList = Set<string>;
55
57
  export declare type EnumValueType = string | number;
56
- export declare const keyValues: (keys: KeyList) => string[];
58
+ export declare const keyValues: (list: KeyList) => string[];
57
59
  export declare const mayQuote: (value: any, quoteChar?: string) => string;
58
60
  export declare const methodRefs: (api: IApiModel, refs: KeyList) => IMethod[];
59
61
  export declare const typeRefs: (api: IApiModel, refs: KeyList) => IType[];
62
+ export declare const firstMethodRef: (api: ApiModel, type: IType, stack?: KeyList) => IMethod;
60
63
  export interface ISymbolList {
61
64
  methods: MethodList;
62
65
  types: TypeList;
@@ -76,8 +79,8 @@ export declare enum SearchCriterion {
76
79
  export declare type SearchCriterionTerm = keyof typeof SearchCriterion;
77
80
  export declare type SearchCriteria = Set<SearchCriterion>;
78
81
  export declare const SearchAll: SearchCriteria;
79
- export declare const CriteriaToSet: (criteria: string[]) => SearchCriteria;
80
- export declare const SetToCriteria: (criteria: SearchCriteria) => string[];
82
+ export declare const criteriaToSet: (criteria: string[]) => SearchCriteria;
83
+ export declare const setToCriteria: (criteria: SearchCriteria) => string[];
81
84
  export interface ISearchResult {
82
85
  ok: boolean;
83
86
  tags: TagList;
@@ -87,6 +90,13 @@ export interface ISearchResult {
87
90
  export interface ISymbolTable extends ISymbolList {
88
91
  resolveType(schema: OAS.SchemaObject): IType;
89
92
  }
93
+ export declare enum MetaType {
94
+ Intrinsic = "Intrinsic",
95
+ Specification = "Specification",
96
+ Write = "Write",
97
+ Request = "Request",
98
+ Enumerated = "Enumerated"
99
+ }
90
100
  export interface IType extends ISymbol {
91
101
  properties: PropertyList;
92
102
  requiredProperties: PropertyList;
@@ -108,6 +118,7 @@ export interface IType extends ISymbol {
108
118
  parentTypes: KeyList;
109
119
  className: string;
110
120
  intrinsic: boolean;
121
+ metaType: MetaType;
111
122
  instanceOf(className: string): boolean;
112
123
  asHashString(): string;
113
124
  isRecursive(): boolean;
@@ -127,6 +138,7 @@ export interface IMethodResponse {
127
138
  search(rx: RegExp, criteria: SearchCriteria): boolean;
128
139
  searchString(criteria: SearchCriteria): string;
129
140
  }
141
+ export declare const tagTypes: (api: ApiModel, types: TypeList) => {};
130
142
  export interface IProperty extends ITypedSymbol {
131
143
  required: boolean;
132
144
  nullable: boolean;
@@ -302,6 +314,7 @@ export declare class Type implements IType {
302
314
  jsonName: string;
303
315
  refCount: number;
304
316
  constructor(schema: OAS.SchemaObject, name: string);
317
+ get metaType(): MetaType;
305
318
  get fullName(): string;
306
319
  get owner(): string;
307
320
  get writeable(): IProperty[];
@@ -335,7 +348,7 @@ export declare class ArrayType extends Type {
335
348
  export declare class EnumType extends Type implements IEnumType {
336
349
  elementType: IType;
337
350
  readonly values: EnumValueType[];
338
- constructor(elementType: IType, schema: OAS.SchemaObject, types: TypeList, typeName?: string, methodName?: string);
351
+ constructor(elementType: IType, schema: OAS.SchemaObject, api: ApiModel, typeName?: string, methodName?: string);
339
352
  private findName;
340
353
  searchString(criteria: SearchCriteria): string;
341
354
  get className(): string;
@@ -388,6 +401,7 @@ export declare class ApiModel implements ISymbolTable, IApiModel {
388
401
  methods: MethodList;
389
402
  types: TypeList;
390
403
  tags: TagList;
404
+ typeTags: TypeTagList;
391
405
  constructor(spec: OAS.OpenAPIObject);
392
406
  get version(): string;
393
407
  get description(): string;
@@ -405,6 +419,7 @@ export declare class ApiModel implements ISymbolTable, IApiModel {
405
419
  registerEnum(type: IType, methodName?: string): IType;
406
420
  private _getRequestType;
407
421
  getRequestType(method: IMethod): IType | undefined;
422
+ getEnumList(): TypeList;
408
423
  makeWriteableType(hash: string, type: IType): WriteType;
409
424
  mayGetWriteableType(type: IType): IType | WriteType | undefined;
410
425
  loadDynamicTypes(): void;