@looker/sdk-codegen 21.9.9 → 21.9.11
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.
- package/CHANGELOG.md +22 -0
- package/lib/codeGen.d.ts +2 -1
- package/lib/codeGen.js.map +1 -1
- package/lib/esm/codeGen.js.map +1 -1
- package/lib/esm/exampleInfo.js.map +1 -1
- package/lib/esm/kotlin.gen.js.map +1 -1
- package/lib/esm/python.gen.js.map +1 -1
- package/lib/esm/sdkModels.js +12 -12
- package/lib/esm/sdkModels.js.map +1 -1
- package/lib/esm/specConverter.js.map +1 -1
- package/lib/esm/specDiff.js.map +1 -1
- package/lib/esm/typescript.gen.js +1 -1
- package/lib/esm/typescript.gen.js.map +1 -1
- package/lib/exampleInfo.d.ts +2 -1
- package/lib/exampleInfo.js.map +1 -1
- package/lib/kotlin.gen.d.ts +2 -1
- package/lib/kotlin.gen.js.map +1 -1
- package/lib/python.gen.d.ts +2 -1
- package/lib/python.gen.js.map +1 -1
- package/lib/sdkModels.d.ts +1 -4
- package/lib/sdkModels.js +12 -12
- package/lib/sdkModels.js.map +1 -1
- package/lib/specConverter.d.ts +2 -2
- package/lib/specConverter.js.map +1 -1
- package/lib/specDiff.js.map +1 -1
- package/lib/typescript.gen.d.ts +2 -1
- package/lib/typescript.gen.js +1 -1
- package/lib/typescript.gen.js.map +1 -1
- package/package.json +4 -4
package/lib/esm/codeGen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeGen.js","names":["DelimArray","ArrayType","EnumType","HashType","Type","mayQuote","strBody","commentBlock","text","indent","arguments","length","undefined","commentStr","trim","indentation","lines","split","map","x","concat","trimRight","join","trimInputs","inputs","keepBody","depth","isEmpty","value","Array","isArray","Object","keys","result","values","forEach","v","push","entries","_ref","key","trimmed","CodeGen","constructor","api","versions","_defineProperty","packageName","toUpperCase","_","toString","spec","apiVersion","version","apiPath","apiRef","replace","supportsMultiApi","packagePath","reset","functionsPrologue","_indent","functionsEpilogue","hooksPrologue","hooksEpilogue","mocksPrologue","mocksEpilogue","interfacesPrologue","reserve","name","streamsPrologue","quote","codeQuote","declareEnumValue","functionSignature","_method","declareFunction","declareHook","declareMock","declareInterface","argIndent","args","opener","closer","bump","bumper","open","close","delim","argDelimiter","argValue","arg","val","argType","writeableType","type","mt","typeMap","argVal","asVal","arrayValue","hashValue","intrinsic","assignType","defaultAsVal","assignParams","method","hasComplexArg","requestType","useNamedArguments","getRequestType","indentStr","params","allParams","p","argSet","sep","exp","props","properties","argSetSep","useModelClassForTypes","typeOpen","nl","joined","typeClose","ra","et","elementType","arrayOpen","arrayClose","arrayValDelimiter","i","anyValue","vals","_ref2","hashKeyQuote","hashSetSep","hashOpen","hashClose","paramMappedType","param","location","makeTheCall","_inputs","commentHeader","beginRegion","description","endRegion","warnEditing","streamerSignature","declareStreamer","initArg","_property","construct","_type","describeProperty","property","readOnly","sdkFileName","baseFileName","fileName","sdkPath","base","codePath","fileExtension","comment","noComment","_commentStr","declareParameters","items","declareParameter","paramDelimiter","declareConstructorArg","nullable","nullStr","it","itself","typeProperties","declareType","propertyValues","num","enumDelimiter","prop","declareProperty","propDelimiter","_unused","Error","JSON","stringify","typeSignature","endTypeStr","argGroup","prefix","argList","argFill","current","httpPath","path","_prefix","httpArgs","cookieArgs","headerArgs","bodyArg","queryArgs","errorResponses","results","r","httpCall","errors","transport","httpMethod","toLowerCase","endpoint","streamCall","useRequest","useNamedParameters","eligibleForRequestType","requestTypeName","request","refCount","addType","writer","mayGetWriteableType","typeNames","_countError","types","filter","default"],"sources":["../../src/codeGen.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 { DelimArray } from '@looker/sdk-rtl';\nimport type {\n ApiModel,\n Arg,\n ArgValues,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport {\n ArrayType,\n EnumType,\n HashType,\n Type,\n mayQuote,\n strBody,\n} from './sdkModels';\nimport type { SpecItem } from './specConverter';\n\nexport const commentBlock = (\n text: string | undefined,\n indent = '',\n commentStr = '// '\n) => {\n if (!text || !text.trim()) return '';\n const indentation = indent + commentStr;\n const lines = text.split('\\n').map(x => `${indentation}${x}`.trimRight());\n return lines.join('\\n');\n};\n\n/** Version and spec references for the generator */\nexport interface IVersionInfo {\n /** Server release version (Not the API version) */\n lookerVersion: string;\n /** API specification for generating the SDK */\n spec: SpecItem;\n}\n\n/**\n * Removes all empty input values\n * @param inputs current inputs\n * @param keepBody true to send body as is. false trims body values (default)\n * @param depth recursion depth\n * @returns inputs with all \"empty\" values removed so the key no longer exists\n */\nexport const trimInputs = (inputs: any, keepBody = false, depth = 0): any => {\n function isEmpty(value: any, depth: number): boolean {\n if (Array.isArray(value)) return value.length === 0;\n if (value === undefined) return true;\n if (value === null) return true;\n if (value === '') return true;\n if (value instanceof Object) {\n if (depth === 1) {\n // Top level empty objects are kept. i.e { one: {} } is left unchanged.\n return false;\n }\n return Object.keys(value).length === 0;\n }\n return false;\n }\n\n let result: any;\n if (inputs instanceof DelimArray) return inputs;\n if (Array.isArray(inputs)) {\n result = [];\n Object.values(inputs).forEach((v: any) =>\n result.push(trimInputs(v, keepBody, depth + 1))\n );\n } else if (inputs instanceof Object) {\n if (keepBody && depth > 0) {\n result = inputs;\n } else {\n result = {};\n Object.entries(inputs).forEach(([key, value]) => {\n const trimmed = trimInputs(value, keepBody, depth + 1);\n if (!isEmpty(trimmed, depth + 1)) {\n result[key] = trimmed;\n }\n });\n }\n } else {\n // Scalar or preserved \"body\" value\n result = inputs;\n }\n return result;\n};\n\n/**\n * Function pattern for creating source code assignment expressions\n */\nexport type CodeAssignment = (indent: string, value: any) => string;\n\n/** Language-specific type mapping */\nexport interface IMappedType {\n /** language's name for the type */\n name: string;\n /** default value expression */\n default: string;\n /** assignment expression of value */\n asVal?: CodeAssignment;\n /** expression to use as the type's optional default */\n optional?: string;\n}\n\nexport interface ICodeGen {\n /**\n * root path for generated source code files\n * e.g. 'python' for Python\n */\n codePath: string;\n\n /**\n * folder for the Looker SDK reference\n * e.g. 'looker_sdk' for Python. All python source would end up under `python/looker_sdk`\n */\n packagePath: string;\n\n /**\n * Name of the SDK package\n * e.g. 'Looker40SDK' for API 4.0. This package name is currently determined by the base `CodeGen` class\n */\n packageName: string;\n\n /**\n * relative folder path for sdk file generation\n * e.g. 'sdk` for python\n */\n sdkPath: string;\n\n /** use special handling for a JSON value that can be a string or a number. Introduced for Swift. */\n anyString: boolean;\n\n /** current version of the Api being generated */\n apiVersion: string;\n\n /**\n * beginning name pattern for all environment variables\n * e.g. LOOKERSDK\n */\n environmentPrefix: string;\n\n /**\n * name of api request instance variable\n * e.g. _rtl for Python, transport for TypeScript\n */\n transport: string;\n\n /** reference to self. e.g self, this, it, etc. */\n itself: string;\n\n /** file extension for generated files */\n fileExtension: string;\n\n /**\n * comment string\n * e.g. Python=# C#=// TypeScript=//\n */\n commentStr: string;\n\n /** Generate comments in source code? */\n noComment: boolean;\n\n /**\n * string representation of null value\n * e.g. Python None, C# null, Delphi nil\n */\n nullStr: string;\n\n /** indentation string. Typically two spaces ' ' */\n indentStr: string;\n\n /** end type string. For C# and TypeScript, usually '}\\n' */\n endTypeStr: string;\n\n /** argument separator string. Typically ', ' */\n argDelimiter: string;\n\n /** type properties/args expression separator. E.g ': ' for TypeScript */\n argSetSep: string;\n\n /** hash type properties/args expression separator. E.g ': ' for TypeScript */\n hashSetSep: string;\n\n /** hash key quotes E.g '' for TypeScript and '\"' for Python */\n hashKeyQuote: string;\n\n /** parameter delimiter. Typically \",\\n\" */\n paramDelimiter: string;\n\n /** property delimiter. Typically, \"\\n\" or \",\\n\" */\n propDelimiter: string;\n\n /** enum value delimiter. Typically, \",\\n\" */\n enumDelimiter: string;\n\n /** quote character/string to use for quoted strings. Typically, '\"' or \"'\" */\n codeQuote: string;\n\n /**\n * Does this language support named parameters with default values? Otherwise\n * request types for sdk method signatures may be generated:\n * see IMethod.eligibleForRequestType\n */\n useNamedParameters: boolean;\n\n /** Use named/keyword arguments in calling syntax */\n useNamedArguments: boolean;\n\n /** Mainly for TypeScript SDK tree-shaking support. True produces slices.ext */\n useSlices: boolean;\n\n /** Mainly for TypeScript SDK tree-shaking support. True produces funcs.ext */\n useFunctions: boolean;\n\n /** Does this language implement interfaces? True produces methodInterfaces.ext */\n useInterfaces: boolean;\n\n /** Does this language have streaming methods? */\n willItStream: boolean;\n\n /** versions info used for generating the SDK */\n versions?: IVersionInfo;\n\n /** array open string */\n arrayOpen: string;\n\n /** array close string */\n arrayClose: string;\n\n /** hash open string */\n hashOpen: string;\n\n /** hash close string */\n hashClose: string;\n\n /** type open string */\n typeOpen: string;\n\n /** type close string */\n typeClose: string;\n\n /** Do type declarations use a class definition */\n useModelClassForTypes: boolean;\n\n /**\n * Resets the generator for a new emission\n */\n reset(): void;\n\n /**\n * Quote a string value for the language\n * @param value to quote\n */\n quote(value: any): string;\n\n /**\n * Returns true if the SDK supports multiple API versions of models\n * @returns True if multi-API is supported\n */\n supportsMultiApi(): boolean;\n\n /**\n * Returns the name of the RequestType if this language AND method require it.\n * Otherwise return empty string.\n * @param {IMethod} method\n * @returns {string}\n */\n requestTypeName(method: IMethod): string;\n\n /**\n * Formats argument assignment expressions for source code\n * @param indent code indentation\n * @param args argument assignments as string expressions\n * @param opener structure opener. e.g. { for hash, [ for array\n * @param closer structure closer. e.g. } for hash, ] for array\n */\n argIndent(\n indent: string,\n args: string[],\n opener: string,\n closer: string\n ): string;\n\n /**\n * Generate the assignment value of an argument for this language\n * @param indent code indentation\n * @param arg parameter or property to receive value\n * @param inputs values to find assignment in\n */\n argValue(\n indent: string,\n arg: IParameter | IProperty,\n inputs: ArgValues\n ): string;\n\n /**\n * Maps input values into type\n * @param indent starting indent level\n * @param type that receives assignments\n * @param inputs to assign to type\n */\n assignType(indent: string, type: IType, inputs: ArgValues): string;\n\n /**\n * Generate assignment statement for parameters of a method\n * @param method to assign values to\n * @param inputs to assign to method parameters\n */\n assignParams(method: IMethod, inputs: ArgValues): string;\n\n /**\n * Argument value setter code expression\n * @param name of argument/property\n * @param sep spacing to separate value. Could be newline or single space or something else\n * @param exp expression (as valid code fragment) to assign\n *\n * @example `foo: bar` for TypeScript where `name` is \"foo\", `sep` is \": \" and `exp` is \"bar\"\n */\n argSet(name: string, sep: string, exp: string): string;\n\n /**\n * Converts val to an array value expression\n * @param indent code indentation\n * @param type of array to create\n * @param val value(s) to convert to a code assignment\n */\n arrayValue(indent: string, type: IType, val: any): string;\n\n /**\n * Converts any value to its code expression\n * @param indent code indentation\n * @param val value(s) to convert to a code assignment\n */\n anyValue(indent: string, val: any): string;\n\n /** Increase indent */\n bumper(indent: string): string;\n\n /**\n * Converts val to a dictionary/hash code expression\n * @param indent code indentation\n * @param val value(s) to convert to a code assignment\n */\n hashValue(indent: string, val: any): any;\n\n /**\n * Generate the SDK calling syntax for the method with the provided inputs\n * @param method to convert to SDK call\n * @param inputs to assign to parameters of the method\n */\n makeTheCall(method: IMethod, inputs: ArgValues): string;\n\n /**\n * Returns the WriteType if the passed type has any readOnly properties or types\n *\n * If the writeable type exists, a reference to it is added to the method\n * @param {IType} type\n * @param method to track writeable type conversion\n * @returns {IType | undefined}\n */\n writeableType(type: IType, method?: IMethod): IType | undefined;\n\n /**\n * standard code to insert at the top of the generated \"methods\" file(s)\n * @param indent code indentation\n */\n methodsPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"funcs\" file(s)\n * @param indent code indentation\n */\n functionsPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"hooks\" file(s)\n * @param indent code indentation\n */\n hooksPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"mocks\" file(s)\n * @param indent code indentation\n */\n mocksPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"methodsInterface\" file(s)\n * @param indent code indentation\n */\n interfacesPrologue(indent: string): string;\n\n /**\n * standard code to append to the bottom of the generated \"methods\" file(s)\n * @param indent code indentation\n */\n methodsEpilogue(indent: string): string;\n\n /**\n * standard code to append to the bottom of the generated \"funcs\" file(s)\n * @param indent code indentation\n */\n functionsEpilogue(indent: string): string;\n\n /**\n * generated code to append to the bottom of the generated \"hooks\" file(s)\n * @param indent code indentation\n */\n hooksEpilogue(indent: string): string;\n\n /**\n * generated code to append to the bottom of the generated \"mocks\" file(s)\n * @param indent code indentation\n */\n mocksEpilogue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"streams\" file(s)\n * @param indent code indentation\n */\n streamsPrologue(indent: string): string;\n\n /**\n * aliases or escapes names that are the language's reserved words, or must be treated specially, like hyphenate names\n * @param name symbol name to reserve\n * @returns either the original name, or the transformed \"reserved\" version of it\n */\n reserve(name: string): string;\n\n /**\n * standard code to insert at the top of the generated \"models\" file(s)\n * @param {string} indent code indentation\n * @returns {string} generated code\n */\n modelsPrologue(indent: string): string;\n\n /**\n * standard code to append to the bottom of the generated \"models\" file(s)\n * @param {string} indent code indentation\n * @returns {string} generated code\n */\n modelsEpilogue(indent: string): string;\n\n /**\n * Get the name of an SDK file complete with API version\n * @param {string} baseFileName e.g. \"methods\" or \"models\"\n * @returns {string} fully specified, API-version-specific file name\n */\n sdkFileName(baseFileName: string): string;\n\n /**\n * provide the name for a file with the appropriate language code extension\n * @param {string} base eg \"methods\" or \"models\"\n * @returns {string} full sdk file name complete with extension\n */\n fileName(base: string): string;\n\n /**\n * generate an optional comment header if the comment is not empty\n * @param indent code indentation\n * @param text of comment, can be multi-line\n * @param commentStr comment character for multi-line comments\n * @returns comment (or not)\n */\n commentHeader(\n indent: string,\n text: string | undefined,\n commentStr?: string\n ): string;\n\n /**\n * group argument names together\n * e.g.\n * [ row_size, page_offset ]\n * @param {string} indent code indentation\n * @param {Arg[]} args list of argument names\n * @param {string} prefix \"namespace\" for argument names\n * @returns {string} source code\n */\n argGroup(indent: string, args: Arg[], prefix?: string): string;\n\n /**\n * list arguments by name\n * e.g.\n * row_size, page_offset\n * @param {string} indent code indentation\n * @param {Arg[]} args list of argument names\n * @param {string} prefix \"namespace\" for argument names\n * @returns {string} source code\n */\n argList(indent: string, args: Arg[], prefix?: string): string;\n\n /**\n * generate a comment block\n * e.g.\n * # this is a\n * # multi-line comment block\n * @param indent code indentation\n * @param description as comment\n * @returns comment block\n */\n comment(indent: string, description: string): string;\n\n /**\n * Generate a #region comment equivalent for the language\n * @param indent code indentation\n * @param description as comment\n * @returns region comment\n */\n beginRegion(indent: string, description: string): string;\n\n /**\n * Generate an #endregion comment equivalent for the language\n * @param indent code indentation\n * @param description as comment\n * @returns region comment\n */\n endRegion(indent: string, description: string): string;\n\n /**\n * generates the method signature including parameter list and return type.\n * @param indent code indentation\n * @param method to declare\n */\n methodSignature(indent: string, method: IMethod): string;\n\n /**\n * generates the function signature including parameter list and return type.\n * @param indent code indentation\n * @param method to declare\n */\n functionSignature(indent: string, method: IMethod): string;\n\n /**\n * convert endpoint pattern to platform-specific string template\n * @param {string} path endpoint path template\n * @param {string} prefix namespace prefix\n * @returns {string} string template\n */\n httpPath(path: string, prefix?: string): string;\n\n /**\n * generate a call to the http API abstraction\n * includes http method, path, body, query, headers, cookie arguments\n * @param {string} indent code indentation\n * @param {IMethod} method to call\n * @returns {string} source code\n */\n httpCall(indent: string, method: IMethod): string;\n\n /**\n * generate a call to the stream API abstraction\n * includes http method, path, body, query, headers, cookie arguments\n * @param {string} indent code indentation\n * @param {IMethod} method to call\n * @returns {string} source code\n */\n streamCall(indent: string, method: IMethod): string;\n\n /**\n * generates the type declaration signature for the start of the type definition\n * @param {string} indent code indentation\n * @param {IType} type to declare\n * @returns {string} source code\n */\n typeSignature(indent: string, type: IType): string;\n\n /**\n * generates summary text\n * e.g, for Python:\n * '''This is the method summary'''\n * @param {string} indent code indentation\n * @param {string} text comment\n * @returns {string} source code\n */\n summary(indent: string, text: string): string;\n\n /**\n *\n * produces the declaration block for a parameter\n * e.g.\n * # ID of the query to run\n * query_id: str\n *\n * and\n *\n * # size description of parameter\n * row_limit: int = None\n * @param {string} indent code indentation\n * @param {IMethod} method method containing the parameter\n * @param {IParameter} param parameter to declare\n * @returns {string} the parameter declaration\n */\n declareParameter(indent: string, method: IMethod, param: IParameter): string;\n\n /**\n * Handles the encoding call for path parameters within method declarations\n * @param {string} indent code indentation\n * @param {IMethod} method structure of method to declare\n * @returns {string} the resolved API endpoint path\n */\n encodePathParams(indent: string, method: IMethod): string;\n\n /**\n * generates the entire method\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the method\n */\n declareMethod(indent: string, method: IMethod): string;\n\n /**\n * generates the entire function\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the function\n */\n declareFunction(indent: string, method: IMethod): string;\n\n /**\n * declares the hook/slice for a function\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the hook\n */\n declareHook(indent: string, method: IMethod): string;\n\n /**\n * declares the mock handler for a method\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the mock method\n */\n declareMock(indent: string, method: IMethod): string;\n\n /**\n * generates the method's interface declaration\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the method's interface\n */\n declareInterface(indent: string, method: IMethod): string;\n\n /**\n * generates the streaming method signature including parameter list and return type.\n * @param {string} indent code indentation\n * @param {IMethod} method\n * @returns {string}\n */\n streamerSignature(indent: string, method: IMethod): string;\n\n /**\n * Generates the entire streaming method\n * @param {string} indent code indentation\n * @param {IMethod} method method to declare\n * @returns {string} source code\n */\n declareStreamer(indent: string, method: IMethod): string;\n\n /**\n * generates the list of parameters for a method signature\n * e.g.\n * # ID of the query to run\n * query_id: str,\n * # size description of parameter\n * row_limit: int = None\n * @param {string} indent code indentation\n * @param {IMethod} method containing parameters to declare\n * @returns {string} source code\n */\n declareParameters(indent: string, method: IMethod): string;\n\n /**\n * generates the syntax for a constructor argument\n * @param {string} indent code indentation\n * @param {IProperty} property of constructor\n * @returns {string} source code\n */\n declareConstructorArg(indent: string, property: IProperty): string;\n\n /**\n * produces the code for the type constructor\n * @param {string} indent code indentation\n * @param {IType} type to generate\n * @returns {string} source code\n */\n construct(indent: string, type: IType): string;\n\n /**\n * produces list of properties for declareType\n * @param {IType} type to generate\n * @returns {PropertyList} list of properties\n */\n typeProperties(type: IType): IProperty[];\n\n /**\n * generates entire type declaration\n * @param {string} indent code indentation\n * @param {IType} type to generate\n * @returns {string} source code\n */\n declareType(indent: string, type: IType): string;\n\n /**\n * generates a textual description for the property's comment header\n * @param {IProperty} property to describe\n * @returns {string} source code\n */\n describeProperty(property: IProperty): string;\n\n /**\n * generates type property declaration\n * @param {string} indent code indentation\n * @param {IProperty} property to declare\n * @returns {string} source code\n */\n declareProperty(indent: string, property: IProperty): string;\n\n /**\n * generates an enum value declaration\n * @param {string} indent code indentation\n * @param {EnumValueType} value to declare\n * @returns {string} source code\n */\n declareEnumValue(indent: string, value: EnumValueType): string;\n\n /**\n * if countError is false, no import reference to Error or IError should be included\n * @param {boolean} countError\n * @returns {string[]}\n */\n typeNames(countError: boolean): string[];\n\n /**\n * Type mapping for a parameter with special handling for body params\n * @param param to map\n * @param method containing param\n */\n paramMappedType(param: IParameter, method: IMethod): IMappedType;\n\n /**\n * Language-specific type conversion\n * @param {IType} type to potentially convert\n * @returns {IMappedType} converted type\n */\n typeMap(type: IType): IMappedType;\n}\n\nexport abstract class CodeGen implements ICodeGen {\n willItStream = false;\n anyString = false;\n codePath = './';\n packagePath = 'looker';\n sdkPath = 'sdk';\n packageName = 'LookerSDK';\n environmentPrefix = this.packageName.toUpperCase();\n itself = '';\n fileExtension = '.code';\n argDelimiter = ', ';\n paramDelimiter = ',\\n';\n propDelimiter = '\\n';\n enumDelimiter = ',\\n';\n codeQuote = `'`;\n useNamedParameters = true;\n useNamedArguments = true;\n useFunctions = false;\n useSlices = false;\n useInterfaces = false;\n\n // makeTheCall definitions\n argSetSep = ': ';\n hashSetSep = ': ';\n arrayOpen = '[';\n arrayClose = ']';\n hashOpen = '{';\n hashClose = '}';\n hashKeyQuote = '';\n typeOpen = '{';\n typeClose = '}';\n useModelClassForTypes = false;\n\n indentStr = ' ';\n commentStr = '// ';\n noComment = false;\n nullStr = 'null';\n endTypeStr = '';\n transport = 'rtl';\n\n apiVersion = '';\n apiRef = '';\n apiPath = '';\n\n constructor(public api: ApiModel, public versions?: IVersionInfo) {\n if (versions && versions.spec) {\n this.apiVersion = versions.spec.version;\n this.apiPath = `/${versions.spec.key}`;\n this.apiRef = versions.spec.key.replace('.', '');\n this.packageName = this.supportsMultiApi()\n ? `Looker${this.apiRef}SDK`\n : `LookerSDK`;\n this.packagePath += this.apiPath;\n }\n }\n\n /** base level reset does nothing */\n reset() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n }\n\n /**\n * Returns true if the SDK supports multiple API versions of models\n * @returns True if multi-API is supported\n */\n supportsMultiApi() {\n // Currently, all but Swift support multiple APIs\n return true;\n }\n\n /**\n * beginning of the \"methods\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract methodsPrologue(indent: string): string;\n\n functionsPrologue(_indent: string): string {\n // usually, nothing to \"close\" atomic function declarations\n return '';\n }\n\n functionsEpilogue(_indent: string): string {\n return '';\n }\n\n hooksPrologue(_indent: string): string {\n return '';\n }\n\n hooksEpilogue(_indent: string): string {\n return '';\n }\n\n mocksPrologue(_indent: string): string {\n return '';\n }\n\n mocksEpilogue(_indent: string): string {\n return '';\n }\n\n interfacesPrologue(_indent: string): string {\n return '';\n }\n\n /**\n * ending of the \"methods\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract methodsEpilogue(indent: string): string;\n\n reserve(name: string) {\n return name;\n }\n\n streamsPrologue(_indent: string) {\n return '';\n }\n\n /**\n * beginning of the \"models\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract modelsPrologue(indent: string): string;\n\n /**\n * ending of the \"models\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract modelsEpilogue(indent: string): string;\n\n abstract declareParameter(\n indent: string,\n method: IMethod,\n param: IParameter\n ): string;\n\n /**\n * Quote a string value for the language\n * @param value to quote\n */\n quote(value: any) {\n return `${this.codeQuote}${value}${this.codeQuote}`;\n }\n\n declareEnumValue(indent: string, value: EnumValueType) {\n const quote = typeof value === 'string' ? this.codeQuote : '';\n return `${indent}${mayQuote(value)} = ${quote}${value}${quote}`;\n }\n\n abstract declareProperty(indent: string, property: IProperty): string;\n\n abstract typeSignature(indent: string, type: IType): string;\n\n abstract methodSignature(indent: string, method: IMethod): string;\n\n functionSignature(_indent: string, _method: IMethod): string {\n return '';\n }\n\n abstract declareMethod(indent: string, method: IMethod): string;\n\n declareFunction(_indent: string, _method: IMethod): string {\n return '';\n }\n\n declareHook(_indent: string, _method: IMethod): string {\n return '';\n }\n\n declareMock(_indent: string, _method: IMethod): string {\n return '';\n }\n\n declareInterface(_indent: string, _method: IMethod): string {\n return '';\n }\n\n argIndent(indent: string, args: string[], opener: string, closer: string) {\n const bump = this.bumper(indent);\n let open = opener;\n let close = closer;\n let delim = this.argDelimiter;\n if (args.length > 1) {\n open = `${opener}\\n${bump}`;\n close = `\\n${indent}${closer}`;\n delim = `${this.argDelimiter.trim()}\\n${bump}`;\n }\n return `${open}${args.join(delim)}${close}`;\n }\n\n defaultAsVal: CodeAssignment = (_, v) => v.toString();\n\n argValue(\n indent: string,\n arg: IParameter | IProperty,\n inputs: ArgValues\n ): string {\n // TODO handle required positional arguments that are not provided?\n if (!(arg.name in inputs)) return '';\n const val = inputs[arg.name];\n const argType = this.writeableType(arg.type) || arg.type;\n const mt = this.typeMap(argType);\n let argVal: string;\n if (mt.asVal) {\n argVal = mt.asVal(indent, val);\n } else if (argType instanceof ArrayType) {\n argVal = this.arrayValue(indent, argType, val);\n // } else if (argType instanceof DelimArrayType) {\n // argVal = this.delimArrayValue(indent, argType, val)\n } else if (argType instanceof HashType) {\n argVal = this.hashValue(indent, val);\n } else if (!argType.intrinsic) {\n argVal = this.assignType(indent, argType, val);\n } else {\n argVal = this.defaultAsVal(indent, val);\n }\n return argVal;\n }\n\n assignParams(method: IMethod, inputs: ArgValues): string {\n const args: string[] = [];\n let hasComplexArg = false;\n if (Object.keys(inputs).length > 0) {\n let requestType: IType | undefined;\n if (\n !this.useNamedArguments &&\n (requestType = this.api.getRequestType(method))\n ) {\n args.push(this.assignType(this.indentStr, requestType, inputs));\n hasComplexArg = true;\n } else {\n const params = method.allParams;\n params.forEach(p => {\n const v = this.argValue(this.indentStr, p, inputs);\n if (v !== '') {\n const arg = this.useNamedArguments ? `${p.name}=${v}` : v;\n args.push(arg);\n if (!p.type.intrinsic) {\n hasComplexArg = true;\n }\n }\n });\n }\n }\n let open = '';\n if (args.length > 1 || hasComplexArg) {\n open = `\\n${this.indentStr}`;\n }\n return args.length > 0 ? `${open}${args.join(this.argDelimiter)}` : '';\n }\n\n argSet(name: string, sep: string, exp: string) {\n return `${name}${sep}${exp}`;\n }\n\n /**\n * Maps input values into type\n * @param indent starting indent level\n * @param type that receives assignments\n * @param inputs to assign to type\n */\n assignType(indent: string, type: IType, inputs: ArgValues): string {\n const mt = this.typeMap(type);\n const args: string[] = [];\n // child properties are indented one level\n const bump = this.bumper(indent);\n const props = Object.values(type.properties);\n props.forEach(p => {\n const v = this.argValue(bump, p, inputs);\n if (v) args.push(this.argSet(p.name, this.argSetSep, v));\n });\n\n const open = this.useModelClassForTypes\n ? `${mt.name}${this.typeOpen}`\n : this.typeOpen;\n const nl = `,\\n${bump}`;\n let joined = `\\n${bump}${args.join(nl)}\\n${indent}`;\n if (joined.trim().length === 0) {\n // trim the structure new lines if there are no arguments\n joined = '';\n }\n // need a bump after `open` to account for the first argument\n // not getting the proper bump from args.join()\n return `${open}${joined}${this.typeClose}`;\n }\n\n /**\n * Constructs array of ArrayType elements\n *\n * It is rendered on a single line if the array has only one element\n * and it is an IntrinsicType. Otherwise the array is rendered on\n * multiple lines with elements appropriately further indented\n *\n * @param indent starting indent level\n * @param type that receives assignments\n * @param val elements for this array\n */\n arrayValue(indent: string, type: IType, val: any) {\n const ra = type as ArrayType;\n const et = ra.elementType;\n const bump = this.bumper(indent);\n // single intrinsic element array renders single line\n let open = this.arrayOpen;\n let close = this.arrayClose;\n let arrayValDelimiter = this.argDelimiter;\n // multiple intrinsic elements or 1 or more non-intrinsic element array\n // renders multiple lines\n if (val.length > 1 || !et.intrinsic) {\n // the opener uses bump to account for the first argument\n // not getting the proper bump from args.join()\n open = `${open}\\n${bump}`;\n close = `\\n${indent}${close}`;\n // bump elements one level in from array declaration\n arrayValDelimiter = `${arrayValDelimiter.trim()}\\n${bump}`;\n }\n const args: string[] = [];\n let asVal = this.defaultAsVal;\n const mt = this.typeMap(et);\n if (et.intrinsic) {\n asVal = mt.asVal || asVal;\n } else {\n asVal = (i: string, v: any) => this.assignType(i, et, v);\n }\n // passing `bump` to `asVal` - typically intrinsic asVal ignores\n // indentation but certainly for the assignType case we want the\n // nested object to be indented a level further\n val.forEach((v: any) => args.push(asVal(bump, v)));\n return open + args.join(arrayValDelimiter) + close;\n }\n\n anyValue(indent: string, val: any): string {\n if (val instanceof Type) return this.assignType(indent, val as Type, val);\n switch (typeof val) {\n case 'bigint':\n case 'number':\n return val.toString();\n case 'boolean':\n return val ? 'true' : 'false';\n case 'string':\n return this.quote(val);\n case 'undefined':\n return '';\n case 'function':\n return '';\n case 'object': {\n if (Array.isArray(val)) {\n const vals: string[] = [];\n Object.values(val).forEach(v => {\n vals.push(this.anyValue(this.bumper(indent), v));\n });\n return this.argIndent(indent, vals, this.arrayOpen, this.arrayClose);\n } else {\n return this.hashValue(indent, val);\n }\n }\n case 'symbol':\n return val.toString();\n }\n return val.toString();\n }\n\n // indent represents the starting level of indentation for this hash\n // the key/value pairs are further indented one bump\n hashValue(indent: string, val: any) {\n const args: string[] = [];\n const bump = this.bumper(indent);\n Object.entries(val).forEach(([name, v]) => {\n const exp = this.anyValue(bump, v);\n const key = `${this.hashKeyQuote}${name}${this.hashKeyQuote}`;\n args.push(this.argSet(key, this.hashSetSep, exp));\n });\n return this.argIndent(indent, args, this.hashOpen, this.hashClose);\n }\n\n paramMappedType(param: IParameter, method: IMethod) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type;\n return this.typeMap(type);\n }\n\n makeTheCall(_method: IMethod, _inputs: ArgValues) {\n return this.commentHeader('', `Not yet available`);\n }\n\n abstract encodePathParams(indent: string, method: IMethod): string;\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 warnEditing() {\n return (\n 'NOTE: Do not edit this file generated by Looker SDK Codegen' +\n (this.apiVersion ? ` for API ${this.apiVersion}` : '')\n );\n }\n\n streamerSignature(_indent: string, _method: IMethod) {\n return '';\n }\n\n // Only implement this method for languages that have explicit streaming methods declared\n declareStreamer(_indent: string, _method: IMethod) {\n return '';\n }\n\n abstract summary(indent: string, text: string | undefined): string;\n\n initArg(_indent: string, _property: IProperty): string {\n return '';\n }\n\n construct(_indent: string, _type: IType): string {\n return '';\n }\n\n bumper(indent: string) {\n return indent + this.indentStr;\n }\n\n describeProperty(property: IProperty) {\n return `${property.description}${property.readOnly ? ' (read-only)' : ''}`;\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.sdkPath}/${this.apiVersion}/${baseFileName}`);\n }\n\n fileName(base: string) {\n return `${this.codePath}${this.packagePath}/${base}${this.fileExtension}`;\n }\n\n comment(indent: string, description: string) {\n if (this.noComment) return '';\n return commentBlock(description, indent, this.commentStr);\n }\n\n commentHeader(\n indent: string,\n text: string | undefined,\n _commentStr?: string\n ) {\n if (this.noComment) return '';\n return text ? `${this.comment(indent, text)}\\n` : '';\n }\n\n declareParameters(indent: string, method: IMethod) {\n const params = method.allParams;\n const items: string[] = [];\n if (params)\n params.forEach(p => items.push(this.declareParameter(indent, method, p)));\n return items.join(this.paramDelimiter);\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n return `${indent}${property.name}${\n property.nullable ? ' = ' + this.nullStr : ''\n }`;\n }\n\n it(value: string) {\n return this.itself ? `${this.itself}.${value}` : value;\n }\n\n typeProperties(type: IType) {\n return Object.values(type.properties);\n }\n\n declareType(indent: string, type: IType) {\n const bump = this.bumper(indent);\n const props: string[] = [];\n let propertyValues = '';\n try {\n if (type instanceof EnumType) {\n const num = type as EnumType;\n num.values.forEach(value =>\n props.push(this.declareEnumValue(bump, value))\n );\n propertyValues = props.join(this.enumDelimiter);\n } else {\n this.typeProperties(type).forEach(prop =>\n props.push(this.declareProperty(bump, prop))\n );\n propertyValues = props.join(this.propDelimiter);\n }\n } catch {\n throw new Error(JSON.stringify(type, null, 2));\n }\n return (\n this.typeSignature(indent, type) +\n propertyValues +\n this.construct(indent, type) +\n `${this.endTypeStr ? indent : ''}${this.endTypeStr}`\n );\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n return args && args.length !== 0\n ? `${indent}[${prefix}${args.join(this.argDelimiter + prefix)}]`\n : this.nullStr;\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n return args && args.length !== 0\n ? `${indent}${prefix}${args.join(this.argDelimiter + prefix)}`\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 httpPath(path: string, _prefix?: string) {\n return path;\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 let result = this.argFill('', this.argGroup(indent, method.cookieArgs));\n result = this.argFill(result, this.argGroup(indent, method.headerArgs));\n result = this.argFill(\n result,\n method.bodyArg ? method.bodyArg : this.nullStr\n );\n result = this.argFill(result, this.argGroup(indent, method.queryArgs));\n return result;\n }\n\n errorResponses(_indent: string, method: IMethod) {\n const results: string[] = method.errorResponses.map(r => `${r.type.name}`);\n return results.join(', ');\n }\n\n httpCall(indent: string, method: IMethod) {\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(\n this.transport\n )}.${method.httpMethod.toLowerCase()}(${errors}, \"${method.endpoint}\"${\n args ? ', ' + args : ''\n })`;\n }\n\n streamCall(_indent: string, _method: IMethod) {\n return '';\n }\n\n useRequest(method: IMethod) {\n if (this.useNamedParameters) return false;\n return method.eligibleForRequestType();\n }\n\n // Looks up or dynamically creates the request type for this method based\n // on rules for creating request types at the IApiModel implementation level\n // If no request type is required, no request type is created or referenced\n requestTypeName(method: IMethod): string {\n if (!this.useRequest(method)) return '';\n const request = this.api.getRequestType(method);\n // PB: determines if there is a request object vs flat list\n if (!request) return '';\n request.refCount++;\n method.addType(this.api, request);\n return request.name;\n }\n\n // Looks up or dynamically creates the writeable type for this method based\n // on rules for creating writable types at the IApiModel implementation level\n // If no writeable type is required, no writeable type is created or referenced\n writeableType(type: IType, method?: IMethod): IType | undefined {\n if (!type) return undefined;\n const writer = this.api.mayGetWriteableType(type);\n if (!writer) return undefined;\n writer.refCount++;\n if (method) method.addType(this.api, writer);\n return writer;\n }\n\n typeNames(_countError = true) {\n const items: string[] = [];\n if (!this.api) return items;\n Object.values(this.api.types)\n .filter(type => type.refCount > 0 && !type.intrinsic)\n .forEach(type => items.push(type.name));\n return items;\n }\n\n /**\n * Gets the type mapping to use for generation\n *\n * Also tracks refCounts for the type for generators that need explicit type imports\n *\n * @param type to map for generation\n */\n typeMap(type: IType): IMappedType {\n type.refCount++; // increment refcount\n return { default: this.nullStr || '', name: type.name || '' };\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeGen.js","names":["DelimArray","ArrayType","EnumType","HashType","Type","mayQuote","strBody","commentBlock","text","indent","arguments","length","undefined","commentStr","trim","indentation","lines","split","map","x","concat","trimRight","join","trimInputs","inputs","keepBody","depth","isEmpty","value","Array","isArray","Object","keys","result","values","forEach","v","push","entries","_ref","key","trimmed","CodeGen","constructor","api","versions","_defineProperty","packageName","toUpperCase","_","toString","spec","apiVersion","version","apiPath","apiRef","replace","supportsMultiApi","packagePath","reset","functionsPrologue","_indent","functionsEpilogue","hooksPrologue","hooksEpilogue","mocksPrologue","mocksEpilogue","interfacesPrologue","reserve","name","streamsPrologue","quote","codeQuote","declareEnumValue","functionSignature","_method","declareFunction","declareHook","declareMock","declareInterface","argIndent","args","opener","closer","bump","bumper","open","close","delim","argDelimiter","argValue","arg","val","argType","writeableType","type","mt","typeMap","argVal","asVal","arrayValue","hashValue","intrinsic","assignType","defaultAsVal","assignParams","method","hasComplexArg","requestType","useNamedArguments","getRequestType","indentStr","params","allParams","p","argSet","sep","exp","props","properties","argSetSep","useModelClassForTypes","typeOpen","nl","joined","typeClose","ra","et","elementType","arrayOpen","arrayClose","arrayValDelimiter","i","anyValue","vals","_ref2","hashKeyQuote","hashSetSep","hashOpen","hashClose","paramMappedType","param","location","makeTheCall","_inputs","commentHeader","beginRegion","description","endRegion","warnEditing","streamerSignature","declareStreamer","initArg","_property","construct","_type","describeProperty","property","readOnly","sdkFileName","baseFileName","fileName","sdkPath","base","codePath","fileExtension","comment","noComment","_commentStr","declareParameters","items","declareParameter","paramDelimiter","declareConstructorArg","nullable","nullStr","it","itself","typeProperties","declareType","propertyValues","num","enumDelimiter","prop","declareProperty","propDelimiter","_unused","Error","JSON","stringify","typeSignature","endTypeStr","argGroup","prefix","argList","argFill","current","httpPath","path","_prefix","httpArgs","cookieArgs","headerArgs","bodyArg","queryArgs","errorResponses","results","r","httpCall","errors","transport","httpMethod","toLowerCase","endpoint","streamCall","useRequest","useNamedParameters","eligibleForRequestType","requestTypeName","request","refCount","addType","writer","mayGetWriteableType","typeNames","_countError","types","filter","default"],"sources":["../../src/codeGen.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 { ArgValues } from '@looker/sdk-rtl';\nimport { DelimArray } from '@looker/sdk-rtl';\nimport type {\n ApiModel,\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport {\n ArrayType,\n EnumType,\n HashType,\n Type,\n mayQuote,\n strBody,\n} from './sdkModels';\nimport type { SpecItem } from './specConverter';\n\nexport const commentBlock = (\n text: string | undefined,\n indent = '',\n commentStr = '// '\n) => {\n if (!text || !text.trim()) return '';\n const indentation = indent + commentStr;\n const lines = text.split('\\n').map(x => `${indentation}${x}`.trimRight());\n return lines.join('\\n');\n};\n\n/** Version and spec references for the generator */\nexport interface IVersionInfo {\n /** Server release version (Not the API version) */\n lookerVersion: string;\n /** API specification for generating the SDK */\n spec: SpecItem;\n}\n\n/**\n * Removes all empty input values\n * @param inputs current inputs\n * @param keepBody true to send body as is. false trims body values (default)\n * @param depth recursion depth\n * @returns inputs with all \"empty\" values removed so the key no longer exists\n */\nexport const trimInputs = (inputs: any, keepBody = false, depth = 0): any => {\n function isEmpty(value: any, depth: number): boolean {\n if (Array.isArray(value)) return value.length === 0;\n if (value === undefined) return true;\n if (value === null) return true;\n if (value === '') return true;\n if (value instanceof Object) {\n if (depth === 1) {\n // Top level empty objects are kept. i.e { one: {} } is left unchanged.\n return false;\n }\n return Object.keys(value).length === 0;\n }\n return false;\n }\n\n let result: any;\n if (inputs instanceof DelimArray) return inputs;\n if (Array.isArray(inputs)) {\n result = [];\n Object.values(inputs).forEach((v: any) =>\n result.push(trimInputs(v, keepBody, depth + 1))\n );\n } else if (inputs instanceof Object) {\n if (keepBody && depth > 0) {\n result = inputs;\n } else {\n result = {};\n Object.entries(inputs).forEach(([key, value]) => {\n const trimmed = trimInputs(value, keepBody, depth + 1);\n if (!isEmpty(trimmed, depth + 1)) {\n result[key] = trimmed;\n }\n });\n }\n } else {\n // Scalar or preserved \"body\" value\n result = inputs;\n }\n return result;\n};\n\n/**\n * Function pattern for creating source code assignment expressions\n */\nexport type CodeAssignment = (indent: string, value: any) => string;\n\n/** Language-specific type mapping */\nexport interface IMappedType {\n /** language's name for the type */\n name: string;\n /** default value expression */\n default: string;\n /** assignment expression of value */\n asVal?: CodeAssignment;\n /** expression to use as the type's optional default */\n optional?: string;\n}\n\nexport interface ICodeGen {\n /**\n * root path for generated source code files\n * e.g. 'python' for Python\n */\n codePath: string;\n\n /**\n * folder for the Looker SDK reference\n * e.g. 'looker_sdk' for Python. All python source would end up under `python/looker_sdk`\n */\n packagePath: string;\n\n /**\n * Name of the SDK package\n * e.g. 'Looker40SDK' for API 4.0. This package name is currently determined by the base `CodeGen` class\n */\n packageName: string;\n\n /**\n * relative folder path for sdk file generation\n * e.g. 'sdk` for python\n */\n sdkPath: string;\n\n /** use special handling for a JSON value that can be a string or a number. Introduced for Swift. */\n anyString: boolean;\n\n /** current version of the Api being generated */\n apiVersion: string;\n\n /**\n * beginning name pattern for all environment variables\n * e.g. LOOKERSDK\n */\n environmentPrefix: string;\n\n /**\n * name of api request instance variable\n * e.g. _rtl for Python, transport for TypeScript\n */\n transport: string;\n\n /** reference to self. e.g self, this, it, etc. */\n itself: string;\n\n /** file extension for generated files */\n fileExtension: string;\n\n /**\n * comment string\n * e.g. Python=# C#=// TypeScript=//\n */\n commentStr: string;\n\n /** Generate comments in source code? */\n noComment: boolean;\n\n /**\n * string representation of null value\n * e.g. Python None, C# null, Delphi nil\n */\n nullStr: string;\n\n /** indentation string. Typically two spaces ' ' */\n indentStr: string;\n\n /** end type string. For C# and TypeScript, usually '}\\n' */\n endTypeStr: string;\n\n /** argument separator string. Typically ', ' */\n argDelimiter: string;\n\n /** type properties/args expression separator. E.g ': ' for TypeScript */\n argSetSep: string;\n\n /** hash type properties/args expression separator. E.g ': ' for TypeScript */\n hashSetSep: string;\n\n /** hash key quotes E.g '' for TypeScript and '\"' for Python */\n hashKeyQuote: string;\n\n /** parameter delimiter. Typically \",\\n\" */\n paramDelimiter: string;\n\n /** property delimiter. Typically, \"\\n\" or \",\\n\" */\n propDelimiter: string;\n\n /** enum value delimiter. Typically, \",\\n\" */\n enumDelimiter: string;\n\n /** quote character/string to use for quoted strings. Typically, '\"' or \"'\" */\n codeQuote: string;\n\n /**\n * Does this language support named parameters with default values? Otherwise\n * request types for sdk method signatures may be generated:\n * see IMethod.eligibleForRequestType\n */\n useNamedParameters: boolean;\n\n /** Use named/keyword arguments in calling syntax */\n useNamedArguments: boolean;\n\n /** Mainly for TypeScript SDK tree-shaking support. True produces slices.ext */\n useSlices: boolean;\n\n /** Mainly for TypeScript SDK tree-shaking support. True produces funcs.ext */\n useFunctions: boolean;\n\n /** Does this language implement interfaces? True produces methodInterfaces.ext */\n useInterfaces: boolean;\n\n /** Does this language have streaming methods? */\n willItStream: boolean;\n\n /** versions info used for generating the SDK */\n versions?: IVersionInfo;\n\n /** array open string */\n arrayOpen: string;\n\n /** array close string */\n arrayClose: string;\n\n /** hash open string */\n hashOpen: string;\n\n /** hash close string */\n hashClose: string;\n\n /** type open string */\n typeOpen: string;\n\n /** type close string */\n typeClose: string;\n\n /** Do type declarations use a class definition */\n useModelClassForTypes: boolean;\n\n /**\n * Resets the generator for a new emission\n */\n reset(): void;\n\n /**\n * Quote a string value for the language\n * @param value to quote\n */\n quote(value: any): string;\n\n /**\n * Returns true if the SDK supports multiple API versions of models\n * @returns True if multi-API is supported\n */\n supportsMultiApi(): boolean;\n\n /**\n * Returns the name of the RequestType if this language AND method require it.\n * Otherwise return empty string.\n * @param {IMethod} method\n * @returns {string}\n */\n requestTypeName(method: IMethod): string;\n\n /**\n * Formats argument assignment expressions for source code\n * @param indent code indentation\n * @param args argument assignments as string expressions\n * @param opener structure opener. e.g. { for hash, [ for array\n * @param closer structure closer. e.g. } for hash, ] for array\n */\n argIndent(\n indent: string,\n args: string[],\n opener: string,\n closer: string\n ): string;\n\n /**\n * Generate the assignment value of an argument for this language\n * @param indent code indentation\n * @param arg parameter or property to receive value\n * @param inputs values to find assignment in\n */\n argValue(\n indent: string,\n arg: IParameter | IProperty,\n inputs: ArgValues\n ): string;\n\n /**\n * Maps input values into type\n * @param indent starting indent level\n * @param type that receives assignments\n * @param inputs to assign to type\n */\n assignType(indent: string, type: IType, inputs: ArgValues): string;\n\n /**\n * Generate assignment statement for parameters of a method\n * @param method to assign values to\n * @param inputs to assign to method parameters\n */\n assignParams(method: IMethod, inputs: ArgValues): string;\n\n /**\n * Argument value setter code expression\n * @param name of argument/property\n * @param sep spacing to separate value. Could be newline or single space or something else\n * @param exp expression (as valid code fragment) to assign\n *\n * @example `foo: bar` for TypeScript where `name` is \"foo\", `sep` is \": \" and `exp` is \"bar\"\n */\n argSet(name: string, sep: string, exp: string): string;\n\n /**\n * Converts val to an array value expression\n * @param indent code indentation\n * @param type of array to create\n * @param val value(s) to convert to a code assignment\n */\n arrayValue(indent: string, type: IType, val: any): string;\n\n /**\n * Converts any value to its code expression\n * @param indent code indentation\n * @param val value(s) to convert to a code assignment\n */\n anyValue(indent: string, val: any): string;\n\n /** Increase indent */\n bumper(indent: string): string;\n\n /**\n * Converts val to a dictionary/hash code expression\n * @param indent code indentation\n * @param val value(s) to convert to a code assignment\n */\n hashValue(indent: string, val: any): any;\n\n /**\n * Generate the SDK calling syntax for the method with the provided inputs\n * @param method to convert to SDK call\n * @param inputs to assign to parameters of the method\n */\n makeTheCall(method: IMethod, inputs: ArgValues): string;\n\n /**\n * Returns the WriteType if the passed type has any readOnly properties or types\n *\n * If the writeable type exists, a reference to it is added to the method\n * @param {IType} type\n * @param method to track writeable type conversion\n * @returns {IType | undefined}\n */\n writeableType(type: IType, method?: IMethod): IType | undefined;\n\n /**\n * standard code to insert at the top of the generated \"methods\" file(s)\n * @param indent code indentation\n */\n methodsPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"funcs\" file(s)\n * @param indent code indentation\n */\n functionsPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"hooks\" file(s)\n * @param indent code indentation\n */\n hooksPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"mocks\" file(s)\n * @param indent code indentation\n */\n mocksPrologue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"methodsInterface\" file(s)\n * @param indent code indentation\n */\n interfacesPrologue(indent: string): string;\n\n /**\n * standard code to append to the bottom of the generated \"methods\" file(s)\n * @param indent code indentation\n */\n methodsEpilogue(indent: string): string;\n\n /**\n * standard code to append to the bottom of the generated \"funcs\" file(s)\n * @param indent code indentation\n */\n functionsEpilogue(indent: string): string;\n\n /**\n * generated code to append to the bottom of the generated \"hooks\" file(s)\n * @param indent code indentation\n */\n hooksEpilogue(indent: string): string;\n\n /**\n * generated code to append to the bottom of the generated \"mocks\" file(s)\n * @param indent code indentation\n */\n mocksEpilogue(indent: string): string;\n\n /**\n * standard code to insert at the top of the generated \"streams\" file(s)\n * @param indent code indentation\n */\n streamsPrologue(indent: string): string;\n\n /**\n * aliases or escapes names that are the language's reserved words, or must be treated specially, like hyphenate names\n * @param name symbol name to reserve\n * @returns either the original name, or the transformed \"reserved\" version of it\n */\n reserve(name: string): string;\n\n /**\n * standard code to insert at the top of the generated \"models\" file(s)\n * @param {string} indent code indentation\n * @returns {string} generated code\n */\n modelsPrologue(indent: string): string;\n\n /**\n * standard code to append to the bottom of the generated \"models\" file(s)\n * @param {string} indent code indentation\n * @returns {string} generated code\n */\n modelsEpilogue(indent: string): string;\n\n /**\n * Get the name of an SDK file complete with API version\n * @param {string} baseFileName e.g. \"methods\" or \"models\"\n * @returns {string} fully specified, API-version-specific file name\n */\n sdkFileName(baseFileName: string): string;\n\n /**\n * provide the name for a file with the appropriate language code extension\n * @param {string} base eg \"methods\" or \"models\"\n * @returns {string} full sdk file name complete with extension\n */\n fileName(base: string): string;\n\n /**\n * generate an optional comment header if the comment is not empty\n * @param indent code indentation\n * @param text of comment, can be multi-line\n * @param commentStr comment character for multi-line comments\n * @returns comment (or not)\n */\n commentHeader(\n indent: string,\n text: string | undefined,\n commentStr?: string\n ): string;\n\n /**\n * group argument names together\n * e.g.\n * [ row_size, page_offset ]\n * @param {string} indent code indentation\n * @param {Arg[]} args list of argument names\n * @param {string} prefix \"namespace\" for argument names\n * @returns {string} source code\n */\n argGroup(indent: string, args: Arg[], prefix?: string): string;\n\n /**\n * list arguments by name\n * e.g.\n * row_size, page_offset\n * @param {string} indent code indentation\n * @param {Arg[]} args list of argument names\n * @param {string} prefix \"namespace\" for argument names\n * @returns {string} source code\n */\n argList(indent: string, args: Arg[], prefix?: string): string;\n\n /**\n * generate a comment block\n * e.g.\n * # this is a\n * # multi-line comment block\n * @param indent code indentation\n * @param description as comment\n * @returns comment block\n */\n comment(indent: string, description: string): string;\n\n /**\n * Generate a #region comment equivalent for the language\n * @param indent code indentation\n * @param description as comment\n * @returns region comment\n */\n beginRegion(indent: string, description: string): string;\n\n /**\n * Generate an #endregion comment equivalent for the language\n * @param indent code indentation\n * @param description as comment\n * @returns region comment\n */\n endRegion(indent: string, description: string): string;\n\n /**\n * generates the method signature including parameter list and return type.\n * @param indent code indentation\n * @param method to declare\n */\n methodSignature(indent: string, method: IMethod): string;\n\n /**\n * generates the function signature including parameter list and return type.\n * @param indent code indentation\n * @param method to declare\n */\n functionSignature(indent: string, method: IMethod): string;\n\n /**\n * convert endpoint pattern to platform-specific string template\n * @param {string} path endpoint path template\n * @param {string} prefix namespace prefix\n * @returns {string} string template\n */\n httpPath(path: string, prefix?: string): string;\n\n /**\n * generate a call to the http API abstraction\n * includes http method, path, body, query, headers, cookie arguments\n * @param {string} indent code indentation\n * @param {IMethod} method to call\n * @returns {string} source code\n */\n httpCall(indent: string, method: IMethod): string;\n\n /**\n * generate a call to the stream API abstraction\n * includes http method, path, body, query, headers, cookie arguments\n * @param {string} indent code indentation\n * @param {IMethod} method to call\n * @returns {string} source code\n */\n streamCall(indent: string, method: IMethod): string;\n\n /**\n * generates the type declaration signature for the start of the type definition\n * @param {string} indent code indentation\n * @param {IType} type to declare\n * @returns {string} source code\n */\n typeSignature(indent: string, type: IType): string;\n\n /**\n * generates summary text\n * e.g, for Python:\n * '''This is the method summary'''\n * @param {string} indent code indentation\n * @param {string} text comment\n * @returns {string} source code\n */\n summary(indent: string, text: string): string;\n\n /**\n *\n * produces the declaration block for a parameter\n * e.g.\n * # ID of the query to run\n * query_id: str\n *\n * and\n *\n * # size description of parameter\n * row_limit: int = None\n * @param {string} indent code indentation\n * @param {IMethod} method method containing the parameter\n * @param {IParameter} param parameter to declare\n * @returns {string} the parameter declaration\n */\n declareParameter(indent: string, method: IMethod, param: IParameter): string;\n\n /**\n * Handles the encoding call for path parameters within method declarations\n * @param {string} indent code indentation\n * @param {IMethod} method structure of method to declare\n * @returns {string} the resolved API endpoint path\n */\n encodePathParams(indent: string, method: IMethod): string;\n\n /**\n * generates the entire method\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the method\n */\n declareMethod(indent: string, method: IMethod): string;\n\n /**\n * generates the entire function\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the function\n */\n declareFunction(indent: string, method: IMethod): string;\n\n /**\n * declares the hook/slice for a function\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the hook\n */\n declareHook(indent: string, method: IMethod): string;\n\n /**\n * declares the mock handler for a method\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the mock method\n */\n declareMock(indent: string, method: IMethod): string;\n\n /**\n * generates the method's interface declaration\n * @param indent code indentation\n * @param method structure of method to declare\n * @returns the declaration code for the method's interface\n */\n declareInterface(indent: string, method: IMethod): string;\n\n /**\n * generates the streaming method signature including parameter list and return type.\n * @param {string} indent code indentation\n * @param {IMethod} method\n * @returns {string}\n */\n streamerSignature(indent: string, method: IMethod): string;\n\n /**\n * Generates the entire streaming method\n * @param {string} indent code indentation\n * @param {IMethod} method method to declare\n * @returns {string} source code\n */\n declareStreamer(indent: string, method: IMethod): string;\n\n /**\n * generates the list of parameters for a method signature\n * e.g.\n * # ID of the query to run\n * query_id: str,\n * # size description of parameter\n * row_limit: int = None\n * @param {string} indent code indentation\n * @param {IMethod} method containing parameters to declare\n * @returns {string} source code\n */\n declareParameters(indent: string, method: IMethod): string;\n\n /**\n * generates the syntax for a constructor argument\n * @param {string} indent code indentation\n * @param {IProperty} property of constructor\n * @returns {string} source code\n */\n declareConstructorArg(indent: string, property: IProperty): string;\n\n /**\n * produces the code for the type constructor\n * @param {string} indent code indentation\n * @param {IType} type to generate\n * @returns {string} source code\n */\n construct(indent: string, type: IType): string;\n\n /**\n * produces list of properties for declareType\n * @param {IType} type to generate\n * @returns {PropertyList} list of properties\n */\n typeProperties(type: IType): IProperty[];\n\n /**\n * generates entire type declaration\n * @param {string} indent code indentation\n * @param {IType} type to generate\n * @returns {string} source code\n */\n declareType(indent: string, type: IType): string;\n\n /**\n * generates a textual description for the property's comment header\n * @param {IProperty} property to describe\n * @returns {string} source code\n */\n describeProperty(property: IProperty): string;\n\n /**\n * generates type property declaration\n * @param {string} indent code indentation\n * @param {IProperty} property to declare\n * @returns {string} source code\n */\n declareProperty(indent: string, property: IProperty): string;\n\n /**\n * generates an enum value declaration\n * @param {string} indent code indentation\n * @param {EnumValueType} value to declare\n * @returns {string} source code\n */\n declareEnumValue(indent: string, value: EnumValueType): string;\n\n /**\n * if countError is false, no import reference to Error or IError should be included\n * @param {boolean} countError\n * @returns {string[]}\n */\n typeNames(countError: boolean): string[];\n\n /**\n * Type mapping for a parameter with special handling for body params\n * @param param to map\n * @param method containing param\n */\n paramMappedType(param: IParameter, method: IMethod): IMappedType;\n\n /**\n * Language-specific type conversion\n * @param {IType} type to potentially convert\n * @returns {IMappedType} converted type\n */\n typeMap(type: IType): IMappedType;\n}\n\nexport abstract class CodeGen implements ICodeGen {\n willItStream = false;\n anyString = false;\n codePath = './';\n packagePath = 'looker';\n sdkPath = 'sdk';\n packageName = 'LookerSDK';\n environmentPrefix = this.packageName.toUpperCase();\n itself = '';\n fileExtension = '.code';\n argDelimiter = ', ';\n paramDelimiter = ',\\n';\n propDelimiter = '\\n';\n enumDelimiter = ',\\n';\n codeQuote = `'`;\n useNamedParameters = true;\n useNamedArguments = true;\n useFunctions = false;\n useSlices = false;\n useInterfaces = false;\n\n // makeTheCall definitions\n argSetSep = ': ';\n hashSetSep = ': ';\n arrayOpen = '[';\n arrayClose = ']';\n hashOpen = '{';\n hashClose = '}';\n hashKeyQuote = '';\n typeOpen = '{';\n typeClose = '}';\n useModelClassForTypes = false;\n\n indentStr = ' ';\n commentStr = '// ';\n noComment = false;\n nullStr = 'null';\n endTypeStr = '';\n transport = 'rtl';\n\n apiVersion = '';\n apiRef = '';\n apiPath = '';\n\n constructor(public api: ApiModel, public versions?: IVersionInfo) {\n if (versions && versions.spec) {\n this.apiVersion = versions.spec.version;\n this.apiPath = `/${versions.spec.key}`;\n this.apiRef = versions.spec.key.replace('.', '');\n this.packageName = this.supportsMultiApi()\n ? `Looker${this.apiRef}SDK`\n : `LookerSDK`;\n this.packagePath += this.apiPath;\n }\n }\n\n /** base level reset does nothing */\n reset() {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n }\n\n /**\n * Returns true if the SDK supports multiple API versions of models\n * @returns True if multi-API is supported\n */\n supportsMultiApi() {\n // Currently, all but Swift support multiple APIs\n return true;\n }\n\n /**\n * beginning of the \"methods\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract methodsPrologue(indent: string): string;\n\n functionsPrologue(_indent: string): string {\n // usually, nothing to \"close\" atomic function declarations\n return '';\n }\n\n functionsEpilogue(_indent: string): string {\n return '';\n }\n\n hooksPrologue(_indent: string): string {\n return '';\n }\n\n hooksEpilogue(_indent: string): string {\n return '';\n }\n\n mocksPrologue(_indent: string): string {\n return '';\n }\n\n mocksEpilogue(_indent: string): string {\n return '';\n }\n\n interfacesPrologue(_indent: string): string {\n return '';\n }\n\n /**\n * ending of the \"methods\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract methodsEpilogue(indent: string): string;\n\n reserve(name: string) {\n return name;\n }\n\n streamsPrologue(_indent: string) {\n return '';\n }\n\n /**\n * beginning of the \"models\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract modelsPrologue(indent: string): string;\n\n /**\n * ending of the \"models\" file for a language\n * @param {string} indent\n * @returns {string}\n */\n abstract modelsEpilogue(indent: string): string;\n\n abstract declareParameter(\n indent: string,\n method: IMethod,\n param: IParameter\n ): string;\n\n /**\n * Quote a string value for the language\n * @param value to quote\n */\n quote(value: any) {\n return `${this.codeQuote}${value}${this.codeQuote}`;\n }\n\n declareEnumValue(indent: string, value: EnumValueType) {\n const quote = typeof value === 'string' ? this.codeQuote : '';\n return `${indent}${mayQuote(value)} = ${quote}${value}${quote}`;\n }\n\n abstract declareProperty(indent: string, property: IProperty): string;\n\n abstract typeSignature(indent: string, type: IType): string;\n\n abstract methodSignature(indent: string, method: IMethod): string;\n\n functionSignature(_indent: string, _method: IMethod): string {\n return '';\n }\n\n abstract declareMethod(indent: string, method: IMethod): string;\n\n declareFunction(_indent: string, _method: IMethod): string {\n return '';\n }\n\n declareHook(_indent: string, _method: IMethod): string {\n return '';\n }\n\n declareMock(_indent: string, _method: IMethod): string {\n return '';\n }\n\n declareInterface(_indent: string, _method: IMethod): string {\n return '';\n }\n\n argIndent(indent: string, args: string[], opener: string, closer: string) {\n const bump = this.bumper(indent);\n let open = opener;\n let close = closer;\n let delim = this.argDelimiter;\n if (args.length > 1) {\n open = `${opener}\\n${bump}`;\n close = `\\n${indent}${closer}`;\n delim = `${this.argDelimiter.trim()}\\n${bump}`;\n }\n return `${open}${args.join(delim)}${close}`;\n }\n\n defaultAsVal: CodeAssignment = (_, v) => v.toString();\n\n argValue(\n indent: string,\n arg: IParameter | IProperty,\n inputs: ArgValues\n ): string {\n // TODO handle required positional arguments that are not provided?\n if (!(arg.name in inputs)) return '';\n const val = inputs[arg.name];\n const argType = this.writeableType(arg.type) || arg.type;\n const mt = this.typeMap(argType);\n let argVal: string;\n if (mt.asVal) {\n argVal = mt.asVal(indent, val);\n } else if (argType instanceof ArrayType) {\n argVal = this.arrayValue(indent, argType, val);\n // } else if (argType instanceof DelimArrayType) {\n // argVal = this.delimArrayValue(indent, argType, val)\n } else if (argType instanceof HashType) {\n argVal = this.hashValue(indent, val);\n } else if (!argType.intrinsic) {\n argVal = this.assignType(indent, argType, val);\n } else {\n argVal = this.defaultAsVal(indent, val);\n }\n return argVal;\n }\n\n assignParams(method: IMethod, inputs: ArgValues): string {\n const args: string[] = [];\n let hasComplexArg = false;\n if (Object.keys(inputs).length > 0) {\n let requestType: IType | undefined;\n if (\n !this.useNamedArguments &&\n (requestType = this.api.getRequestType(method))\n ) {\n args.push(this.assignType(this.indentStr, requestType, inputs));\n hasComplexArg = true;\n } else {\n const params = method.allParams;\n params.forEach(p => {\n const v = this.argValue(this.indentStr, p, inputs);\n if (v !== '') {\n const arg = this.useNamedArguments ? `${p.name}=${v}` : v;\n args.push(arg);\n if (!p.type.intrinsic) {\n hasComplexArg = true;\n }\n }\n });\n }\n }\n let open = '';\n if (args.length > 1 || hasComplexArg) {\n open = `\\n${this.indentStr}`;\n }\n return args.length > 0 ? `${open}${args.join(this.argDelimiter)}` : '';\n }\n\n argSet(name: string, sep: string, exp: string) {\n return `${name}${sep}${exp}`;\n }\n\n /**\n * Maps input values into type\n * @param indent starting indent level\n * @param type that receives assignments\n * @param inputs to assign to type\n */\n assignType(indent: string, type: IType, inputs: ArgValues): string {\n const mt = this.typeMap(type);\n const args: string[] = [];\n // child properties are indented one level\n const bump = this.bumper(indent);\n const props = Object.values(type.properties);\n props.forEach(p => {\n const v = this.argValue(bump, p, inputs);\n if (v) args.push(this.argSet(p.name, this.argSetSep, v));\n });\n\n const open = this.useModelClassForTypes\n ? `${mt.name}${this.typeOpen}`\n : this.typeOpen;\n const nl = `,\\n${bump}`;\n let joined = `\\n${bump}${args.join(nl)}\\n${indent}`;\n if (joined.trim().length === 0) {\n // trim the structure new lines if there are no arguments\n joined = '';\n }\n // need a bump after `open` to account for the first argument\n // not getting the proper bump from args.join()\n return `${open}${joined}${this.typeClose}`;\n }\n\n /**\n * Constructs array of ArrayType elements\n *\n * It is rendered on a single line if the array has only one element\n * and it is an IntrinsicType. Otherwise the array is rendered on\n * multiple lines with elements appropriately further indented\n *\n * @param indent starting indent level\n * @param type that receives assignments\n * @param val elements for this array\n */\n arrayValue(indent: string, type: IType, val: any) {\n const ra = type as ArrayType;\n const et = ra.elementType;\n const bump = this.bumper(indent);\n // single intrinsic element array renders single line\n let open = this.arrayOpen;\n let close = this.arrayClose;\n let arrayValDelimiter = this.argDelimiter;\n // multiple intrinsic elements or 1 or more non-intrinsic element array\n // renders multiple lines\n if (val.length > 1 || !et.intrinsic) {\n // the opener uses bump to account for the first argument\n // not getting the proper bump from args.join()\n open = `${open}\\n${bump}`;\n close = `\\n${indent}${close}`;\n // bump elements one level in from array declaration\n arrayValDelimiter = `${arrayValDelimiter.trim()}\\n${bump}`;\n }\n const args: string[] = [];\n let asVal = this.defaultAsVal;\n const mt = this.typeMap(et);\n if (et.intrinsic) {\n asVal = mt.asVal || asVal;\n } else {\n asVal = (i: string, v: any) => this.assignType(i, et, v);\n }\n // passing `bump` to `asVal` - typically intrinsic asVal ignores\n // indentation but certainly for the assignType case we want the\n // nested object to be indented a level further\n val.forEach((v: any) => args.push(asVal(bump, v)));\n return open + args.join(arrayValDelimiter) + close;\n }\n\n anyValue(indent: string, val: any): string {\n if (val instanceof Type) return this.assignType(indent, val as Type, val);\n switch (typeof val) {\n case 'bigint':\n case 'number':\n return val.toString();\n case 'boolean':\n return val ? 'true' : 'false';\n case 'string':\n return this.quote(val);\n case 'undefined':\n return '';\n case 'function':\n return '';\n case 'object': {\n if (Array.isArray(val)) {\n const vals: string[] = [];\n Object.values(val).forEach(v => {\n vals.push(this.anyValue(this.bumper(indent), v));\n });\n return this.argIndent(indent, vals, this.arrayOpen, this.arrayClose);\n } else {\n return this.hashValue(indent, val);\n }\n }\n case 'symbol':\n return val.toString();\n }\n return val.toString();\n }\n\n // indent represents the starting level of indentation for this hash\n // the key/value pairs are further indented one bump\n hashValue(indent: string, val: any) {\n const args: string[] = [];\n const bump = this.bumper(indent);\n Object.entries(val).forEach(([name, v]) => {\n const exp = this.anyValue(bump, v);\n const key = `${this.hashKeyQuote}${name}${this.hashKeyQuote}`;\n args.push(this.argSet(key, this.hashSetSep, exp));\n });\n return this.argIndent(indent, args, this.hashOpen, this.hashClose);\n }\n\n paramMappedType(param: IParameter, method: IMethod) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type;\n return this.typeMap(type);\n }\n\n makeTheCall(_method: IMethod, _inputs: ArgValues) {\n return this.commentHeader('', `Not yet available`);\n }\n\n abstract encodePathParams(indent: string, method: IMethod): string;\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 warnEditing() {\n return (\n 'NOTE: Do not edit this file generated by Looker SDK Codegen' +\n (this.apiVersion ? ` for API ${this.apiVersion}` : '')\n );\n }\n\n streamerSignature(_indent: string, _method: IMethod) {\n return '';\n }\n\n // Only implement this method for languages that have explicit streaming methods declared\n declareStreamer(_indent: string, _method: IMethod) {\n return '';\n }\n\n abstract summary(indent: string, text: string | undefined): string;\n\n initArg(_indent: string, _property: IProperty): string {\n return '';\n }\n\n construct(_indent: string, _type: IType): string {\n return '';\n }\n\n bumper(indent: string) {\n return indent + this.indentStr;\n }\n\n describeProperty(property: IProperty) {\n return `${property.description}${property.readOnly ? ' (read-only)' : ''}`;\n }\n\n sdkFileName(baseFileName: string) {\n return this.fileName(`${this.sdkPath}/${this.apiVersion}/${baseFileName}`);\n }\n\n fileName(base: string) {\n return `${this.codePath}${this.packagePath}/${base}${this.fileExtension}`;\n }\n\n comment(indent: string, description: string) {\n if (this.noComment) return '';\n return commentBlock(description, indent, this.commentStr);\n }\n\n commentHeader(\n indent: string,\n text: string | undefined,\n _commentStr?: string\n ) {\n if (this.noComment) return '';\n return text ? `${this.comment(indent, text)}\\n` : '';\n }\n\n declareParameters(indent: string, method: IMethod) {\n const params = method.allParams;\n const items: string[] = [];\n if (params)\n params.forEach(p => items.push(this.declareParameter(indent, method, p)));\n return items.join(this.paramDelimiter);\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n return `${indent}${property.name}${\n property.nullable ? ' = ' + this.nullStr : ''\n }`;\n }\n\n it(value: string) {\n return this.itself ? `${this.itself}.${value}` : value;\n }\n\n typeProperties(type: IType) {\n return Object.values(type.properties);\n }\n\n declareType(indent: string, type: IType) {\n const bump = this.bumper(indent);\n const props: string[] = [];\n let propertyValues = '';\n try {\n if (type instanceof EnumType) {\n const num = type as EnumType;\n num.values.forEach(value =>\n props.push(this.declareEnumValue(bump, value))\n );\n propertyValues = props.join(this.enumDelimiter);\n } else {\n this.typeProperties(type).forEach(prop =>\n props.push(this.declareProperty(bump, prop))\n );\n propertyValues = props.join(this.propDelimiter);\n }\n } catch {\n throw new Error(JSON.stringify(type, null, 2));\n }\n return (\n this.typeSignature(indent, type) +\n propertyValues +\n this.construct(indent, type) +\n `${this.endTypeStr ? indent : ''}${this.endTypeStr}`\n );\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n return args && args.length !== 0\n ? `${indent}[${prefix}${args.join(this.argDelimiter + prefix)}]`\n : this.nullStr;\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n return args && args.length !== 0\n ? `${indent}${prefix}${args.join(this.argDelimiter + prefix)}`\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 httpPath(path: string, _prefix?: string) {\n return path;\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 let result = this.argFill('', this.argGroup(indent, method.cookieArgs));\n result = this.argFill(result, this.argGroup(indent, method.headerArgs));\n result = this.argFill(\n result,\n method.bodyArg ? method.bodyArg : this.nullStr\n );\n result = this.argFill(result, this.argGroup(indent, method.queryArgs));\n return result;\n }\n\n errorResponses(_indent: string, method: IMethod) {\n const results: string[] = method.errorResponses.map(r => `${r.type.name}`);\n return results.join(', ');\n }\n\n httpCall(indent: string, method: IMethod) {\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(\n this.transport\n )}.${method.httpMethod.toLowerCase()}(${errors}, \"${method.endpoint}\"${\n args ? ', ' + args : ''\n })`;\n }\n\n streamCall(_indent: string, _method: IMethod) {\n return '';\n }\n\n useRequest(method: IMethod) {\n if (this.useNamedParameters) return false;\n return method.eligibleForRequestType();\n }\n\n // Looks up or dynamically creates the request type for this method based\n // on rules for creating request types at the IApiModel implementation level\n // If no request type is required, no request type is created or referenced\n requestTypeName(method: IMethod): string {\n if (!this.useRequest(method)) return '';\n const request = this.api.getRequestType(method);\n // PB: determines if there is a request object vs flat list\n if (!request) return '';\n request.refCount++;\n method.addType(this.api, request);\n return request.name;\n }\n\n // Looks up or dynamically creates the writeable type for this method based\n // on rules for creating writable types at the IApiModel implementation level\n // If no writeable type is required, no writeable type is created or referenced\n writeableType(type: IType, method?: IMethod): IType | undefined {\n if (!type) return undefined;\n const writer = this.api.mayGetWriteableType(type);\n if (!writer) return undefined;\n writer.refCount++;\n if (method) method.addType(this.api, writer);\n return writer;\n }\n\n typeNames(_countError = true) {\n const items: string[] = [];\n if (!this.api) return items;\n Object.values(this.api.types)\n .filter(type => type.refCount > 0 && !type.intrinsic)\n .forEach(type => items.push(type.name));\n return items;\n }\n\n /**\n * Gets the type mapping to use for generation\n *\n * Also tracks refCounts for the type for generators that need explicit type imports\n *\n * @param type to map for generation\n */\n typeMap(type: IType): IMappedType {\n type.refCount++; // increment refcount\n return { default: this.nullStr || '', name: type.name || '' };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exampleInfo.js","names":["permaLink","remote","hash","fileName","line","concat","codeSearchLink","ideLink","parentPath","vscode","summarize","lode","call","sourceFile","summaries","summary","exampleLink","link","remoteOrigin","commitHash","permalink","description","tooltip","lineNumber","toString","extensionToLanguage","getLanguageExtensions","language","toLowerCase","findExampleLanguages","methodName","all","nuggets","result","Set","keys","Object","forEach","key","calls","add","Array","from","findExamples","operationId","exts","links","length","ext","push","sort","a","b","localeCompare"],"sources":["../../src/exampleInfo.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 { ArgValues, KeyedCollection } from './sdkModels';\n\nexport interface ISDKCall {\n /** SDK variable name for the call found */\n sdk: string;\n\n /** Name of the method/operationId */\n operationId: string;\n\n /** Source code line number */\n line: number;\n\n /** Source code column number where method name was found */\n column: number;\n}\n\nexport interface IExampleLink {\n /** Either summary from .md documentation or the name of the source file */\n description: string;\n /** permalink to file and line number */\n permalink: string;\n /** text to show on hover */\n tooltip: string;\n /** line number text */\n lineNumber: string;\n}\n\nexport type SDKCalls = ISDKCall[];\n\nexport interface ISummary {\n /** relative file name */\n sourceFile: string;\n /** summary extracted from md, rst, or other doc file */\n summary: string;\n}\n\nexport type Summaries = KeyedCollection<ISummary>;\n\nexport interface IFileCall {\n /** relative file name */\n sourceFile: string;\n /** line number for source code call */\n line: number;\n /** Optional column number for source code call. Maybe we don't need this datum */\n column?: number;\n}\n\n/**\n { \"me\": {\n \".ts\": {\n [\n {\n \"hash\": \"TODO\",\n \"sourceFile\": \"foo.ts\",\n \"line\": 1,\n \"column\": 5,\n }\n ]\n }\n }\n}\n */\n\nexport type FileCalls = IFileCall[];\n\nexport type LanguageCalls = KeyedCollection<FileCalls>;\n\nexport interface INugget {\n operationId: string;\n calls: LanguageCalls;\n}\n\nexport type Nuggets = KeyedCollection<INugget>;\n\nexport interface IMine {\n commitHash: string;\n remoteOrigin: string;\n}\n\n/** All mined example data */\nexport interface IExampleMine extends IMine {\n summaries: Summaries;\n nuggets: Nuggets;\n}\n\n/** function type for formatting source code links */\nexport type SourceLink = (\n remote: string,\n hash: string,\n fileName: string,\n line: number\n) => string;\n\n/**\n * Create a permalink for a github file with line number\n * @param remote https url for repository\n * @param hash commit hash\n * @param fileName name of file\n * @param line line number in file\n */\nexport const permaLink: SourceLink = (\n // https://github.com/looker-open-source/sdk-codegen/blob/bfca52d2c8ba85018f76548158fd1dd90aa1f64a/examples/typescript/customConfigReader.ts#L53\n remote: string,\n hash: string,\n fileName: string,\n line: number\n) => `${remote}/blob/${hash}/${fileName}#L${line}`;\n\n/**\n * Create a permalink for a code search with commit hash and line number\n * @param remote https url for repository\n * @param hash commit hash\n * @param fileName name of file\n * @param line line number in file\n */\nexport const codeSearchLink: SourceLink = (\n remote: string,\n hash: string,\n fileName: string,\n line: number\n) => `${remote}/${fileName}?l=${line}&rcl=${hash}`;\n\n/**\n * Create an IDE file link with line number\n * @param parentPath to fully qualify the source file\n * @param fileName full name of file\n * @param line line number in file\n */\nexport const ideLink = (\n // https://plugins.jetbrains.com/plugin/6027-remote-call\n // https://github.com/microsoft/vscode/issues/4883#issuecomment-270141535\n // pattern:\n parentPath: string,\n fileName: string,\n line: number\n) => {\n // const idea = 'http//localhost:8091'\n const vscode = 'vscode://';\n\n return `${vscode}${parentPath}/${fileName}:L:${line}`;\n};\n\n/**\n * Gets the summary for an example file, or defaults to the file and line number\n * @param lode all mined example data\n * @param call specific call to summarize\n */\nexport const summarize = (lode: IExampleMine, call: IFileCall): string => {\n if (call.sourceFile in lode.summaries) {\n return lode.summaries[call.sourceFile].summary;\n }\n // Default to file name if no summary is found\n return call.sourceFile;\n};\n\n/**\n * Provides permalink and description for an example file call\n * @param lode all mined example data\n * @param call specific all to link\n */\nexport const exampleLink = (\n lode: IExampleMine,\n call: IFileCall\n): IExampleLink => {\n const link = permaLink(\n lode.remoteOrigin,\n lode.commitHash,\n call.sourceFile,\n call.line\n );\n\n return {\n permalink: link,\n description: summarize(lode, call),\n tooltip: `${call.sourceFile} line ${call.line}`,\n lineNumber: call.line.toString(),\n };\n};\n\n// TODO create one data set for extensionToLanguage and getLanguageExtensions\n/** map file extension to language name */\nexport const extensionToLanguage: ArgValues = {\n '.py': 'Python',\n '.ts': 'TypeScript',\n '.tsx': 'TypeScript',\n '.cs': 'C#',\n '.kt': 'Kotlin',\n '.swift': 'Swift',\n '.rb': 'Ruby',\n '.dart': 'Dart',\n '.go': 'Go',\n '.md': 'Markdown',\n '.java': 'Java',\n};\n\n/**\n * Return the recognized file extensions for the requested language\n * @param language\n */\nexport const getLanguageExtensions = (language: string): string[] => {\n switch (language.toLowerCase()) {\n case 'ts':\n case 'typescript':\n return ['.ts', 'tsx'];\n case 'csharp':\n case 'c#':\n return ['.cs'];\n case 'ruby':\n return ['.rb'];\n case 'python':\n return ['.py'];\n case 'swift':\n return ['.swift'];\n case 'kotlin':\n return ['.kt'];\n case 'dart':\n return ['.dart'];\n case 'go':\n return ['.go'];\n case 'java':\n return ['.java'];\n default:\n return [];\n }\n};\n\nexport const findExampleLanguages = (\n lode: IExampleMine,\n methodName: string\n) => {\n const all = lode.nuggets[methodName];\n if (!all) return [];\n const result = new Set<string>();\n const keys = Object.keys(extensionToLanguage);\n keys.forEach(key => {\n if (all.calls[key]) result.add(extensionToLanguage[key]);\n });\n return Array.from(result);\n};\n\n/**\n * Searches for examples containing operationId usages in the given language\n * @param lode All example data\n * @param language Language example should be in\n * @param operationId Method's operationId to search for\n */\nexport const findExamples = (\n lode: IExampleMine,\n language: string,\n operationId: string\n): IExampleLink[] => {\n const all = lode.nuggets[operationId];\n const exts = getLanguageExtensions(language);\n const links: IExampleLink[] = [];\n\n if (all && exts.length > 0) {\n exts.forEach(ext => {\n const calls = all.calls[ext];\n if (calls) {\n calls.forEach((call: IFileCall) => {\n const link = exampleLink(lode, call);\n if (link) {\n links.push(exampleLink(lode, call));\n }\n });\n }\n });\n }\n return links.sort((a, b) => a.permalink.localeCompare(b.permalink));\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exampleInfo.js","names":["permaLink","remote","hash","fileName","line","concat","codeSearchLink","ideLink","parentPath","vscode","summarize","lode","call","sourceFile","summaries","summary","exampleLink","link","remoteOrigin","commitHash","permalink","description","tooltip","lineNumber","toString","extensionToLanguage","getLanguageExtensions","language","toLowerCase","findExampleLanguages","methodName","all","nuggets","result","Set","keys","Object","forEach","key","calls","add","Array","from","findExamples","operationId","exts","links","length","ext","push","sort","a","b","localeCompare"],"sources":["../../src/exampleInfo.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 { ArgValues } from '@looker/sdk-rtl';\nimport type { KeyedCollection } from './sdkModels';\n\nexport interface ISDKCall {\n /** SDK variable name for the call found */\n sdk: string;\n\n /** Name of the method/operationId */\n operationId: string;\n\n /** Source code line number */\n line: number;\n\n /** Source code column number where method name was found */\n column: number;\n}\n\nexport interface IExampleLink {\n /** Either summary from .md documentation or the name of the source file */\n description: string;\n /** permalink to file and line number */\n permalink: string;\n /** text to show on hover */\n tooltip: string;\n /** line number text */\n lineNumber: string;\n}\n\nexport type SDKCalls = ISDKCall[];\n\nexport interface ISummary {\n /** relative file name */\n sourceFile: string;\n /** summary extracted from md, rst, or other doc file */\n summary: string;\n}\n\nexport type Summaries = KeyedCollection<ISummary>;\n\nexport interface IFileCall {\n /** relative file name */\n sourceFile: string;\n /** line number for source code call */\n line: number;\n /** Optional column number for source code call. Maybe we don't need this datum */\n column?: number;\n}\n\n/**\n { \"me\": {\n \".ts\": {\n [\n {\n \"hash\": \"TODO\",\n \"sourceFile\": \"foo.ts\",\n \"line\": 1,\n \"column\": 5,\n }\n ]\n }\n }\n}\n */\n\nexport type FileCalls = IFileCall[];\n\nexport type LanguageCalls = KeyedCollection<FileCalls>;\n\nexport interface INugget {\n operationId: string;\n calls: LanguageCalls;\n}\n\nexport type Nuggets = KeyedCollection<INugget>;\n\nexport interface IMine {\n commitHash: string;\n remoteOrigin: string;\n}\n\n/** All mined example data */\nexport interface IExampleMine extends IMine {\n summaries: Summaries;\n nuggets: Nuggets;\n}\n\n/** function type for formatting source code links */\nexport type SourceLink = (\n remote: string,\n hash: string,\n fileName: string,\n line: number\n) => string;\n\n/**\n * Create a permalink for a github file with line number\n * @param remote https url for repository\n * @param hash commit hash\n * @param fileName name of file\n * @param line line number in file\n */\nexport const permaLink: SourceLink = (\n // https://github.com/looker-open-source/sdk-codegen/blob/bfca52d2c8ba85018f76548158fd1dd90aa1f64a/examples/typescript/customConfigReader.ts#L53\n remote: string,\n hash: string,\n fileName: string,\n line: number\n) => `${remote}/blob/${hash}/${fileName}#L${line}`;\n\n/**\n * Create a permalink for a code search with commit hash and line number\n * @param remote https url for repository\n * @param hash commit hash\n * @param fileName name of file\n * @param line line number in file\n */\nexport const codeSearchLink: SourceLink = (\n remote: string,\n hash: string,\n fileName: string,\n line: number\n) => `${remote}/${fileName}?l=${line}&rcl=${hash}`;\n\n/**\n * Create an IDE file link with line number\n * @param parentPath to fully qualify the source file\n * @param fileName full name of file\n * @param line line number in file\n */\nexport const ideLink = (\n // https://plugins.jetbrains.com/plugin/6027-remote-call\n // https://github.com/microsoft/vscode/issues/4883#issuecomment-270141535\n // pattern:\n parentPath: string,\n fileName: string,\n line: number\n) => {\n // const idea = 'http//localhost:8091'\n const vscode = 'vscode://';\n\n return `${vscode}${parentPath}/${fileName}:L:${line}`;\n};\n\n/**\n * Gets the summary for an example file, or defaults to the file and line number\n * @param lode all mined example data\n * @param call specific call to summarize\n */\nexport const summarize = (lode: IExampleMine, call: IFileCall): string => {\n if (call.sourceFile in lode.summaries) {\n return lode.summaries[call.sourceFile].summary;\n }\n // Default to file name if no summary is found\n return call.sourceFile;\n};\n\n/**\n * Provides permalink and description for an example file call\n * @param lode all mined example data\n * @param call specific all to link\n */\nexport const exampleLink = (\n lode: IExampleMine,\n call: IFileCall\n): IExampleLink => {\n const link = permaLink(\n lode.remoteOrigin,\n lode.commitHash,\n call.sourceFile,\n call.line\n );\n\n return {\n permalink: link,\n description: summarize(lode, call),\n tooltip: `${call.sourceFile} line ${call.line}`,\n lineNumber: call.line.toString(),\n };\n};\n\n// TODO create one data set for extensionToLanguage and getLanguageExtensions\n/** map file extension to language name */\nexport const extensionToLanguage: ArgValues = {\n '.py': 'Python',\n '.ts': 'TypeScript',\n '.tsx': 'TypeScript',\n '.cs': 'C#',\n '.kt': 'Kotlin',\n '.swift': 'Swift',\n '.rb': 'Ruby',\n '.dart': 'Dart',\n '.go': 'Go',\n '.md': 'Markdown',\n '.java': 'Java',\n};\n\n/**\n * Return the recognized file extensions for the requested language\n * @param language\n */\nexport const getLanguageExtensions = (language: string): string[] => {\n switch (language.toLowerCase()) {\n case 'ts':\n case 'typescript':\n return ['.ts', 'tsx'];\n case 'csharp':\n case 'c#':\n return ['.cs'];\n case 'ruby':\n return ['.rb'];\n case 'python':\n return ['.py'];\n case 'swift':\n return ['.swift'];\n case 'kotlin':\n return ['.kt'];\n case 'dart':\n return ['.dart'];\n case 'go':\n return ['.go'];\n case 'java':\n return ['.java'];\n default:\n return [];\n }\n};\n\nexport const findExampleLanguages = (\n lode: IExampleMine,\n methodName: string\n) => {\n const all = lode.nuggets[methodName];\n if (!all) return [];\n const result = new Set<string>();\n const keys = Object.keys(extensionToLanguage);\n keys.forEach(key => {\n if (all.calls[key]) result.add(extensionToLanguage[key]);\n });\n return Array.from(result);\n};\n\n/**\n * Searches for examples containing operationId usages in the given language\n * @param lode All example data\n * @param language Language example should be in\n * @param operationId Method's operationId to search for\n */\nexport const findExamples = (\n lode: IExampleMine,\n language: string,\n operationId: string\n): IExampleLink[] => {\n const all = lode.nuggets[operationId];\n const exts = getLanguageExtensions(language);\n const links: IExampleLink[] = [];\n\n if (all && exts.length > 0) {\n exts.forEach(ext => {\n const calls = all.calls[ext];\n if (calls) {\n calls.forEach((call: IFileCall) => {\n const link = exampleLink(lode, call);\n if (link) {\n links.push(exampleLink(lode, call));\n }\n });\n }\n });\n }\n return links.sort((a, b) => a.permalink.localeCompare(b.permalink));\n};\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kotlin.gen.js","names":["EnumType","describeParam","mayQuote","CodeGen","commentBlock","KotlinGen","constructor","arguments","_defineProperty","supportsMultiApi","isDefaultApi","apiVersion","defaultApi","sdkClassName","concat","apiRef","apiNamespace","methodsPrologue","_indent","warnEditing","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","commentHeader","indent","text","commentStr","length","undefined","noComment","beginRegion","description","endRegion","declareProperty","property","optional","required","type","typeMap","attr","hasSpecialNeeds","jsonName","result","name","paramComment","param","mapped","declareParameter","method","paramMappedType","pOpt","default","assignType","inputs","className","mt","args","bump","bumper","v","arrayValue","push","open","useModelClassForTypes","typeOpen","nl","join","typeClose","assignParams","hasComplexArg","Object","keys","params","allParams","forEach","p","argValue","indentStr","arg","argSetSep","intrinsic","argDelimiter","makeTheCall","_method$returnType","typeName","returnType","resp","methodHeaderComment","_method$description","streamer","lines","trim","resultType","httpMethod","endpoint","responseIsBoth","responseIsBinary","methodHeaderDeclaration","trimEnd","deprecated","jvmOverloads","paramDelimiter","optionalParams","methodSignature","encodePathParams","encodings","pathParams","declareMethod","httpCall","streamerSignature","declareStreamer","streamCall","declareEnumValue","value","describeProperty","typeSignature","props","values","properties","map","prop","header","declareType","num","enumDelimiter","propDelimiter","errorResponses","_method","httpPath","path","prefix","indexOf","replace","argGroup","hash","argBump","argWrapper","argList","nullStr","argFill","current","httpArgs","request","useRequest","bodyArg","queryArgs","it","toLowerCase","summary","typeNames","countError","names","api","types","Error","refCount","filter","asString","_","ktTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","asVal","string","uri","url","void","_i","_v","elementType","mapName","JSON","stringify"],"sources":["../../src/kotlin.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 EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport { EnumType, describeParam, mayQuote } from './sdkModels';\nimport type { CodeAssignment, IMappedType } from './codeGen';\nimport { CodeGen, commentBlock } from './codeGen';\n\nexport class KotlinGen extends CodeGen {\n codePath = './kotlin/src/main/com/';\n packagePath = 'looker';\n itself = 'this';\n fileExtension = '.kt';\n commentStr = '// ';\n nullStr = 'null';\n transport = 'transport';\n\n argDelimiter = ', ';\n // makeTheCall definitions\n argSetSep = ' = ';\n hashSetSep = ' to ';\n arrayOpen = 'arrayOf(';\n arrayClose = ')';\n hashOpen = 'mapOf(';\n hashClose = ')';\n hashKeyQuote = '\"';\n typeOpen = '(';\n typeClose = ')';\n useModelClassForTypes = true;\n\n paramDelimiter = ',\\n';\n propDelimiter = ',\\n';\n codeQuote = '\"';\n enumDelimiter = ',\\n';\n\n indentStr = ' ';\n endTypeStr = '\\n) : Serializable';\n needsRequestTypes = false;\n willItStream = true;\n\n private readonly defaultApi = '4.0';\n\n supportsMultiApi(): boolean {\n return false;\n }\n\n isDefaultApi() {\n return this.apiVersion === this.defaultApi;\n }\n\n // TODO create `defaultPackageName` property in CodeGen\n sdkClassName() {\n return this.isDefaultApi() ? 'LookerSDK' : `Looker${this.apiRef}SDK`;\n }\n\n /**\n * Return either api versioned namespace text or empty string if current API is the default\n * @returns {string} 'api40' or '', for example\n */\n apiNamespace() {\n if (this.apiVersion === this.defaultApi) return '';\n return `.api${this.apiRef}`;\n }\n\n methodsPrologue(_indent: string) {\n return `\n// ${this.warnEditing()}\npackage com.looker.sdk${this.apiNamespace()}\n\nimport com.looker.rtl.*\nimport java.util.*\n\nclass ${this.sdkClassName()}(authSession: AuthSession) : APIMethods(authSession) {\n\n val stream by lazy { ${this.sdkClassName()}Stream(this.authSession) }\n`;\n }\n\n streamsPrologue(_indent: string): string {\n return `\n// ${this.warnEditing()}\npackage com.looker.sdk${this.apiNamespace()}\n\nimport com.looker.rtl.*\nimport java.util.*\n\nclass ${this.sdkClassName()}Stream(authSession: AuthSession) : APIMethods(authSession) {\n\n`;\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}';\n }\n\n modelsPrologue(_indent: string) {\n return `\n// ${this.warnEditing()}\n\npackage com.looker.sdk${this.apiNamespace()}\n\nimport com.looker.rtl.*\nimport java.io.Serializable\nimport java.util.*\n`;\n }\n\n modelsEpilogue(_indent: string) {\n return '';\n }\n\n // TODO create methodHeader(IMethod) and typeHeader(IType) https://kotlinlang.org/docs/reference/kotlin-doc.html\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return '';\n if (commentStr === ' ') {\n return `${indent}/**\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`;\n }\n return `${indent}/**\\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 ? '? = null' : '';\n const type = this.typeMap(property.type);\n // handle property names with special characters\n const attr = property.hasSpecialNeeds\n ? `${indent}@SerializedName(\"${property.jsonName}\")\\n`\n : '';\n const result = `${attr}${indent}var ${property.name}: ${type.name}${optional}`;\n return result;\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n return `@param {${mapped.name}} ${param.name} ${describeParam(param)}`;\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const mapped = this.paramMappedType(param, method);\n let pOpt = '';\n if (!param.required) {\n pOpt = '?';\n }\n return (\n `${indent}${param.name}: ${mapped.name}${pOpt}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n );\n }\n\n /**\n * Maps input values into type\n * @param indent starting indent level\n * @param type that receives assignments\n * @param inputs to assign to type\n */\n assignType(indent: string, type: IType, inputs: ArgValues): string {\n const result = super.assignType(indent, type, inputs);\n if (result || type.className !== 'DelimArrayType') return result;\n const mt = this.typeMap(type);\n const args: string[] = [];\n // child properties are indented one level\n const bump = this.bumper(indent);\n const v = this.arrayValue(bump, type, inputs);\n args.push(v);\n const open = this.useModelClassForTypes\n ? `${mt.name}${this.typeOpen}`\n : this.typeOpen;\n const nl = `,\\n${bump}`;\n // need a bump after `open` to account for the first argument\n // not getting the proper bump from args.join()\n return `${open}\\n${bump}${args.join(nl)}\\n${indent}${this.typeClose}`;\n }\n\n // overridden from CodeGen\n assignParams(method: IMethod, inputs: ArgValues): string {\n const args: string[] = [];\n let hasComplexArg = false;\n if (Object.keys(inputs).length > 0) {\n const params = method.allParams;\n params.forEach(p => {\n const v = this.argValue(this.indentStr, p, inputs);\n if (v !== '') {\n // const arg = this.useNamedArguments ? `${p.name}${this.argSetSep}${v}` : v\n const arg = !p.required ? `${p.name}${this.argSetSep}${v}` : v;\n args.push(arg);\n if (!p.type.intrinsic) {\n hasComplexArg = true;\n }\n }\n });\n }\n let open = '';\n if (args.length > 1 || hasComplexArg) {\n open = `\\n${this.indentStr}`;\n }\n return args.length > 0 ? `${open}${args.join(this.argDelimiter)}` : '';\n }\n\n // overridden from CodeGen\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n const typeName = method.returnType?.type\n ? this.typeMap(method.returnType.type).name\n : 'String';\n const resp = `val response = await sdk.ok<${typeName}>(sdk.${method.name}(`;\n const args = this.assignParams(method, inputs);\n return `${resp}${args}))`;\n }\n\n methodHeaderComment(method: IMethod, streamer = false) {\n const lines: string[] = [];\n\n lines.push(method.description?.trim());\n\n if (method.allParams.length) {\n lines.push('');\n method.allParams.forEach(p =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n );\n }\n\n const resultType = streamer ? 'ByteArray' : this.typeMap(method.type).name;\n lines.push('');\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`);\n\n if (method.responseIsBoth()) {\n lines.push('');\n lines.push('**Note**: Binary content may be returned by this method.');\n } else if (method.responseIsBinary()) {\n lines.push('');\n lines.push('**Note**: Binary content is returned by this method.');\n }\n\n return lines.join('\\n');\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const bump = indent + this.indentStr;\n\n const params: string[] = [];\n const args = method.allParams; // get the params in signature order\n if (args && args.length > 0)\n args.forEach(p => params.push(this.declareParameter(bump, method, p)));\n\n return `\n${this.commentHeader(\n indent,\n this.methodHeaderComment(method, streamer)\n).trimEnd()}\n${this.deprecated(indent, method)}${indent}${this.jvmOverloads(method)}fun ${\n method.name\n }(\n${params.join(this.paramDelimiter)}\n${indent}) : SDKResponse {\n`;\n }\n\n deprecated(indent: string, method: IMethod) {\n return method.deprecated\n ? `${indent}@Deprecated(message = \"Deprecated method\")\\n`\n : '';\n }\n\n jvmOverloads(method: IMethod) {\n return method.optionalParams.length > 0 ? '@JvmOverloads ' : '';\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false);\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = '';\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n encodings += `${indent}val path_${param.name} = encodeParam(${param.name})\\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(bump, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\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 declareEnumValue(indent: string, value: EnumValueType) {\n return `${indent}${mayQuote(value)}`;\n }\n\n describeProperty(property: IProperty) {\n return `@property ${property.name} ${super.describeProperty(property)}`;\n }\n\n typeSignature(indent: string, type: IType) {\n if (type instanceof EnumType) {\n return `\n${this.commentHeader(indent, type.description).trim()}\n${indent}enum class ${type.name} : Serializable {\n`.trim();\n } else {\n const props = Object.values(type.properties).map(prop =>\n this.describeProperty(prop)\n );\n\n const header = `\n${type.description}\n\n${props.join('\\n')}\n`.trim();\n\n return `\n${this.commentHeader(indent, header).trim()}\n${indent}data class ${type.name} (\n`.trim();\n }\n }\n\n declareType(indent: string, type: IType) {\n const bump = this.bumper(indent);\n if (type instanceof EnumType) {\n const num = type as EnumType;\n const props = num.values.map(value => this.declareEnumValue(bump, value));\n\n return `\n${this.typeSignature(indent, type)}\n${props.join(this.enumDelimiter)}\n}\n`.trim();\n } else {\n const props = Object.values(type.properties).map(prop =>\n this.declareProperty(bump, prop)\n );\n\n return `\n${this.typeSignature(indent, type)}\n${props.join(this.propDelimiter)}\n) : Serializable\n`.trim();\n }\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n return '';\n // const results: string[] = method.errorResponses\n // .map(r => `I${r.type.name}`)\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, '${path_' + prefix) + '\"';\n return `\"${path}\"`;\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return 'mapOf()';\n const hash: string[] = [];\n for (const arg of args) {\n if (prefix) {\n hash.push(`\"${arg}\" to ${prefix}${arg}`);\n } else {\n hash.push(`\"${arg}\" to ${arg}`);\n }\n }\n const bump = this.bumper(indent);\n const argBump = this.bumper(bump);\n const argWrapper = `,\\n ${argBump}`;\n return `\\n${bump}mapOf(${hash.join(argWrapper)})`;\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n return args && args.length !== 0\n ? `\\n${indent}${prefix}${args.join(this.argDelimiter + prefix)}`\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 let result = this.argFill(\n '',\n method.bodyArg ? `${request}${method.bodyArg}` : 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 type = this.typeMap(method.type);\n const args = this.httpArgs(indent, method);\n // TODO don't currently need these for Kotlin\n // const errors = this.errorResponses(indent, method)\n return `${indent}return ${this.it(method.httpMethod.toLowerCase())}<${\n type.name\n }>(${this.httpPath(method.endpoint, request)}${args ? ', ' + args : ''})`;\n }\n\n streamCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : '';\n // const type = 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 `${bump}return ${this.it(\n method.httpMethod.toLowerCase()\n )}<ByteArray>(${this.httpPath(method.endpoint, request)}${\n args ? ', ' + args : ''\n })`;\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text);\n }\n\n // TODO avoid duplicate code\n typeNames(countError = true) {\n const names: string[] = [];\n if (!this.api) return names;\n if (countError) {\n this.api.types.Error.refCount++;\n } else {\n this.api.types.Error.refCount = 0;\n }\n const types = this.api.types;\n Object.values(types)\n .filter(type => type.refCount > 0 && !type.intrinsic)\n .forEach(type => names.push(`I${type.name}`));\n // TODO import default constants if necessary\n // Object.values(types)\n // .filter(type => type instanceof RequestType)\n // .forEach(type => names.push(`${strDefault}${type.name.substring(strRequest.length)}`))\n return names;\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type);\n const mt = this.nullStr;\n const asString: CodeAssignment = (_, v) => `\"${v}\"`;\n const ktTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'Any' },\n boolean: { default: mt, name: 'Boolean' },\n byte: { default: mt, name: 'binary' },\n date: { default: mt, name: 'Date' },\n datetime: { default: mt, name: 'Date' },\n double: { default: mt, name: 'Double' },\n float: { default: mt, name: 'Float' },\n int32: { default: mt, name: 'Int' },\n int64: { default: mt, name: 'Long' },\n integer: { default: mt, name: 'Int' },\n number: { default: mt, name: 'Double' },\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: 'UriString', asVal: asString },\n url: { default: mt, name: 'UrlString', asVal: asString },\n void: { default: mt, name: 'Void', asVal: (_i, _v: any) => 'String' },\n };\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType);\n switch (type.className) {\n case 'ArrayType':\n return { default: this.nullStr, name: `Array<${map.name}>` };\n case 'HashType': {\n const mapName = type.elementType.name === 'string' ? 'Any' : map.name; // TODO fix bad API spec, like MergeQuery vis_config\n // TODO figure out this bizarre string template error either in IntelliJ or TypeScript\n // return {name: `Map<String,${map.name}>`, default: '{}'}\n return { default: this.nullStr, name: 'Map<String' + `,${mapName}>` };\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `DelimArray<${map.name}>`,\n asVal: (_, v) => `DelimArray<${map.name}>(arrayOf(${v}))`,\n };\n case 'EnumType':\n return {\n default: '',\n name: type.name,\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 return (\n ktTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n );\n } else {\n throw new Error('Cannot output a nameless type.');\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kotlin.gen.js","names":["EnumType","describeParam","mayQuote","CodeGen","commentBlock","KotlinGen","constructor","arguments","_defineProperty","supportsMultiApi","isDefaultApi","apiVersion","defaultApi","sdkClassName","concat","apiRef","apiNamespace","methodsPrologue","_indent","warnEditing","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","commentHeader","indent","text","commentStr","length","undefined","noComment","beginRegion","description","endRegion","declareProperty","property","optional","required","type","typeMap","attr","hasSpecialNeeds","jsonName","result","name","paramComment","param","mapped","declareParameter","method","paramMappedType","pOpt","default","assignType","inputs","className","mt","args","bump","bumper","v","arrayValue","push","open","useModelClassForTypes","typeOpen","nl","join","typeClose","assignParams","hasComplexArg","Object","keys","params","allParams","forEach","p","argValue","indentStr","arg","argSetSep","intrinsic","argDelimiter","makeTheCall","_method$returnType","typeName","returnType","resp","methodHeaderComment","_method$description","streamer","lines","trim","resultType","httpMethod","endpoint","responseIsBoth","responseIsBinary","methodHeaderDeclaration","trimEnd","deprecated","jvmOverloads","paramDelimiter","optionalParams","methodSignature","encodePathParams","encodings","pathParams","declareMethod","httpCall","streamerSignature","declareStreamer","streamCall","declareEnumValue","value","describeProperty","typeSignature","props","values","properties","map","prop","header","declareType","num","enumDelimiter","propDelimiter","errorResponses","_method","httpPath","path","prefix","indexOf","replace","argGroup","hash","argBump","argWrapper","argList","nullStr","argFill","current","httpArgs","request","useRequest","bodyArg","queryArgs","it","toLowerCase","summary","typeNames","countError","names","api","types","Error","refCount","filter","asString","_","ktTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","asVal","string","uri","url","void","_i","_v","elementType","mapName","JSON","stringify"],"sources":["../../src/kotlin.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 { ArgValues } from '@looker/sdk-rtl';\nimport type {\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport { EnumType, describeParam, mayQuote } from './sdkModels';\nimport type { CodeAssignment, IMappedType } from './codeGen';\nimport { CodeGen, commentBlock } from './codeGen';\n\nexport class KotlinGen extends CodeGen {\n codePath = './kotlin/src/main/com/';\n packagePath = 'looker';\n itself = 'this';\n fileExtension = '.kt';\n commentStr = '// ';\n nullStr = 'null';\n transport = 'transport';\n\n argDelimiter = ', ';\n // makeTheCall definitions\n argSetSep = ' = ';\n hashSetSep = ' to ';\n arrayOpen = 'arrayOf(';\n arrayClose = ')';\n hashOpen = 'mapOf(';\n hashClose = ')';\n hashKeyQuote = '\"';\n typeOpen = '(';\n typeClose = ')';\n useModelClassForTypes = true;\n\n paramDelimiter = ',\\n';\n propDelimiter = ',\\n';\n codeQuote = '\"';\n enumDelimiter = ',\\n';\n\n indentStr = ' ';\n endTypeStr = '\\n) : Serializable';\n needsRequestTypes = false;\n willItStream = true;\n\n private readonly defaultApi = '4.0';\n\n supportsMultiApi(): boolean {\n return false;\n }\n\n isDefaultApi() {\n return this.apiVersion === this.defaultApi;\n }\n\n // TODO create `defaultPackageName` property in CodeGen\n sdkClassName() {\n return this.isDefaultApi() ? 'LookerSDK' : `Looker${this.apiRef}SDK`;\n }\n\n /**\n * Return either api versioned namespace text or empty string if current API is the default\n * @returns {string} 'api40' or '', for example\n */\n apiNamespace() {\n if (this.apiVersion === this.defaultApi) return '';\n return `.api${this.apiRef}`;\n }\n\n methodsPrologue(_indent: string) {\n return `\n// ${this.warnEditing()}\npackage com.looker.sdk${this.apiNamespace()}\n\nimport com.looker.rtl.*\nimport java.util.*\n\nclass ${this.sdkClassName()}(authSession: AuthSession) : APIMethods(authSession) {\n\n val stream by lazy { ${this.sdkClassName()}Stream(this.authSession) }\n`;\n }\n\n streamsPrologue(_indent: string): string {\n return `\n// ${this.warnEditing()}\npackage com.looker.sdk${this.apiNamespace()}\n\nimport com.looker.rtl.*\nimport java.util.*\n\nclass ${this.sdkClassName()}Stream(authSession: AuthSession) : APIMethods(authSession) {\n\n`;\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}';\n }\n\n modelsPrologue(_indent: string) {\n return `\n// ${this.warnEditing()}\n\npackage com.looker.sdk${this.apiNamespace()}\n\nimport com.looker.rtl.*\nimport java.io.Serializable\nimport java.util.*\n`;\n }\n\n modelsEpilogue(_indent: string) {\n return '';\n }\n\n // TODO create methodHeader(IMethod) and typeHeader(IType) https://kotlinlang.org/docs/reference/kotlin-doc.html\n commentHeader(indent: string, text: string | undefined, commentStr = ' * ') {\n if (this.noComment || !text) return '';\n if (commentStr === ' ') {\n return `${indent}/**\\n\\n${commentBlock(\n text,\n indent,\n commentStr\n )}\\n${indent} */\\n`;\n }\n return `${indent}/**\\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 ? '? = null' : '';\n const type = this.typeMap(property.type);\n // handle property names with special characters\n const attr = property.hasSpecialNeeds\n ? `${indent}@SerializedName(\"${property.jsonName}\")\\n`\n : '';\n const result = `${attr}${indent}var ${property.name}: ${type.name}${optional}`;\n return result;\n }\n\n paramComment(param: IParameter, mapped: IMappedType) {\n return `@param {${mapped.name}} ${param.name} ${describeParam(param)}`;\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const mapped = this.paramMappedType(param, method);\n let pOpt = '';\n if (!param.required) {\n pOpt = '?';\n }\n return (\n `${indent}${param.name}: ${mapped.name}${pOpt}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n );\n }\n\n /**\n * Maps input values into type\n * @param indent starting indent level\n * @param type that receives assignments\n * @param inputs to assign to type\n */\n assignType(indent: string, type: IType, inputs: ArgValues): string {\n const result = super.assignType(indent, type, inputs);\n if (result || type.className !== 'DelimArrayType') return result;\n const mt = this.typeMap(type);\n const args: string[] = [];\n // child properties are indented one level\n const bump = this.bumper(indent);\n const v = this.arrayValue(bump, type, inputs);\n args.push(v);\n const open = this.useModelClassForTypes\n ? `${mt.name}${this.typeOpen}`\n : this.typeOpen;\n const nl = `,\\n${bump}`;\n // need a bump after `open` to account for the first argument\n // not getting the proper bump from args.join()\n return `${open}\\n${bump}${args.join(nl)}\\n${indent}${this.typeClose}`;\n }\n\n // overridden from CodeGen\n assignParams(method: IMethod, inputs: ArgValues): string {\n const args: string[] = [];\n let hasComplexArg = false;\n if (Object.keys(inputs).length > 0) {\n const params = method.allParams;\n params.forEach(p => {\n const v = this.argValue(this.indentStr, p, inputs);\n if (v !== '') {\n // const arg = this.useNamedArguments ? `${p.name}${this.argSetSep}${v}` : v\n const arg = !p.required ? `${p.name}${this.argSetSep}${v}` : v;\n args.push(arg);\n if (!p.type.intrinsic) {\n hasComplexArg = true;\n }\n }\n });\n }\n let open = '';\n if (args.length > 1 || hasComplexArg) {\n open = `\\n${this.indentStr}`;\n }\n return args.length > 0 ? `${open}${args.join(this.argDelimiter)}` : '';\n }\n\n // overridden from CodeGen\n makeTheCall(method: IMethod, inputs: ArgValues): string {\n const typeName = method.returnType?.type\n ? this.typeMap(method.returnType.type).name\n : 'String';\n const resp = `val response = await sdk.ok<${typeName}>(sdk.${method.name}(`;\n const args = this.assignParams(method, inputs);\n return `${resp}${args}))`;\n }\n\n methodHeaderComment(method: IMethod, streamer = false) {\n const lines: string[] = [];\n\n lines.push(method.description?.trim());\n\n if (method.allParams.length) {\n lines.push('');\n method.allParams.forEach(p =>\n lines.push(this.paramComment(p, this.paramMappedType(p, method)))\n );\n }\n\n const resultType = streamer ? 'ByteArray' : this.typeMap(method.type).name;\n lines.push('');\n lines.push(`${method.httpMethod} ${method.endpoint} -> ${resultType}`);\n\n if (method.responseIsBoth()) {\n lines.push('');\n lines.push('**Note**: Binary content may be returned by this method.');\n } else if (method.responseIsBinary()) {\n lines.push('');\n lines.push('**Note**: Binary content is returned by this method.');\n }\n\n return lines.join('\\n');\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const bump = indent + this.indentStr;\n\n const params: string[] = [];\n const args = method.allParams; // get the params in signature order\n if (args && args.length > 0)\n args.forEach(p => params.push(this.declareParameter(bump, method, p)));\n\n return `\n${this.commentHeader(\n indent,\n this.methodHeaderComment(method, streamer)\n).trimEnd()}\n${this.deprecated(indent, method)}${indent}${this.jvmOverloads(method)}fun ${\n method.name\n }(\n${params.join(this.paramDelimiter)}\n${indent}) : SDKResponse {\n`;\n }\n\n deprecated(indent: string, method: IMethod) {\n return method.deprecated\n ? `${indent}@Deprecated(message = \"Deprecated method\")\\n`\n : '';\n }\n\n jvmOverloads(method: IMethod) {\n return method.optionalParams.length > 0 ? '@JvmOverloads ' : '';\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false);\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = '';\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n encodings += `${indent}val path_${param.name} = encodeParam(${param.name})\\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(bump, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\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 declareEnumValue(indent: string, value: EnumValueType) {\n return `${indent}${mayQuote(value)}`;\n }\n\n describeProperty(property: IProperty) {\n return `@property ${property.name} ${super.describeProperty(property)}`;\n }\n\n typeSignature(indent: string, type: IType) {\n if (type instanceof EnumType) {\n return `\n${this.commentHeader(indent, type.description).trim()}\n${indent}enum class ${type.name} : Serializable {\n`.trim();\n } else {\n const props = Object.values(type.properties).map(prop =>\n this.describeProperty(prop)\n );\n\n const header = `\n${type.description}\n\n${props.join('\\n')}\n`.trim();\n\n return `\n${this.commentHeader(indent, header).trim()}\n${indent}data class ${type.name} (\n`.trim();\n }\n }\n\n declareType(indent: string, type: IType) {\n const bump = this.bumper(indent);\n if (type instanceof EnumType) {\n const num = type as EnumType;\n const props = num.values.map(value => this.declareEnumValue(bump, value));\n\n return `\n${this.typeSignature(indent, type)}\n${props.join(this.enumDelimiter)}\n}\n`.trim();\n } else {\n const props = Object.values(type.properties).map(prop =>\n this.declareProperty(bump, prop)\n );\n\n return `\n${this.typeSignature(indent, type)}\n${props.join(this.propDelimiter)}\n) : Serializable\n`.trim();\n }\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n return '';\n // const results: string[] = method.errorResponses\n // .map(r => `I${r.type.name}`)\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, '${path_' + prefix) + '\"';\n return `\"${path}\"`;\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return 'mapOf()';\n const hash: string[] = [];\n for (const arg of args) {\n if (prefix) {\n hash.push(`\"${arg}\" to ${prefix}${arg}`);\n } else {\n hash.push(`\"${arg}\" to ${arg}`);\n }\n }\n const bump = this.bumper(indent);\n const argBump = this.bumper(bump);\n const argWrapper = `,\\n ${argBump}`;\n return `\\n${bump}mapOf(${hash.join(argWrapper)})`;\n }\n\n argList(indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n return args && args.length !== 0\n ? `\\n${indent}${prefix}${args.join(this.argDelimiter + prefix)}`\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 let result = this.argFill(\n '',\n method.bodyArg ? `${request}${method.bodyArg}` : 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 type = this.typeMap(method.type);\n const args = this.httpArgs(indent, method);\n // TODO don't currently need these for Kotlin\n // const errors = this.errorResponses(indent, method)\n return `${indent}return ${this.it(method.httpMethod.toLowerCase())}<${\n type.name\n }>(${this.httpPath(method.endpoint, request)}${args ? ', ' + args : ''})`;\n }\n\n streamCall(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : '';\n // const type = 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 `${bump}return ${this.it(\n method.httpMethod.toLowerCase()\n )}<ByteArray>(${this.httpPath(method.endpoint, request)}${\n args ? ', ' + args : ''\n })`;\n }\n\n summary(indent: string, text: string | undefined) {\n return this.commentHeader(indent, text);\n }\n\n // TODO avoid duplicate code\n typeNames(countError = true) {\n const names: string[] = [];\n if (!this.api) return names;\n if (countError) {\n this.api.types.Error.refCount++;\n } else {\n this.api.types.Error.refCount = 0;\n }\n const types = this.api.types;\n Object.values(types)\n .filter(type => type.refCount > 0 && !type.intrinsic)\n .forEach(type => names.push(`I${type.name}`));\n // TODO import default constants if necessary\n // Object.values(types)\n // .filter(type => type instanceof RequestType)\n // .forEach(type => names.push(`${strDefault}${type.name.substring(strRequest.length)}`))\n return names;\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type);\n const mt = this.nullStr;\n const asString: CodeAssignment = (_, v) => `\"${v}\"`;\n const ktTypes: Record<string, IMappedType> = {\n any: { default: mt, name: 'Any' },\n boolean: { default: mt, name: 'Boolean' },\n byte: { default: mt, name: 'binary' },\n date: { default: mt, name: 'Date' },\n datetime: { default: mt, name: 'Date' },\n double: { default: mt, name: 'Double' },\n float: { default: mt, name: 'Float' },\n int32: { default: mt, name: 'Int' },\n int64: { default: mt, name: 'Long' },\n integer: { default: mt, name: 'Int' },\n number: { default: mt, name: 'Double' },\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: 'UriString', asVal: asString },\n url: { default: mt, name: 'UrlString', asVal: asString },\n void: { default: mt, name: 'Void', asVal: (_i, _v: any) => 'String' },\n };\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType);\n switch (type.className) {\n case 'ArrayType':\n return { default: this.nullStr, name: `Array<${map.name}>` };\n case 'HashType': {\n const mapName = type.elementType.name === 'string' ? 'Any' : map.name; // TODO fix bad API spec, like MergeQuery vis_config\n // TODO figure out this bizarre string template error either in IntelliJ or TypeScript\n // return {name: `Map<String,${map.name}>`, default: '{}'}\n return { default: this.nullStr, name: 'Map<String' + `,${mapName}>` };\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `DelimArray<${map.name}>`,\n asVal: (_, v) => `DelimArray<${map.name}>(arrayOf(${v}))`,\n };\n case 'EnumType':\n return {\n default: '',\n name: type.name,\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 return (\n ktTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n );\n } else {\n throw new Error('Cannot output a nameless type.');\n }\n }\n}\n"],"mappings":"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"}
|