@looker/sdk-codegen 21.8.2 → 21.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/CHANGELOG.md +153 -167
  2. package/README.md +0 -1
  3. package/lib/codeGen.d.ts +15 -1
  4. package/lib/codeGen.js +23 -6
  5. package/lib/codeGen.js.map +1 -1
  6. package/lib/codeGenerators.d.ts +3 -3
  7. package/lib/codeGenerators.js +2 -4
  8. package/lib/codeGenerators.js.map +1 -1
  9. package/lib/csharp.gen.d.ts +1 -1
  10. package/lib/csharp.gen.js +2 -2
  11. package/lib/csharp.gen.js.map +1 -1
  12. package/lib/declarationInfo.d.ts +3 -3
  13. package/lib/declarationInfo.js +1 -2
  14. package/lib/declarationInfo.js.map +1 -1
  15. package/lib/esm/codeGen.js +33 -23
  16. package/lib/esm/codeGen.js.map +1 -1
  17. package/lib/esm/codeGenerators.js +17 -28
  18. package/lib/esm/codeGenerators.js.map +1 -1
  19. package/lib/esm/csharp.gen.js +11 -18
  20. package/lib/esm/csharp.gen.js.map +1 -1
  21. package/lib/esm/declarationInfo.js +3 -10
  22. package/lib/esm/declarationInfo.js.map +1 -1
  23. package/lib/esm/exampleInfo.js +9 -24
  24. package/lib/esm/exampleInfo.js.map +1 -1
  25. package/lib/esm/go.gen.js +11 -18
  26. package/lib/esm/go.gen.js.map +1 -1
  27. package/lib/esm/index.js +13 -148
  28. package/lib/esm/index.js.map +1 -1
  29. package/lib/esm/kotlin.gen.js +11 -18
  30. package/lib/esm/kotlin.gen.js.map +1 -1
  31. package/lib/esm/pseudo.gen.js +6 -13
  32. package/lib/esm/pseudo.gen.js.map +1 -1
  33. package/lib/esm/python.gen.js +13 -20
  34. package/lib/esm/python.gen.js.map +1 -1
  35. package/lib/esm/sdkModels.js +431 -116
  36. package/lib/esm/sdkModels.js.map +1 -1
  37. package/lib/esm/specConverter.js +31 -59
  38. package/lib/esm/specConverter.js.map +1 -1
  39. package/lib/esm/specDiff.js +19 -36
  40. package/lib/esm/specDiff.js.map +1 -1
  41. package/lib/esm/swift.gen.js +17 -24
  42. package/lib/esm/swift.gen.js.map +1 -1
  43. package/lib/esm/typescript.gen.js +168 -31
  44. package/lib/esm/typescript.gen.js.map +1 -1
  45. package/lib/exampleInfo.d.ts +8 -20
  46. package/lib/exampleInfo.js +1 -2
  47. package/lib/exampleInfo.js.map +1 -1
  48. package/lib/go.gen.js +3 -3
  49. package/lib/go.gen.js.map +1 -1
  50. package/lib/index.js.map +1 -1
  51. package/lib/kotlin.gen.d.ts +1 -1
  52. package/lib/kotlin.gen.js +2 -2
  53. package/lib/kotlin.gen.js.map +1 -1
  54. package/lib/pseudo.gen.js +2 -2
  55. package/lib/pseudo.gen.js.map +1 -1
  56. package/lib/python.gen.js +4 -4
  57. package/lib/python.gen.js.map +1 -1
  58. package/lib/sdkModels.d.ts +33 -13
  59. package/lib/sdkModels.js +397 -46
  60. package/lib/sdkModels.js.map +1 -1
  61. package/lib/specConverter.d.ts +9 -12
  62. package/lib/specConverter.js +14 -22
  63. package/lib/specConverter.js.map +1 -1
  64. package/lib/specDiff.d.ts +4 -4
  65. package/lib/specDiff.js +6 -8
  66. package/lib/specDiff.js.map +1 -1
  67. package/lib/swift.gen.js +2 -2
  68. package/lib/swift.gen.js.map +1 -1
  69. package/lib/typescript.gen.d.ts +13 -0
  70. package/lib/typescript.gen.js +157 -13
  71. package/lib/typescript.gen.js.map +1 -1
  72. package/package.json +8 -7
  73. package/lib/esm/testUtils/index.js +0 -17
  74. package/lib/esm/testUtils/index.js.map +0 -1
  75. package/lib/esm/testUtils/testUtils.js +0 -66
  76. package/lib/esm/testUtils/testUtils.js.map +0 -1
  77. package/lib/testUtils/index.js +0 -17
  78. package/lib/testUtils/index.js.map +0 -1
  79. package/lib/testUtils/testUtils.js +0 -66
  80. package/lib/testUtils/testUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"csharp.gen.js","names":["_codeGen","require","_sdkModels","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","reservedWords","Set","CSharpGen","CodeGen","constructor","arguments","commentHeader","indent","text","noComment","concat","commentBlock","modelsPrologue","_indent","warnEditing","apiRef","modelsEpilogue","methodsPrologue","packageName","apiVersion","methodsEpilogue","reserve","name","has","declareParameter","method","param","type","location","strBody","writeableType","mapped","typeMap","pOpt","required","defaulting","optional","declareProperty","property","getset","default","attr","EnumType","hasSpecialNeeds","jsonName","summary","describeProperty","methodHeader","_method$description","head","description","trim","headComment","httpMethod","endpoint","responseIsBoth","responseIsBinary","returnComment","params","forEach","paramComment","dep","deprecated","genericBits","success","generic","constraint","returnType","ret","methodHeaderDeclaration","streamer","length","bump","indentStr","args","allParams","p","push","fragment","join","paramDelimiter","callback","bits","header","methodSignature","httpPath","path","prefix","indexOf","replace","declareMethod","bumper","encodePathParams","httpCall","errorResponses","_method","argGroup","values","map","argDelimiter","nullStr","httpArgs","result","argFill","bodyArg","queryArgs","dollah","pathArgs","firstCase","encodings","pathParams","doEncode","nl","describeParam","mediaType","desc","okResponses","r","lines","declareEnumValue","toString","typeSignature","isEnum","kind","parent","mt","quotes","csTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","elementType","className","Error","JSON","stringify","exports"],"sources":["../src/csharp.gen.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { IMappedType } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\nimport type {\n IMethod,\n IParameter,\n IType,\n IProperty,\n Arg,\n EnumValueType,\n} from './sdkModels'\nimport { strBody, firstCase, EnumType, describeParam } from './sdkModels'\n\n// https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\nconst reservedWords = new Set<string>([\n 'abstract',\n 'as',\n 'base',\n 'bool',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'checked',\n 'class',\n 'const',\n 'continue',\n 'decimal',\n 'default',\n 'delegate',\n 'do ',\n 'double',\n 'else',\n 'enum',\n 'event',\n 'explicit',\n 'extern',\n 'false',\n 'finally',\n 'fixed',\n 'float',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'int',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'long',\n 'namespace',\n 'new',\n 'null',\n 'object',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'ref',\n 'return',\n 'sbyte',\n 'sealed',\n 'short',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'string',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'true',\n 'try',\n 'typeof',\n 'uint',\n 'ulong',\n 'unchecked',\n 'unsafe',\n 'ushort',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while',\n])\n\n/**\n * C# code generator\n */\nexport class CSharpGen extends CodeGen {\n codePath = './csharp'\n packagePath = ''\n itself = 'this'\n fileExtension = '.cs'\n commentStr = '// '\n nullStr = 'null'\n transport = 'Transport'\n\n argDelimiter = ','\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n\n indentStr = ' '\n endTypeStr = '\\n}'\n needsRequestTypes = false\n willItStream = false\n codeQuote = '\"'\n\n commentHeader(indent: string, text: string | undefined) {\n if (this.noComment) return ''\n return text ? `${commentBlock(text, indent, '/// ')}\\n` : ''\n }\n\n modelsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Runtime.Serialization;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Looker.RTL;\nusing Url = System.String;\nusing Password = System.String;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n`\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n methodsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Looker.RTL;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n public class ${this.packageName}: ApiMethods\n {\n public ${this.packageName}(IAuthSession authSession): base(authSession, \"${\n this.apiVersion\n }\") { }\n`\n }\n\n methodsEpilogue(indent: string) {\n return `${indent}}\n}\n`\n }\n\n reserve(name: string) {\n if (reservedWords.has(name)) {\n return '@' + name\n }\n return name\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n const arg = this.reserve(param.name)\n const pOpt = param.required ? '' : '?'\n const defaulting = param.required\n ? ''\n : mapped.optional\n ? ` = ${mapped.optional}`\n : ''\n return `${indent}${mapped.name}${pOpt} ${arg}${defaulting}`\n }\n\n declareProperty(indent: string, property: IProperty): string {\n const type = this.typeMap(property.type)\n // TODO notation for readonly support\n // let getset = property.readOnly ? '{ get; }' : '{ get; set; }'\n let getset = '{ get; set; }'\n if (property.required) {\n if (type.default) {\n getset += ` = ${type.default};`\n }\n } else {\n if (type.optional) {\n getset += ` = ${type.optional};`\n }\n }\n\n const arg = this.reserve(property.name)\n const pOpt = property.required ? '' : '?'\n let attr =\n property.type instanceof EnumType\n ? `${indent}[JsonConverter(typeof(StringEnumConverter))]\\n`\n : ''\n if (property.hasSpecialNeeds) {\n attr += `${indent}[JsonProperty(\"${property.jsonName}\")]\\n`\n }\n return (\n this.summary(indent, this.describeProperty(property)) +\n attr +\n `${indent}public ${type.name}${pOpt} ${arg} ${getset}`\n )\n }\n\n methodHeader(indent: string, method: IMethod) {\n const type = this.typeMap(method.type)\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.`\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.`\n }\n\n headComment += this.returnComment(method)\n method.params.forEach((param) => (headComment += this.paramComment(param)))\n const dep = method.deprecated ? `${indent}[Obsolete(\"Deprecated\")]\\n` : ''\n return this.commentHeader(indent, headComment) + dep\n }\n\n genericBits(method: IMethod) {\n let success = 'TSuccess'\n let generic = '<TSuccess>'\n let constraint = ' where TSuccess : class'\n if (method.returnType) {\n const ret = method.returnType\n const type = this.typeMap(ret.type)\n success = type.name === 'void' ? 'string' : type.name\n generic = ''\n constraint = ''\n }\n return { success, generic, constraint }\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type)\n const bump = indent + this.indentStr\n\n const params: string[] = []\n const args = method.allParams // get the params in signature order\n if (args && args.length > 0)\n args.forEach((p) => params.push(this.declareParameter(bump, method, p)))\n const fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n const callback = `callback: (readable: Readable) => Promise<${type.name}>,`\n const bits = this.genericBits(method)\n const header =\n this.methodHeader(indent, method) +\n `${indent}public async Task<SdkResponse<${bits.success}, Exception>> ${method.name}${bits.generic}(` +\n (streamer ? `\\n${bump}${callback}` : '')\n\n return (\n header +\n fragment +\n `${fragment ? ',' : ''}\\n${bump}ITransportSettings? options = null)${\n bits.constraint\n }\\n{${indent}\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod): string {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n return `$\"${path.replace(/{/gi, '{' + prefix)}\"`\n }\n return `'${path}'`\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent)\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n )\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n return 'Exception'\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || ''\n const values = args.map((arg) => `{ \"${arg}\", ${this.reserve(arg)} }`)\n const bump = this.bumper(this.indentStr) + this.indentStr\n return args && args.length !== 0\n ? `new Values {\\n${bump}${values.join(\n `${this.argDelimiter.trim()}\\n${bump}${prefix}`\n )}}`\n : this.nullStr\n }\n\n httpArgs(indent: string, method: IMethod) {\n let result = this.argFill('', 'options')\n // result = this.argFill(result, this.argGroup(indent, method.cookieArgs))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs))\n result = this.argFill(\n result,\n method.bodyArg ? method.bodyArg : this.nullStr\n )\n result = this.argFill(result, this.argGroup(indent, method.queryArgs))\n return result\n }\n\n httpCall(indent: string, method: IMethod) {\n const bump = indent + this.indentStr\n const args = this.httpArgs(bump, method)\n const dollah = method.pathArgs.length ? '$' : ''\n // const errors = `(${this.errorResponses(indent, method)})`\n const bits = this.genericBits(method)\n const fragment = `AuthRequest<${\n bits.success\n }, Exception>(HttpMethod.${firstCase(method.httpMethod)}, ${dollah}\"${\n method.endpoint\n }\"${args ? ', ' + args : ''})`\n return `${indent}return await ${fragment};`\n }\n\n encodePathParams(indent: string, method: IMethod): string {\n const bump = indent + this.indentStr\n let encodings = ''\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n encodings += `${bump}${param.name} = SdkUtils.EncodeParam(${param.name});\\n`\n }\n }\n }\n return encodings\n }\n\n summary(indent: string, summary: string) {\n if (this.noComment || !summary) return ''\n const nl = summary.indexOf('\\n') >= 0 ? '\\n' : ''\n return this.commentHeader(indent, `<summary>${nl}${summary}${nl}</summary>`)\n }\n\n paramComment(param: IParameter) {\n return param.description\n ? `\\n<param name=\"${param.name}\">${describeParam(param)}</param>`\n : ''\n }\n\n returnComment(method: IMethod) {\n const type = method.returnType\n if (type) {\n const mapped = this.typeMap(type.type)\n return `\\n\\n<returns><c>${mapped.name}</c> ${type.description} (${type.mediaType})</returns>\\n`\n }\n const desc: string[] = []\n method.okResponses.forEach((r) => {\n const mapped = this.typeMap(r.type)\n desc.push(`<c>${mapped.name}</c> ${r.description} (${r.mediaType})`)\n })\n const lines = desc.join('\\n')\n return `\\n\\n<returns>\\n${lines}\\n</returns>\\n`\n }\n\n declareEnumValue(indent: string, value: EnumValueType) {\n return `${indent}[EnumMember(Value = \"${value}\")]\n${indent}${this.reserve(value.toString())}`\n }\n\n // TODO document properties in `typeHeader()` instead of inline\n // TODO create class constructor for all required parameters\n typeSignature(indent: string, type: IType) {\n const isEnum = type instanceof EnumType\n const kind = isEnum ? 'enum' : 'class'\n const parent = isEnum ? '' : ' : SdkModel'\n return (\n this.commentHeader(indent, type.description) +\n `${indent}public ${kind} ${this.reserve(type.name)}${parent}\\n{\\n`\n )\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type)\n // all optional types are Nullable<T> and should have a \"default value\" of null\n // see https://stackoverflow.com/a/29153833 for discussion\n const mt = ''\n const quotes = '\"\"'\n const optional = this.nullStr\n\n const csTypes: Record<string, IMappedType> = {\n any: { default: this.nullStr, name: 'object', optional },\n boolean: { default: mt, name: 'bool', optional },\n byte: { default: mt, name: 'byte', optional },\n date: { default: mt, name: 'DateTime', optional },\n datetime: { default: mt, name: 'DateTime', optional },\n double: { default: mt, name: 'double', optional },\n float: { default: mt, name: 'float', optional },\n int32: { default: mt, name: 'int', optional },\n int64: { default: mt, name: 'long', optional },\n integer: { default: mt, name: 'int', optional },\n number: { default: mt, name: 'double', optional },\n object: { default: this.nullStr, name: 'object', optional },\n password: { default: quotes, name: 'Password', optional },\n string: { default: quotes, name: 'string', optional },\n uri: { default: quotes, name: 'Url', optional },\n url: { default: quotes, name: 'Url', optional },\n void: { default: mt, name: 'void' },\n }\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType)\n switch (type.className) {\n case 'ArrayType':\n return { default: this.nullStr, name: `${map.name}[]`, optional }\n case 'HashType':\n return {\n default: this.nullStr,\n name: `StringDictionary<${map.name}>`,\n optional,\n }\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `DelimArray<${map.name}>`,\n optional,\n }\n case 'EnumType':\n return { default: '', name: type.name }\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`)\n }\n\n if (type.name) {\n return (\n csTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n )\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"csharp.gen.js","names":["_codeGen","require","_sdkModels","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","reservedWords","Set","CSharpGen","CodeGen","constructor","arguments","commentHeader","indent","text","noComment","concat","commentBlock","modelsPrologue","_indent","warnEditing","apiRef","modelsEpilogue","methodsPrologue","packageName","apiVersion","methodsEpilogue","reserve","name","has","declareParameter","method","param","type","location","strBody","writeableType","mapped","typeMap","arg","pOpt","required","defaulting","optional","declareProperty","property","getset","default","attr","EnumType","hasSpecialNeeds","jsonName","summary","describeProperty","methodHeader","_method$description","head","description","trim","headComment","httpMethod","endpoint","responseIsBoth","responseIsBinary","returnComment","params","forEach","paramComment","dep","deprecated","genericBits","success","generic","constraint","returnType","ret","methodHeaderDeclaration","streamer","length","undefined","bump","indentStr","args","allParams","p","push","fragment","join","paramDelimiter","callback","bits","header","methodSignature","httpPath","path","prefix","indexOf","replace","declareMethod","bumper","encodePathParams","httpCall","errorResponses","_method","argGroup","values","map","argDelimiter","nullStr","httpArgs","result","argFill","bodyArg","queryArgs","dollah","pathArgs","firstCase","encodings","pathParams","doEncode","nl","describeParam","mediaType","desc","okResponses","lines","declareEnumValue","toString","typeSignature","isEnum","kind","parent","mt","quotes","csTypes","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","elementType","className","Error","JSON","stringify","exports"],"sources":["../src/csharp.gen.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\n\nimport type { IMappedType } from './codeGen';\nimport { CodeGen, commentBlock } from './codeGen';\nimport type {\n Arg,\n EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport { EnumType, describeParam, firstCase, strBody } from './sdkModels';\n\n// https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\nconst reservedWords = new Set<string>([\n 'abstract',\n 'as',\n 'base',\n 'bool',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'checked',\n 'class',\n 'const',\n 'continue',\n 'decimal',\n 'default',\n 'delegate',\n 'do ',\n 'double',\n 'else',\n 'enum',\n 'event',\n 'explicit',\n 'extern',\n 'false',\n 'finally',\n 'fixed',\n 'float',\n 'for',\n 'foreach',\n 'goto',\n 'if',\n 'implicit',\n 'in',\n 'int',\n 'interface',\n 'internal',\n 'is',\n 'lock',\n 'long',\n 'namespace',\n 'new',\n 'null',\n 'object',\n 'operator',\n 'out',\n 'override',\n 'params',\n 'private',\n 'protected',\n 'public',\n 'readonly',\n 'ref',\n 'return',\n 'sbyte',\n 'sealed',\n 'short',\n 'sizeof',\n 'stackalloc',\n 'static',\n 'string',\n 'struct',\n 'switch',\n 'this',\n 'throw',\n 'true',\n 'try',\n 'typeof',\n 'uint',\n 'ulong',\n 'unchecked',\n 'unsafe',\n 'ushort',\n 'using',\n 'virtual',\n 'void',\n 'volatile',\n 'while',\n]);\n\n/**\n * C# code generator\n */\nexport class CSharpGen extends CodeGen {\n codePath = './csharp';\n packagePath = '';\n itself = 'this';\n fileExtension = '.cs';\n commentStr = '// ';\n nullStr = 'null';\n transport = 'Transport';\n\n argDelimiter = ',';\n paramDelimiter = ',\\n';\n propDelimiter = '\\n';\n\n indentStr = ' ';\n endTypeStr = '\\n}';\n needsRequestTypes = false;\n willItStream = false;\n codeQuote = '\"';\n\n commentHeader(indent: string, text: string | undefined) {\n if (this.noComment) return '';\n return text ? `${commentBlock(text, indent, '/// ')}\\n` : '';\n }\n\n modelsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Runtime.Serialization;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Looker.RTL;\nusing Url = System.String;\nusing Password = System.String;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n`;\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n}';\n }\n\n methodsPrologue(_indent: string) {\n return `#nullable enable\nusing System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\nusing Looker.RTL;\n// ReSharper disable InconsistentNaming\n\n${this.commentHeader('', this.warnEditing())}\nnamespace Looker.SDK.API${this.apiRef}\n{\n\n public class ${this.packageName}: ApiMethods\n {\n public ${this.packageName}(IAuthSession authSession): base(authSession, \"${\n this.apiVersion\n }\") { }\n`;\n }\n\n methodsEpilogue(indent: string) {\n return `${indent}}\n}\n`;\n }\n\n reserve(name: string) {\n if (reservedWords.has(name)) {\n return '@' + name;\n }\n return name;\n }\n\n declareParameter(indent: string, method: IMethod, param: IParameter) {\n const type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type;\n const mapped = this.typeMap(type);\n const arg = this.reserve(param.name);\n const pOpt = param.required ? '' : '?';\n const defaulting = param.required\n ? ''\n : mapped.optional\n ? ` = ${mapped.optional}`\n : '';\n return `${indent}${mapped.name}${pOpt} ${arg}${defaulting}`;\n }\n\n declareProperty(indent: string, property: IProperty): string {\n const type = this.typeMap(property.type);\n // TODO notation for readonly support\n // let getset = property.readOnly ? '{ get; }' : '{ get; set; }'\n let getset = '{ get; set; }';\n if (property.required) {\n if (type.default) {\n getset += ` = ${type.default};`;\n }\n } else {\n if (type.optional) {\n getset += ` = ${type.optional};`;\n }\n }\n\n const arg = this.reserve(property.name);\n const pOpt = property.required ? '' : '?';\n let attr =\n property.type instanceof EnumType\n ? `${indent}[JsonConverter(typeof(StringEnumConverter))]\\n`\n : '';\n if (property.hasSpecialNeeds) {\n attr += `${indent}[JsonProperty(\"${property.jsonName}\")]\\n`;\n }\n return (\n this.summary(indent, this.describeProperty(property)) +\n attr +\n `${indent}public ${type.name}${pOpt} ${arg} ${getset}`\n );\n }\n\n methodHeader(indent: string, method: IMethod) {\n const type = this.typeMap(method.type);\n const head = method.description?.trim();\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`;\n if (method.responseIsBoth()) {\n headComment += `\\n\\n**Note**: Binary content may be returned by this method.`;\n } else if (method.responseIsBinary()) {\n headComment += `\\n\\n**Note**: Binary content is returned by this method.`;\n }\n\n headComment += this.returnComment(method);\n method.params.forEach(param => (headComment += this.paramComment(param)));\n const dep = method.deprecated ? `${indent}[Obsolete(\"Deprecated\")]\\n` : '';\n return this.commentHeader(indent, headComment) + dep;\n }\n\n genericBits(method: IMethod) {\n let success = 'TSuccess';\n let generic = '<TSuccess>';\n let constraint = ' where TSuccess : class';\n if (method.returnType) {\n const ret = method.returnType;\n const type = this.typeMap(ret.type);\n success = type.name === 'void' ? 'string' : type.name;\n generic = '';\n constraint = '';\n }\n return { success, generic, constraint };\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type);\n const bump = indent + this.indentStr;\n\n const params: string[] = [];\n const args = method.allParams; // get the params in signature order\n if (args && args.length > 0)\n args.forEach(p => params.push(this.declareParameter(bump, method, p)));\n const fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : '';\n const callback = `callback: (readable: Readable) => Promise<${type.name}>,`;\n const bits = this.genericBits(method);\n const header =\n this.methodHeader(indent, method) +\n `${indent}public async Task<SdkResponse<${bits.success}, Exception>> ${method.name}${bits.generic}(` +\n (streamer ? `\\n${bump}${callback}` : '');\n\n return (\n header +\n fragment +\n `${fragment ? ',' : ''}\\n${bump}ITransportSettings? options = null)${\n bits.constraint\n }\\n{${indent}\\n`\n );\n }\n\n methodSignature(indent: string, method: IMethod): string {\n return this.methodHeaderDeclaration(indent, method, false);\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || '';\n if (path.indexOf('{') >= 0) {\n return `$\"${path.replace(/{/gi, '{' + prefix)}\"`;\n }\n return `'${path}'`;\n }\n\n declareMethod(indent: string, method: IMethod) {\n const bump = this.bumper(indent);\n return (\n this.methodSignature(indent, method) +\n this.encodePathParams(bump, method) +\n this.httpCall(bump, method) +\n `\\n${indent}}`\n );\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n return 'Exception';\n }\n\n argGroup(_indent: string, args: Arg[], prefix?: string) {\n prefix = prefix || '';\n const values = args.map(arg => `{ \"${arg}\", ${this.reserve(arg)} }`);\n const bump = this.bumper(this.indentStr) + this.indentStr;\n return args && args.length !== 0\n ? `new Values {\\n${bump}${values.join(\n `${this.argDelimiter.trim()}\\n${bump}${prefix}`\n )}}`\n : this.nullStr;\n }\n\n httpArgs(indent: string, method: IMethod) {\n let result = this.argFill('', 'options');\n // result = this.argFill(result, this.argGroup(indent, method.cookieArgs))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs))\n result = this.argFill(\n result,\n method.bodyArg ? method.bodyArg : this.nullStr\n );\n result = this.argFill(result, this.argGroup(indent, method.queryArgs));\n return result;\n }\n\n httpCall(indent: string, method: IMethod) {\n const bump = indent + this.indentStr;\n const args = this.httpArgs(bump, method);\n const dollah = method.pathArgs.length ? '$' : '';\n // const errors = `(${this.errorResponses(indent, method)})`\n const bits = this.genericBits(method);\n const fragment = `AuthRequest<${\n bits.success\n }, Exception>(HttpMethod.${firstCase(method.httpMethod)}, ${dollah}\"${\n method.endpoint\n }\"${args ? ', ' + args : ''})`;\n return `${indent}return await ${fragment};`;\n }\n\n encodePathParams(indent: string, method: IMethod): string {\n const bump = indent + this.indentStr;\n let encodings = '';\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n if (param.doEncode()) {\n encodings += `${bump}${param.name} = SdkUtils.EncodeParam(${param.name});\\n`;\n }\n }\n }\n return encodings;\n }\n\n summary(indent: string, summary: string) {\n if (this.noComment || !summary) return '';\n const nl = summary.indexOf('\\n') >= 0 ? '\\n' : '';\n return this.commentHeader(\n indent,\n `<summary>${nl}${summary}${nl}</summary>`\n );\n }\n\n paramComment(param: IParameter) {\n return param.description\n ? `\\n<param name=\"${param.name}\">${describeParam(param)}</param>`\n : '';\n }\n\n returnComment(method: IMethod) {\n const type = method.returnType;\n if (type) {\n const mapped = this.typeMap(type.type);\n return `\\n\\n<returns><c>${mapped.name}</c> ${type.description} (${type.mediaType})</returns>\\n`;\n }\n const desc: string[] = [];\n method.okResponses.forEach(r => {\n const mapped = this.typeMap(r.type);\n desc.push(`<c>${mapped.name}</c> ${r.description} (${r.mediaType})`);\n });\n const lines = desc.join('\\n');\n return `\\n\\n<returns>\\n${lines}\\n</returns>\\n`;\n }\n\n declareEnumValue(indent: string, value: EnumValueType) {\n return `${indent}[EnumMember(Value = \"${value}\")]\n${indent}${this.reserve(value.toString())}`;\n }\n\n // TODO document properties in `typeHeader()` instead of inline\n // TODO create class constructor for all required parameters\n typeSignature(indent: string, type: IType) {\n const isEnum = type instanceof EnumType;\n const kind = isEnum ? 'enum' : 'class';\n const parent = isEnum ? '' : ' : SdkModel';\n return (\n this.commentHeader(indent, type.description) +\n `${indent}public ${kind} ${this.reserve(type.name)}${parent}\\n{\\n`\n );\n }\n\n typeMap(type: IType): IMappedType {\n super.typeMap(type);\n // all optional types are Nullable<T> and should have a \"default value\" of null\n // see https://stackoverflow.com/a/29153833 for discussion\n const mt = '';\n const quotes = '\"\"';\n const optional = this.nullStr;\n\n const csTypes: Record<string, IMappedType> = {\n any: { default: this.nullStr, name: 'object', optional },\n boolean: { default: mt, name: 'bool', optional },\n byte: { default: mt, name: 'byte', optional },\n date: { default: mt, name: 'DateTime', optional },\n datetime: { default: mt, name: 'DateTime', optional },\n double: { default: mt, name: 'double', optional },\n float: { default: mt, name: 'float', optional },\n int32: { default: mt, name: 'int', optional },\n int64: { default: mt, name: 'long', optional },\n integer: { default: mt, name: 'int', optional },\n number: { default: mt, name: 'double', optional },\n object: { default: this.nullStr, name: 'object', optional },\n password: { default: quotes, name: 'Password', optional },\n string: { default: quotes, name: 'string', optional },\n uri: { default: quotes, name: 'Url', optional },\n url: { default: quotes, name: 'Url', optional },\n void: { default: mt, name: 'void' },\n };\n\n if (type.elementType) {\n // This is a structure with nested types\n const map = this.typeMap(type.elementType);\n switch (type.className) {\n case 'ArrayType':\n return { default: this.nullStr, name: `${map.name}[]`, optional };\n case 'HashType':\n return {\n default: this.nullStr,\n name: `StringDictionary<${map.name}>`,\n optional,\n };\n case 'DelimArrayType':\n return {\n default: this.nullStr,\n name: `DelimArray<${map.name}>`,\n optional,\n };\n case 'EnumType':\n return { default: '', name: type.name };\n }\n throw new Error(`Don't know how to handle: ${JSON.stringify(type)}`);\n }\n\n if (type.name) {\n return (\n csTypes[type.name] || { default: this.nullStr, name: `${type.name}` }\n );\n } else {\n throw new Error('Cannot output a nameless type.');\n }\n }\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { IMine, IFileCall, SourceLink } from './exampleInfo';
1
+ import type { IFileCall, IMine, SourceLink } from './exampleInfo';
2
2
  import type { KeyedCollection } from './sdkModels';
3
3
  export interface IDeclarationMine extends IMine {
4
4
  types: DeclarationNuggets;
@@ -6,8 +6,8 @@ export interface IDeclarationMine extends IMine {
6
6
  }
7
7
  export interface IDeclarationNugget extends IFileCall {
8
8
  }
9
- export declare type DeclarationNuggets = KeyedCollection<IDeclarationNugget>;
10
- export declare const findDeclaration: (lode: IDeclarationMine, methodId?: string | undefined, typeId?: string | undefined, sourcerer?: SourceLink) => {
9
+ export type DeclarationNuggets = KeyedCollection<IDeclarationNugget>;
10
+ export declare const findDeclaration: (lode: IDeclarationMine, methodId?: string, typeId?: string, sourcerer?: SourceLink) => {
11
11
  declaration: IDeclarationNugget | undefined;
12
12
  link: string | undefined;
13
13
  };
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.findDeclaration = void 0;
7
7
  var _exampleInfo = require("./exampleInfo");
8
- var findDeclaration = function findDeclaration(lode, methodId, typeId) {
8
+ var findDeclaration = exports.findDeclaration = function findDeclaration(lode, methodId, typeId) {
9
9
  var sourcerer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _exampleInfo.permaLink;
10
10
  var declaration;
11
11
  if (methodId) {
@@ -22,5 +22,4 @@ var findDeclaration = function findDeclaration(lode, methodId, typeId) {
22
22
  link
23
23
  };
24
24
  };
25
- exports.findDeclaration = findDeclaration;
26
25
  //# sourceMappingURL=declarationInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"declarationInfo.js","names":["_exampleInfo","require","findDeclaration","lode","methodId","typeId","sourcerer","arguments","length","undefined","permaLink","declaration","methods","types","link","remoteOrigin","commitHash","sourceFile","line","exports"],"sources":["../src/declarationInfo.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { IMine, IFileCall, SourceLink } from './exampleInfo'\nimport { permaLink } from './exampleInfo'\nimport type { KeyedCollection } from './sdkModels'\n\n/** All mined declaration data */\nexport interface IDeclarationMine extends IMine {\n types: DeclarationNuggets\n methods: DeclarationNuggets\n}\n\nexport interface IDeclarationNugget extends IFileCall {}\n\nexport type DeclarationNuggets = KeyedCollection<IDeclarationNugget>\n\n/**\n * Searches for declaration of a given method or type and returns a GitHub\n * permalink if found\n * @param lode All declaration data\n * @param methodId Method id to search for\n * @param typeId Type id to search for\n * @param sourcerer Function to format source code link\n */\nexport const findDeclaration = (\n lode: IDeclarationMine,\n methodId?: string,\n typeId?: string,\n sourcerer: SourceLink = permaLink\n) => {\n let declaration\n if (methodId) {\n declaration = lode.methods[methodId]\n } else if (typeId) {\n declaration = lode.types[typeId]\n }\n\n let link\n if (declaration) {\n link = sourcerer(\n lode.remoteOrigin,\n lode.commitHash,\n declaration.sourceFile,\n declaration.line\n )\n // link = ideLink(parentPath, declaration.sourceFile, declaration.line)\n }\n return { declaration, link }\n}\n"],"mappings":";;;;;;AA0BA,IAAAA,YAAA,GAAAC,OAAA;AAqBO,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAC1BC,IAAsB,EACtBC,QAAiB,EACjBC,MAAe,EAEZ;EAAA,IADHC,SAAqB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,sBAAS;EAEjC,IAAIC,WAAW;EACf,IAAIP,QAAQ,EAAE;IACZO,WAAW,GAAGR,IAAI,CAACS,OAAO,CAACR,QAAQ,CAAC;EACtC,CAAC,MAAM,IAAIC,MAAM,EAAE;IACjBM,WAAW,GAAGR,IAAI,CAACU,KAAK,CAACR,MAAM,CAAC;EAClC;EAEA,IAAIS,IAAI;EACR,IAAIH,WAAW,EAAE;IACfG,IAAI,GAAGR,SAAS,CACdH,IAAI,CAACY,YAAY,EACjBZ,IAAI,CAACa,UAAU,EACfL,WAAW,CAACM,UAAU,EACtBN,WAAW,CAACO,IAAI,CACjB;EAEH;EACA,OAAO;IAAEP,WAAW;IAAEG;EAAK,CAAC;AAC9B,CAAC;AAAAK,OAAA,CAAAjB,eAAA,GAAAA,eAAA"}
1
+ {"version":3,"file":"declarationInfo.js","names":["_exampleInfo","require","findDeclaration","exports","lode","methodId","typeId","sourcerer","arguments","length","undefined","permaLink","declaration","methods","types","link","remoteOrigin","commitHash","sourceFile","line"],"sources":["../src/declarationInfo.ts"],"sourcesContent":["/*\n\n MIT License\n\n Copyright (c) 2021 Looker Data Sciences, Inc.\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of this software and associated documentation files (the \"Software\"), to deal\n in the Software without restriction, including without limitation the rights\n to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies of the Software, and to permit persons to whom the Software is\n furnished to do so, subject to the following conditions:\n\n The above copyright notice and this permission notice shall be included in all\n copies or substantial portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n SOFTWARE.\n\n */\nimport type { IFileCall, IMine, SourceLink } from './exampleInfo';\nimport { permaLink } from './exampleInfo';\nimport type { KeyedCollection } from './sdkModels';\n\n/** All mined declaration data */\nexport interface IDeclarationMine extends IMine {\n types: DeclarationNuggets;\n methods: DeclarationNuggets;\n}\n\nexport interface IDeclarationNugget extends IFileCall {}\n\nexport type DeclarationNuggets = KeyedCollection<IDeclarationNugget>;\n\n/**\n * Searches for declaration of a given method or type and returns a GitHub\n * permalink if found\n * @param lode All declaration data\n * @param methodId Method id to search for\n * @param typeId Type id to search for\n * @param sourcerer Function to format source code link\n */\nexport const findDeclaration = (\n lode: IDeclarationMine,\n methodId?: string,\n typeId?: string,\n sourcerer: SourceLink = permaLink\n) => {\n let declaration;\n if (methodId) {\n declaration = lode.methods[methodId];\n } else if (typeId) {\n declaration = lode.types[typeId];\n }\n\n let link;\n if (declaration) {\n link = sourcerer(\n lode.remoteOrigin,\n lode.commitHash,\n declaration.sourceFile,\n declaration.line\n );\n // link = ideLink(parentPath, declaration.sourceFile, declaration.line)\n }\n return { declaration, link };\n};\n"],"mappings":";;;;;;AA0BA,IAAAA,YAAA,GAAAC,OAAA;AAqBO,IAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,SAAlBA,eAAeA,CAC1BE,IAAsB,EACtBC,QAAiB,EACjBC,MAAe,EAEZ;EAAA,IADHC,SAAqB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGG,sBAAS;EAEjC,IAAIC,WAAW;EACf,IAAIP,QAAQ,EAAE;IACZO,WAAW,GAAGR,IAAI,CAACS,OAAO,CAACR,QAAQ,CAAC;EACtC,CAAC,MAAM,IAAIC,MAAM,EAAE;IACjBM,WAAW,GAAGR,IAAI,CAACU,KAAK,CAACR,MAAM,CAAC;EAClC;EAEA,IAAIS,IAAI;EACR,IAAIH,WAAW,EAAE;IACfG,IAAI,GAAGR,SAAS,CACdH,IAAI,CAACY,YAAY,EACjBZ,IAAI,CAACa,UAAU,EACfL,WAAW,CAACM,UAAU,EACtBN,WAAW,CAACO,IACd,CAAC;EAEH;EACA,OAAO;IAAEP,WAAW;IAAEG;EAAK,CAAC;AAC9B,CAAC"}
@@ -1,15 +1,9 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.trimInputs = exports.commentBlock = exports.CodeGen = void 0;
7
- var _sdkRtl = require("@looker/sdk-rtl");
8
- var _sdkModels = require("./sdkModels");
9
1
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
10
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
11
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
12
- var commentBlock = function commentBlock(text) {
2
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
3
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
+ import { DelimArray } from '@looker/sdk-rtl';
5
+ import { ArrayType, EnumType, HashType, Type, mayQuote, strBody } from './sdkModels';
6
+ export var commentBlock = function commentBlock(text) {
13
7
  var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
14
8
  var commentStr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '// ';
15
9
  if (!text || !text.trim()) return '';
@@ -17,8 +11,7 @@ var commentBlock = function commentBlock(text) {
17
11
  var lines = text.split('\n').map(x => "".concat(indentation).concat(x).trimRight());
18
12
  return lines.join('\n');
19
13
  };
20
- exports.commentBlock = commentBlock;
21
- var trimInputs = function trimInputs(inputs) {
14
+ export var trimInputs = function trimInputs(inputs) {
22
15
  var keepBody = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
23
16
  var depth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
24
17
  function isEmpty(value, depth) {
@@ -35,7 +28,7 @@ var trimInputs = function trimInputs(inputs) {
35
28
  return false;
36
29
  }
37
30
  var result;
38
- if (inputs instanceof _sdkRtl.DelimArray) return inputs;
31
+ if (inputs instanceof DelimArray) return inputs;
39
32
  if (Array.isArray(inputs)) {
40
33
  result = [];
41
34
  Object.values(inputs).forEach(v => result.push(trimInputs(v, keepBody, depth + 1)));
@@ -57,8 +50,7 @@ var trimInputs = function trimInputs(inputs) {
57
50
  }
58
51
  return result;
59
52
  };
60
- exports.trimInputs = trimInputs;
61
- class CodeGen {
53
+ export class CodeGen {
62
54
  constructor(api, versions) {
63
55
  this.api = api;
64
56
  this.versions = versions;
@@ -79,6 +71,7 @@ class CodeGen {
79
71
  _defineProperty(this, "useNamedParameters", true);
80
72
  _defineProperty(this, "useNamedArguments", true);
81
73
  _defineProperty(this, "useFunctions", false);
74
+ _defineProperty(this, "useSlices", false);
82
75
  _defineProperty(this, "useInterfaces", false);
83
76
  _defineProperty(this, "argSetSep", ': ');
84
77
  _defineProperty(this, "hashSetSep", ': ');
@@ -118,6 +111,18 @@ class CodeGen {
118
111
  functionsEpilogue(_indent) {
119
112
  return '';
120
113
  }
114
+ hooksPrologue(_indent) {
115
+ return '';
116
+ }
117
+ hooksEpilogue(_indent) {
118
+ return '';
119
+ }
120
+ mocksPrologue(_indent) {
121
+ return '';
122
+ }
123
+ mocksEpilogue(_indent) {
124
+ return '';
125
+ }
121
126
  interfacesPrologue(_indent) {
122
127
  return '';
123
128
  }
@@ -132,7 +137,7 @@ class CodeGen {
132
137
  }
133
138
  declareEnumValue(indent, value) {
134
139
  var quote = typeof value === 'string' ? this.codeQuote : '';
135
- return "".concat(indent).concat((0, _sdkModels.mayQuote)(value), " = ").concat(quote).concat(value).concat(quote);
140
+ return "".concat(indent).concat(mayQuote(value), " = ").concat(quote).concat(value).concat(quote);
136
141
  }
137
142
  functionSignature(_indent, _method) {
138
143
  return '';
@@ -140,6 +145,12 @@ class CodeGen {
140
145
  declareFunction(_indent, _method) {
141
146
  return '';
142
147
  }
148
+ declareHook(_indent, _method) {
149
+ return '';
150
+ }
151
+ declareMock(_indent, _method) {
152
+ return '';
153
+ }
143
154
  declareInterface(_indent, _method) {
144
155
  return '';
145
156
  }
@@ -163,9 +174,9 @@ class CodeGen {
163
174
  var argVal;
164
175
  if (mt.asVal) {
165
176
  argVal = mt.asVal(indent, val);
166
- } else if (argType instanceof _sdkModels.ArrayType) {
177
+ } else if (argType instanceof ArrayType) {
167
178
  argVal = this.arrayValue(indent, argType, val);
168
- } else if (argType instanceof _sdkModels.HashType) {
179
+ } else if (argType instanceof HashType) {
169
180
  argVal = this.hashValue(indent, val);
170
181
  } else if (!argType.intrinsic) {
171
182
  argVal = this.assignType(indent, argType, val);
@@ -246,7 +257,7 @@ class CodeGen {
246
257
  return open + args.join(arrayValDelimiter) + close;
247
258
  }
248
259
  anyValue(indent, val) {
249
- if (val instanceof _sdkModels.Type) return this.assignType(indent, val, val);
260
+ if (val instanceof Type) return this.assignType(indent, val, val);
250
261
  switch (typeof val) {
251
262
  case 'bigint':
252
263
  case 'number':
@@ -288,7 +299,7 @@ class CodeGen {
288
299
  return this.argIndent(indent, args, this.hashOpen, this.hashClose);
289
300
  }
290
301
  paramMappedType(param, method) {
291
- var type = param.location === _sdkModels.strBody ? this.writeableType(param.type, method) || param.type : param.type;
302
+ var type = param.location === strBody ? this.writeableType(param.type, method) || param.type : param.type;
292
303
  return this.typeMap(type);
293
304
  }
294
305
  makeTheCall(_method, _inputs) {
@@ -355,7 +366,7 @@ class CodeGen {
355
366
  var props = [];
356
367
  var propertyValues = '';
357
368
  try {
358
- if (type instanceof _sdkModels.EnumType) {
369
+ if (type instanceof EnumType) {
359
370
  var num = type;
360
371
  num.values.forEach(value => props.push(this.declareEnumValue(bump, value)));
361
372
  propertyValues = props.join(this.enumDelimiter);
@@ -440,5 +451,4 @@ class CodeGen {
440
451
  };
441
452
  }
442
453
  }
443
- exports.CodeGen = CodeGen;
444
454
  //# sourceMappingURL=codeGen.js.map