@looker/sdk-codegen 21.8.2 → 21.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +124 -170
- package/README.md +0 -1
- package/lib/codeGen.d.ts +1 -1
- package/lib/codeGen.js +4 -6
- package/lib/codeGen.js.map +1 -1
- package/lib/codeGenerators.d.ts +1 -1
- package/lib/codeGenerators.js +2 -4
- package/lib/codeGenerators.js.map +1 -1
- package/lib/csharp.gen.d.ts +1 -1
- package/lib/csharp.gen.js +2 -2
- package/lib/csharp.gen.js.map +1 -1
- package/lib/declarationInfo.d.ts +3 -3
- package/lib/declarationInfo.js +1 -2
- package/lib/declarationInfo.js.map +1 -1
- package/lib/esm/codeGen.js +14 -23
- package/lib/esm/codeGen.js.map +1 -1
- package/lib/esm/codeGenerators.js +17 -28
- package/lib/esm/codeGenerators.js.map +1 -1
- package/lib/esm/csharp.gen.js +11 -18
- package/lib/esm/csharp.gen.js.map +1 -1
- package/lib/esm/declarationInfo.js +3 -10
- package/lib/esm/declarationInfo.js.map +1 -1
- package/lib/esm/exampleInfo.js +9 -24
- package/lib/esm/exampleInfo.js.map +1 -1
- package/lib/esm/go.gen.js +11 -18
- package/lib/esm/go.gen.js.map +1 -1
- package/lib/esm/index.js +13 -148
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/kotlin.gen.js +11 -18
- package/lib/esm/kotlin.gen.js.map +1 -1
- package/lib/esm/pseudo.gen.js +6 -13
- package/lib/esm/pseudo.gen.js.map +1 -1
- package/lib/esm/python.gen.js +12 -19
- package/lib/esm/python.gen.js.map +1 -1
- package/lib/esm/sdkModels.js +52 -96
- package/lib/esm/sdkModels.js.map +1 -1
- package/lib/esm/specConverter.js +29 -57
- package/lib/esm/specConverter.js.map +1 -1
- package/lib/esm/specDiff.js +17 -36
- package/lib/esm/specDiff.js.map +1 -1
- package/lib/esm/swift.gen.js +17 -24
- package/lib/esm/swift.gen.js.map +1 -1
- package/lib/esm/testUtils/index.js +1 -16
- package/lib/esm/testUtils/index.js.map +1 -1
- package/lib/esm/testUtils/testUtils.js +12 -25
- package/lib/esm/testUtils/testUtils.js.map +1 -1
- package/lib/esm/typescript.gen.js +16 -23
- package/lib/esm/typescript.gen.js.map +1 -1
- package/lib/exampleInfo.d.ts +6 -6
- package/lib/exampleInfo.js +1 -2
- package/lib/exampleInfo.js.map +1 -1
- package/lib/go.gen.js +3 -3
- package/lib/go.gen.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/kotlin.gen.d.ts +1 -1
- package/lib/kotlin.gen.js +2 -2
- package/lib/kotlin.gen.js.map +1 -1
- package/lib/pseudo.gen.js +2 -2
- package/lib/pseudo.gen.js.map +1 -1
- package/lib/python.gen.js +3 -3
- package/lib/python.gen.js.map +1 -1
- package/lib/sdkModels.d.ts +13 -13
- package/lib/sdkModels.js +15 -25
- package/lib/sdkModels.js.map +1 -1
- package/lib/specConverter.d.ts +6 -9
- package/lib/specConverter.js +12 -20
- package/lib/specConverter.js.map +1 -1
- package/lib/specDiff.d.ts +4 -4
- package/lib/specDiff.js +4 -8
- package/lib/specDiff.js.map +1 -1
- package/lib/swift.gen.js +2 -2
- package/lib/swift.gen.js.map +1 -1
- package/lib/testUtils/index.js.map +1 -1
- package/lib/testUtils/testUtils.js +4 -6
- package/lib/testUtils/testUtils.js.map +1 -1
- package/lib/typescript.gen.js +4 -4
- package/lib/typescript.gen.js.map +1 -1
- package/package.json +6 -6
package/lib/esm/specDiff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specDiff.js","names":["_sdkModels","require","DiffCompare","startCount","changed","added","removed","exports","diffCompare","lKey","rKey","localeCompare","RightMissing","LeftMissing","countDiffs","count","lKeys","rKeys","comparer","arguments","length","undefined","sort","a","b","l","r","lk","rk","comp","compareEnumTypes","lType","rType","lNum","rNum","values","map","v","toString","lVal","JSON","stringify","rVal","lhs","rhs","compareTypes","EnumType","ArrayType","elementType","asHashString","diff","Object","keys","properties","summary","lhsVal","rhsVal","compareParams","lMethod","rMethod","lParams","rParams","allParams","forEach","p","name","lsh","signature","rsh","lSignature","rSignature","compareBodies","bodyParams","lSide","type","fullName","required","rSide","compareResponses","responses","statusCode","mediaType","csvHeaderRow","csvDiffRow","diffCount","replace","concat","id","lStatus","rStatus","typeDiff","paramsDiff","bodyDiff","responseDiff","mdHeaderRow","mdDiffRow","diffToString","result","computeDiff","Error","countStatus","status","includeDiffs","delta","compareSpecs","lSpec","rSpec","include","specSort","lMethods","methods","rMethods","lLength","rLength","lIndex","rIndex","push"],"sources":["../../src/specDiff.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 { IMethod, IType, KeyedCollection, IApiModel } from './sdkModels'\nimport { EnumType, ArrayType } from './sdkModels'\n\ninterface ITypeDelta {\n lhs: string\n rhs: string\n}\n\nenum DiffCompare {\n RightMissing = -1,\n Equal = 0,\n LeftMissing = 1,\n}\n\nexport interface DiffCount {\n changed: number\n added: number\n removed: number\n}\n\nexport type TypeDelta = KeyedCollection<ITypeDelta>\n\nexport type DiffTracker = (lKey: string, rKey: string) => number\n\nexport const startCount = (): DiffCount => {\n return { changed: 0, added: 0, removed: 0 }\n}\n\nconst diffCompare = (lKey: string, rKey: string) => {\n if (lKey && rKey) return lKey.localeCompare(rKey)\n if (lKey) return DiffCompare.RightMissing\n return DiffCompare.LeftMissing\n}\n\nexport const countDiffs = (\n count: DiffCount,\n lKeys: string[],\n rKeys: string[],\n comparer: DiffTracker = diffCompare\n) => {\n lKeys = lKeys.sort((a, b) => a.localeCompare(b))\n rKeys = rKeys.sort((a, b) => a.localeCompare(b))\n let l = 0\n let r = 0\n while (l < lKeys.length || r < rKeys.length) {\n const lk = lKeys[l]\n const rk = rKeys[r]\n const comp = comparer(lk, rk)\n switch (comp) {\n case DiffCompare.LeftMissing: {\n count.added++\n r++\n break\n }\n case DiffCompare.RightMissing: {\n count.removed++\n l++\n break\n }\n default: {\n l++\n r++\n }\n }\n }\n return count\n}\n\nexport const compareEnumTypes = (\n lType: IType,\n rType: IType,\n count: DiffCount\n) => {\n const lNum = lType as EnumType\n const rNum = rType as EnumType\n const lKeys = lNum.values.map((v) => v.toString())\n const rKeys = rNum.values.map((v) => v.toString())\n countDiffs(count, lKeys, rKeys)\n const lVal = JSON.stringify(lKeys)\n const rVal = JSON.stringify(rKeys)\n if (lVal === rVal) return\n return {\n lhs: lVal,\n rhs: rVal,\n }\n}\n\n/**\n * Compares two types and returns an object of non-matching entries\n * @param lType\n * @param rType\n * @param count change tracking\n */\nexport const compareTypes = (lType: IType, rType: IType, count: DiffCount) => {\n if (lType instanceof EnumType) {\n return compareEnumTypes(lType, rType, count)\n }\n\n if (lType instanceof ArrayType) {\n lType = lType.elementType\n }\n\n if (rType instanceof ArrayType) {\n rType = rType.elementType\n }\n\n if (lType.asHashString() === rType.asHashString()) return\n\n const diff: TypeDelta = {}\n countDiffs(\n count,\n Object.keys(lType.properties),\n Object.keys(rType.properties),\n (lKey, rKey) => {\n const comp = diffCompare(lKey, rKey)\n switch (comp) {\n case DiffCompare.LeftMissing: {\n diff[rKey] = {\n lhs: '',\n rhs: rType.properties[rKey].summary(),\n }\n break\n }\n case DiffCompare.RightMissing: {\n diff[lKey] = {\n lhs: lType.properties[lKey].summary(),\n rhs: '',\n }\n break\n }\n default: {\n const lhsVal = lType.properties[lKey]\n const rhsVal = rType.properties[rKey]\n const lhs = lhsVal.summary()\n const rhs = rhsVal.summary()\n if (lhs !== rhs) {\n count.changed++\n diff[lKey] = {\n lhs,\n rhs,\n }\n }\n }\n }\n return comp\n }\n )\n if (Object.keys(diff).length === 0) return\n return diff\n}\n\n/**\n * Compares the params of two methods and returns the signature of both methods\n * if non matching.\n * @param lMethod\n * @param rMethod\n * @param count change tracking\n */\nexport const compareParams = (\n lMethod: IMethod,\n rMethod: IMethod,\n count: DiffCount\n) => {\n const lParams = {}\n const rParams = {}\n lMethod.allParams.forEach((p) => (lParams[p.name] = p))\n rMethod.allParams.forEach((p) => (rParams[p.name] = p))\n // TODO typediff the matching body types?\n countDiffs(\n count,\n Object.keys(lParams),\n Object.keys(rParams),\n (lKey, rKey) => {\n const comp = diffCompare(lKey, rKey)\n if (comp === 0) {\n const lsh = lParams[lKey].signature()\n const rsh = rParams[rKey].signature()\n if (lsh !== rsh) {\n count.changed++\n }\n }\n return comp\n }\n )\n\n const lSignature = lMethod.signature()\n const rSignature = rMethod.signature()\n if (lSignature === rSignature) return\n\n return {\n lhs: lSignature,\n rhs: rSignature,\n }\n}\n\n/**\n * Compares the bodies of two methods and returns diffs if there are any\n * @param lMethod\n * @param rMethod\n * @param count change tracking\n */\nexport const compareBodies = (\n lMethod: IMethod,\n rMethod: IMethod,\n count: DiffCount\n) => {\n const lParams = {}\n const rParams = {}\n lMethod.bodyParams.forEach((p) => (lParams[p.name] = p))\n rMethod.bodyParams.forEach((p) => (rParams[p.name] = p))\n // TODO typediff the matching body types?\n countDiffs(count, Object.keys(lParams), Object.keys(rParams))\n\n const lSide = lMethod.bodyParams.map((p) => {\n return {\n name: p.name,\n type: p.type.fullName,\n required: p.required,\n }\n })\n const rSide = rMethod.bodyParams.map((p) => {\n return {\n name: p.name,\n type: p.type.fullName,\n required: p.required,\n }\n })\n\n if (JSON.stringify(lSide) === JSON.stringify(rSide)) return\n\n count.changed++\n return {\n lhs: lSide,\n rhs: rSide,\n }\n}\n\n/**\n * Compare two response lists, returning diff\n * @param lMethod\n * @param rMethod\n * @param count change tracking\n */\nexport const compareResponses = (\n lMethod: IMethod,\n rMethod: IMethod,\n count: DiffCount\n) => {\n // TODO deep type comparison? Probably diff all types instead\n const lSide = lMethod.responses.map((r) => {\n return {\n statusCode: r.statusCode,\n mediaType: r.mediaType,\n type: r.type.fullName,\n }\n })\n const rSide = rMethod.responses.map((r) => {\n return {\n statusCode: r.statusCode,\n mediaType: r.mediaType,\n type: r.type.fullName,\n }\n })\n if (JSON.stringify(lSide) === JSON.stringify(rSide)) return\n\n count.changed++\n return {\n lhs: lSide,\n rhs: rSide,\n }\n}\n\nexport const csvHeaderRow =\n 'method name,\"Op + URI\",left status,right status,typeDiff,paramDiff,bodyDiff,responseDiff,diffCount'\n\nexport const csvDiffRow = (diff: DiffRow) => {\n const diffCount = JSON.stringify(diff.diffCount).replace(/\"/g, `'`)\n return `\n${diff.name},${diff.id},${diff.lStatus},${diff.rStatus},${diff.typeDiff},${diff.paramsDiff},${diff.bodyDiff},${diff.responseDiff},\"${diffCount}\"`\n}\n\nexport const mdHeaderRow = `\n| method name | Op + URI | 3.1 | 4.0 | typeDiff | paramDiff | bodyDiff | responseDiff | diffCount |\n| ------------ | -------- | --- | --- | ------------ | --------- | -------- | ------------ | --------- |`\n\nexport const mdDiffRow = (diff: DiffRow) => `\n| ${diff.name} | ${diff.id} | ${diff.lStatus} | ${diff.rStatus} | ${\n diff.typeDiff\n} | ${diff.paramsDiff} | ${diff.bodyDiff} | ${\n diff.responseDiff\n} | ${JSON.stringify(diff.diffCount)} |`\n\nconst diffToString = (diff: any) => {\n if (!diff) return ''\n const result = JSON.stringify(diff, null, 2)\n if (result === '{}') return ''\n return `\"${result.replace(/\"/g, \"'\")}\"`\n}\n\nexport interface ComputeDiffInputs {\n lMethod?: IMethod\n rMethod?: IMethod\n}\n\nexport interface DiffRow {\n /** Method name */\n name: string\n /** Method operation and path */\n id: string\n /** Method status in both specs */\n lStatus: string\n rStatus: string\n /** Method type diff if any */\n typeDiff: string\n /** Method params diff if any */\n paramsDiff: string\n /** Body diff if any */\n bodyDiff: string\n /** Response diff if any */\n responseDiff: string\n /** Count of differences */\n diffCount: DiffCount\n}\n\n/**\n * Computes the diff of two methods\n * @param lMethod\n * @param rMethod\n */\nconst computeDiff = (lMethod?: IMethod, rMethod?: IMethod) => {\n if (!lMethod && !rMethod) throw new Error('At least one method is required.')\n\n const count = startCount()\n const countStatus = () => {\n if (!rMethod) {\n count.removed++\n } else if (!lMethod) {\n count.added++\n } else {\n if (lMethod.status !== rMethod.status) count.changed++\n }\n }\n\n let result: DiffRow\n countStatus()\n if (lMethod) {\n const typeDiff = rMethod\n ? diffToString(compareTypes(lMethod.type, rMethod.type, count))\n : ''\n const paramsDiff = rMethod\n ? diffToString(compareParams(lMethod, rMethod, count))\n : ''\n const bodyDiff = rMethod\n ? diffToString(compareBodies(lMethod, rMethod, count))\n : ''\n const responseDiff = rMethod\n ? diffToString(compareResponses(lMethod, rMethod, count))\n : ''\n result = {\n name: lMethod.name,\n id: lMethod.id,\n lStatus: lMethod.status,\n rStatus: rMethod ? rMethod.status : '',\n typeDiff,\n paramsDiff,\n bodyDiff,\n responseDiff,\n diffCount: count,\n }\n } else if (!lMethod && rMethod) {\n result = {\n name: rMethod.name,\n id: rMethod.id,\n lStatus: '',\n rStatus: rMethod.status,\n typeDiff: '',\n paramsDiff: '',\n bodyDiff: '',\n responseDiff: '',\n diffCount: count,\n }\n }\n\n return result!\n}\n\nexport type DiffFilter = (\n delta: DiffRow,\n lMethod?: IMethod,\n rMethod?: IMethod\n) => boolean\n\n/**\n * Include when:\n * - lMethod is missing\n * - rMethod is missing\n * - params differ\n * - types differ\n * @param delta\n * @param lMethod\n * @param rMethod\n */\nexport const includeDiffs: DiffFilter = (delta, lMethod, rMethod) =>\n !lMethod ||\n !rMethod! ||\n delta.lStatus !== delta.rStatus ||\n !!delta.paramsDiff ||\n !!delta.typeDiff ||\n !!delta.bodyDiff ||\n !!delta.responseDiff\n\n/**\n * Compares two specs and returns a diff object\n * @param lSpec left-side spec\n * @param rSpec right-side spec\n * @param include evaluates to true if the comparison should be included\n */\nexport const compareSpecs = (\n lSpec: IApiModel,\n rSpec: IApiModel,\n include: DiffFilter = includeDiffs\n) => {\n const specSort = (a: IMethod, b: IMethod) => a.id.localeCompare(b.id)\n\n const lMethods = Object.values(lSpec.methods).sort(specSort)\n const rMethods = Object.values(rSpec.methods).sort(specSort)\n\n const lLength = lMethods.length\n const rLength = rMethods.length\n let lIndex = 0\n let rIndex = 0\n const diff: DiffRow[] = []\n\n while (lIndex < lLength || rIndex < rLength) {\n let lMethod: IMethod | undefined = lMethods[lIndex]\n let rMethod: IMethod | undefined = rMethods[rIndex]\n\n if (!lMethod) {\n rIndex++\n } else if (!rMethod) {\n lIndex++\n } else if (lMethod.id < rMethod.id) {\n rMethod = undefined\n lIndex++\n } else if (rMethod.id < lMethod.id) {\n lMethod = undefined\n rIndex++\n } else {\n lIndex++\n rIndex++\n }\n\n const delta = computeDiff(lMethod, rMethod)\n if (include(delta, lMethod, rMethod)) {\n diff.push(delta)\n }\n }\n return diff\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"specDiff.js","names":["ArrayType","EnumType","DiffCompare","startCount","changed","added","removed","diffCompare","lKey","rKey","localeCompare","RightMissing","LeftMissing","countDiffs","count","lKeys","rKeys","comparer","arguments","length","undefined","sort","a","b","l","r","lk","rk","comp","compareEnumTypes","lType","rType","lNum","rNum","values","map","v","toString","lVal","JSON","stringify","rVal","lhs","rhs","compareTypes","elementType","asHashString","diff","Object","keys","properties","summary","lhsVal","rhsVal","compareParams","lMethod","rMethod","lParams","rParams","allParams","forEach","p","name","lsh","signature","rsh","lSignature","rSignature","compareBodies","bodyParams","lSide","type","fullName","required","rSide","compareResponses","responses","statusCode","mediaType","csvHeaderRow","csvDiffRow","diffCount","replace","concat","id","lStatus","rStatus","typeDiff","paramsDiff","bodyDiff","responseDiff","mdHeaderRow","mdDiffRow","diffToString","result","computeDiff","Error","countStatus","status","includeDiffs","delta","compareSpecs","lSpec","rSpec","include","specSort","lMethods","methods","rMethods","lLength","rLength","lIndex","rIndex","push"],"sources":["../../src/specDiff.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 ArgValues,\n IApiModel,\n IMethod,\n IType,\n KeyedCollection,\n} from './sdkModels';\nimport { ArrayType, EnumType } from './sdkModels';\n\ninterface ITypeDelta {\n lhs: string;\n rhs: string;\n}\n\nenum DiffCompare {\n RightMissing = -1,\n Equal = 0,\n LeftMissing = 1,\n}\n\nexport interface DiffCount {\n changed: number;\n added: number;\n removed: number;\n}\n\nexport type TypeDelta = KeyedCollection<ITypeDelta>;\n\nexport type DiffTracker = (lKey: string, rKey: string) => number;\n\nexport const startCount = (): DiffCount => {\n return { changed: 0, added: 0, removed: 0 };\n};\n\nconst diffCompare = (lKey: string, rKey: string) => {\n if (lKey && rKey) return lKey.localeCompare(rKey);\n if (lKey) return DiffCompare.RightMissing;\n return DiffCompare.LeftMissing;\n};\n\nexport const countDiffs = (\n count: DiffCount,\n lKeys: string[],\n rKeys: string[],\n comparer: DiffTracker = diffCompare\n) => {\n lKeys = lKeys.sort((a, b) => a.localeCompare(b));\n rKeys = rKeys.sort((a, b) => a.localeCompare(b));\n let l = 0;\n let r = 0;\n while (l < lKeys.length || r < rKeys.length) {\n const lk = lKeys[l];\n const rk = rKeys[r];\n const comp = comparer(lk, rk);\n switch (comp) {\n case DiffCompare.LeftMissing: {\n count.added++;\n r++;\n break;\n }\n case DiffCompare.RightMissing: {\n count.removed++;\n l++;\n break;\n }\n default: {\n l++;\n r++;\n }\n }\n }\n return count;\n};\n\nexport const compareEnumTypes = (\n lType: IType,\n rType: IType,\n count: DiffCount\n) => {\n const lNum = lType as EnumType;\n const rNum = rType as EnumType;\n const lKeys = lNum.values.map((v) => v.toString());\n const rKeys = rNum.values.map((v) => v.toString());\n countDiffs(count, lKeys, rKeys);\n const lVal = JSON.stringify(lKeys);\n const rVal = JSON.stringify(rKeys);\n if (lVal === rVal) return;\n return {\n lhs: lVal,\n rhs: rVal,\n };\n};\n\n/**\n * Compares two types and returns an object of non-matching entries\n * @param lType\n * @param rType\n * @param count change tracking\n */\nexport const compareTypes = (lType: IType, rType: IType, count: DiffCount) => {\n if (lType instanceof EnumType) {\n return compareEnumTypes(lType, rType, count);\n }\n\n if (lType instanceof ArrayType) {\n lType = lType.elementType;\n }\n\n if (rType instanceof ArrayType) {\n rType = rType.elementType;\n }\n\n if (lType.asHashString() === rType.asHashString()) return;\n\n const diff: TypeDelta = {};\n countDiffs(\n count,\n Object.keys(lType.properties),\n Object.keys(rType.properties),\n (lKey, rKey) => {\n const comp = diffCompare(lKey, rKey);\n switch (comp) {\n case DiffCompare.LeftMissing: {\n diff[rKey] = {\n lhs: '',\n rhs: rType.properties[rKey].summary(),\n };\n break;\n }\n case DiffCompare.RightMissing: {\n diff[lKey] = {\n lhs: lType.properties[lKey].summary(),\n rhs: '',\n };\n break;\n }\n default: {\n const lhsVal = lType.properties[lKey];\n const rhsVal = rType.properties[rKey];\n const lhs = lhsVal.summary();\n const rhs = rhsVal.summary();\n if (lhs !== rhs) {\n count.changed++;\n diff[lKey] = {\n lhs,\n rhs,\n };\n }\n }\n }\n return comp;\n }\n );\n if (Object.keys(diff).length === 0) return;\n return diff;\n};\n\n/**\n * Compares the params of two methods and returns the signature of both methods\n * if non matching.\n * @param lMethod\n * @param rMethod\n * @param count change tracking\n */\nexport const compareParams = (\n lMethod: IMethod,\n rMethod: IMethod,\n count: DiffCount\n) => {\n const lParams: ArgValues = {};\n const rParams: ArgValues = {};\n lMethod.allParams.forEach((p) => (lParams[p.name] = p));\n rMethod.allParams.forEach((p) => (rParams[p.name] = p));\n // TODO typediff the matching body types?\n countDiffs(\n count,\n Object.keys(lParams),\n Object.keys(rParams),\n (lKey, rKey) => {\n const comp = diffCompare(lKey, rKey);\n if (comp === 0) {\n const lsh = lParams[lKey].signature();\n const rsh = rParams[rKey].signature();\n if (lsh !== rsh) {\n count.changed++;\n }\n }\n return comp;\n }\n );\n\n const lSignature = lMethod.signature();\n const rSignature = rMethod.signature();\n if (lSignature === rSignature) return;\n\n return {\n lhs: lSignature,\n rhs: rSignature,\n };\n};\n\n/**\n * Compares the bodies of two methods and returns diffs if there are any\n * @param lMethod\n * @param rMethod\n * @param count change tracking\n */\nexport const compareBodies = (\n lMethod: IMethod,\n rMethod: IMethod,\n count: DiffCount\n) => {\n const lParams: ArgValues = {};\n const rParams: ArgValues = {};\n lMethod.bodyParams.forEach((p) => (lParams[p.name] = p));\n rMethod.bodyParams.forEach((p) => (rParams[p.name] = p));\n // TODO typediff the matching body types?\n countDiffs(count, Object.keys(lParams), Object.keys(rParams));\n\n const lSide = lMethod.bodyParams.map((p) => {\n return {\n name: p.name,\n type: p.type.fullName,\n required: p.required,\n };\n });\n const rSide = rMethod.bodyParams.map((p) => {\n return {\n name: p.name,\n type: p.type.fullName,\n required: p.required,\n };\n });\n\n if (JSON.stringify(lSide) === JSON.stringify(rSide)) return;\n\n count.changed++;\n return {\n lhs: lSide,\n rhs: rSide,\n };\n};\n\n/**\n * Compare two response lists, returning diff\n * @param lMethod\n * @param rMethod\n * @param count change tracking\n */\nexport const compareResponses = (\n lMethod: IMethod,\n rMethod: IMethod,\n count: DiffCount\n) => {\n // TODO deep type comparison? Probably diff all types instead\n const lSide = lMethod.responses.map((r) => {\n return {\n statusCode: r.statusCode,\n mediaType: r.mediaType,\n type: r.type.fullName,\n };\n });\n const rSide = rMethod.responses.map((r) => {\n return {\n statusCode: r.statusCode,\n mediaType: r.mediaType,\n type: r.type.fullName,\n };\n });\n if (JSON.stringify(lSide) === JSON.stringify(rSide)) return;\n\n count.changed++;\n return {\n lhs: lSide,\n rhs: rSide,\n };\n};\n\nexport const csvHeaderRow =\n 'method name,\"Op + URI\",left status,right status,typeDiff,paramDiff,bodyDiff,responseDiff,diffCount';\n\nexport const csvDiffRow = (diff: DiffRow) => {\n const diffCount = JSON.stringify(diff.diffCount).replace(/\"/g, `'`);\n return `\n${diff.name},${diff.id},${diff.lStatus},${diff.rStatus},${diff.typeDiff},${diff.paramsDiff},${diff.bodyDiff},${diff.responseDiff},\"${diffCount}\"`;\n};\n\nexport const mdHeaderRow = `\n| method name | Op + URI | 3.1 | 4.0 | typeDiff | paramDiff | bodyDiff | responseDiff | diffCount |\n| ------------ | -------- | --- | --- | ------------ | --------- | -------- | ------------ | --------- |`;\n\nexport const mdDiffRow = (diff: DiffRow) => `\n| ${diff.name} | ${diff.id} | ${diff.lStatus} | ${diff.rStatus} | ${\n diff.typeDiff\n} | ${diff.paramsDiff} | ${diff.bodyDiff} | ${\n diff.responseDiff\n} | ${JSON.stringify(diff.diffCount)} |`;\n\nconst diffToString = (diff: any) => {\n if (!diff) return '';\n const result = JSON.stringify(diff, null, 2);\n if (result === '{}') return '';\n return `\"${result.replace(/\"/g, \"'\")}\"`;\n};\n\nexport interface ComputeDiffInputs {\n lMethod?: IMethod;\n rMethod?: IMethod;\n}\n\nexport interface DiffRow {\n /** Method name */\n name: string;\n /** Method operation and path */\n id: string;\n /** Method status in both specs */\n lStatus: string;\n rStatus: string;\n /** Method type diff if any */\n typeDiff: string;\n /** Method params diff if any */\n paramsDiff: string;\n /** Body diff if any */\n bodyDiff: string;\n /** Response diff if any */\n responseDiff: string;\n /** Count of differences */\n diffCount: DiffCount;\n}\n\n/**\n * Computes the diff of two methods\n * @param lMethod\n * @param rMethod\n */\nconst computeDiff = (lMethod?: IMethod, rMethod?: IMethod) => {\n if (!lMethod && !rMethod) throw new Error('At least one method is required.');\n\n const count = startCount();\n const countStatus = () => {\n if (!rMethod) {\n count.removed++;\n } else if (!lMethod) {\n count.added++;\n } else {\n if (lMethod.status !== rMethod.status) count.changed++;\n }\n };\n\n let result: DiffRow;\n countStatus();\n if (lMethod) {\n const typeDiff = rMethod\n ? diffToString(compareTypes(lMethod.type, rMethod.type, count))\n : '';\n const paramsDiff = rMethod\n ? diffToString(compareParams(lMethod, rMethod, count))\n : '';\n const bodyDiff = rMethod\n ? diffToString(compareBodies(lMethod, rMethod, count))\n : '';\n const responseDiff = rMethod\n ? diffToString(compareResponses(lMethod, rMethod, count))\n : '';\n result = {\n name: lMethod.name,\n id: lMethod.id,\n lStatus: lMethod.status,\n rStatus: rMethod ? rMethod.status : '',\n typeDiff,\n paramsDiff,\n bodyDiff,\n responseDiff,\n diffCount: count,\n };\n } else if (!lMethod && rMethod) {\n result = {\n name: rMethod.name,\n id: rMethod.id,\n lStatus: '',\n rStatus: rMethod.status,\n typeDiff: '',\n paramsDiff: '',\n bodyDiff: '',\n responseDiff: '',\n diffCount: count,\n };\n }\n\n return result!;\n};\n\nexport type DiffFilter = (\n delta: DiffRow,\n lMethod?: IMethod,\n rMethod?: IMethod\n) => boolean;\n\n/**\n * Include when:\n * - lMethod is missing\n * - rMethod is missing\n * - params differ\n * - types differ\n * @param delta\n * @param lMethod\n * @param rMethod\n */\nexport const includeDiffs: DiffFilter = (delta, lMethod, rMethod) =>\n !lMethod ||\n !rMethod! ||\n delta.lStatus !== delta.rStatus ||\n !!delta.paramsDiff ||\n !!delta.typeDiff ||\n !!delta.bodyDiff ||\n !!delta.responseDiff;\n\n/**\n * Compares two specs and returns a diff object\n * @param lSpec left-side spec\n * @param rSpec right-side spec\n * @param include evaluates to true if the comparison should be included\n */\nexport const compareSpecs = (\n lSpec: IApiModel,\n rSpec: IApiModel,\n include: DiffFilter = includeDiffs\n) => {\n const specSort = (a: IMethod, b: IMethod) => a.id.localeCompare(b.id);\n\n const lMethods = Object.values(lSpec.methods).sort(specSort);\n const rMethods = Object.values(rSpec.methods).sort(specSort);\n\n const lLength = lMethods.length;\n const rLength = rMethods.length;\n let lIndex = 0;\n let rIndex = 0;\n const diff: DiffRow[] = [];\n\n while (lIndex < lLength || rIndex < rLength) {\n let lMethod: IMethod | undefined = lMethods[lIndex];\n let rMethod: IMethod | undefined = rMethods[rIndex];\n\n if (!lMethod) {\n rIndex++;\n } else if (!rMethod) {\n lIndex++;\n } else if (lMethod.id < rMethod.id) {\n rMethod = undefined;\n lIndex++;\n } else if (rMethod.id < lMethod.id) {\n lMethod = undefined;\n rIndex++;\n } else {\n lIndex++;\n rIndex++;\n }\n\n const delta = computeDiff(lMethod, rMethod);\n if (include(delta, lMethod, rMethod)) {\n diff.push(delta);\n }\n }\n return diff;\n};\n"],"mappings":"AAiCA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,aAAa;AAAC,IAO7CC,WAAW,aAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAXA,WAAW,CAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA,EAAXA,WAAW;AAgBhB,OAAO,IAAMC,UAAU,GAAGA,CAAA,KAAiB;EACzC,OAAO;IAAEC,OAAO,EAAE,CAAC;IAAEC,KAAK,EAAE,CAAC;IAAEC,OAAO,EAAE;EAAE,CAAC;AAC7C,CAAC;AAED,IAAMC,WAAW,GAAGA,CAACC,IAAY,EAAEC,IAAY,KAAK;EAClD,IAAID,IAAI,IAAIC,IAAI,EAAE,OAAOD,IAAI,CAACE,aAAa,CAACD,IAAI,CAAC;EACjD,IAAID,IAAI,EAAE,OAAON,WAAW,CAACS,YAAY;EACzC,OAAOT,WAAW,CAACU,WAAW;AAChC,CAAC;AAED,OAAO,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CACrBC,KAAgB,EAChBC,KAAe,EACfC,KAAe,EAEZ;EAAA,IADHC,QAAqB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGX,WAAW;EAEnCQ,KAAK,GAAGA,KAAK,CAACM,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACZ,aAAa,CAACa,CAAC,CAAC,CAAC;EAChDP,KAAK,GAAGA,KAAK,CAACK,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACZ,aAAa,CAACa,CAAC,CAAC,CAAC;EAChD,IAAIC,CAAC,GAAG,CAAC;EACT,IAAIC,CAAC,GAAG,CAAC;EACT,OAAOD,CAAC,GAAGT,KAAK,CAACI,MAAM,IAAIM,CAAC,GAAGT,KAAK,CAACG,MAAM,EAAE;IAC3C,IAAMO,EAAE,GAAGX,KAAK,CAACS,CAAC,CAAC;IACnB,IAAMG,EAAE,GAAGX,KAAK,CAACS,CAAC,CAAC;IACnB,IAAMG,IAAI,GAAGX,QAAQ,CAACS,EAAE,EAAEC,EAAE,CAAC;IAC7B,QAAQC,IAAI;MACV,KAAK1B,WAAW,CAACU,WAAW;QAAE;UAC5BE,KAAK,CAACT,KAAK,EAAE;UACboB,CAAC,EAAE;UACH;QACF;MACA,KAAKvB,WAAW,CAACS,YAAY;QAAE;UAC7BG,KAAK,CAACR,OAAO,EAAE;UACfkB,CAAC,EAAE;UACH;QACF;MACA;QAAS;UACPA,CAAC,EAAE;UACHC,CAAC,EAAE;QACL;IACF;EACF;EACA,OAAOX,KAAK;AACd,CAAC;AAED,OAAO,IAAMe,gBAAgB,GAAGA,CAC9BC,KAAY,EACZC,KAAY,EACZjB,KAAgB,KACb;EACH,IAAMkB,IAAI,GAAGF,KAAiB;EAC9B,IAAMG,IAAI,GAAGF,KAAiB;EAC9B,IAAMhB,KAAK,GAAGiB,IAAI,CAACE,MAAM,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC;EAClD,IAAMrB,KAAK,GAAGiB,IAAI,CAACC,MAAM,CAACC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC;EAClDxB,UAAU,CAACC,KAAK,EAAEC,KAAK,EAAEC,KAAK,CAAC;EAC/B,IAAMsB,IAAI,GAAGC,IAAI,CAACC,SAAS,CAACzB,KAAK,CAAC;EAClC,IAAM0B,IAAI,GAAGF,IAAI,CAACC,SAAS,CAACxB,KAAK,CAAC;EAClC,IAAIsB,IAAI,KAAKG,IAAI,EAAE;EACnB,OAAO;IACLC,GAAG,EAAEJ,IAAI;IACTK,GAAG,EAAEF;EACP,CAAC;AACH,CAAC;AAQD,OAAO,IAAMG,YAAY,GAAGA,CAACd,KAAY,EAAEC,KAAY,EAAEjB,KAAgB,KAAK;EAC5E,IAAIgB,KAAK,YAAY7B,QAAQ,EAAE;IAC7B,OAAO4B,gBAAgB,CAACC,KAAK,EAAEC,KAAK,EAAEjB,KAAK,CAAC;EAC9C;EAEA,IAAIgB,KAAK,YAAY9B,SAAS,EAAE;IAC9B8B,KAAK,GAAGA,KAAK,CAACe,WAAW;EAC3B;EAEA,IAAId,KAAK,YAAY/B,SAAS,EAAE;IAC9B+B,KAAK,GAAGA,KAAK,CAACc,WAAW;EAC3B;EAEA,IAAIf,KAAK,CAACgB,YAAY,CAAC,CAAC,KAAKf,KAAK,CAACe,YAAY,CAAC,CAAC,EAAE;EAEnD,IAAMC,IAAe,GAAG,CAAC,CAAC;EAC1BlC,UAAU,CACRC,KAAK,EACLkC,MAAM,CAACC,IAAI,CAACnB,KAAK,CAACoB,UAAU,CAAC,EAC7BF,MAAM,CAACC,IAAI,CAAClB,KAAK,CAACmB,UAAU,CAAC,EAC7B,CAAC1C,IAAI,EAAEC,IAAI,KAAK;IACd,IAAMmB,IAAI,GAAGrB,WAAW,CAACC,IAAI,EAAEC,IAAI,CAAC;IACpC,QAAQmB,IAAI;MACV,KAAK1B,WAAW,CAACU,WAAW;QAAE;UAC5BmC,IAAI,CAACtC,IAAI,CAAC,GAAG;YACXiC,GAAG,EAAE,EAAE;YACPC,GAAG,EAAEZ,KAAK,CAACmB,UAAU,CAACzC,IAAI,CAAC,CAAC0C,OAAO,CAAC;UACtC,CAAC;UACD;QACF;MACA,KAAKjD,WAAW,CAACS,YAAY;QAAE;UAC7BoC,IAAI,CAACvC,IAAI,CAAC,GAAG;YACXkC,GAAG,EAAEZ,KAAK,CAACoB,UAAU,CAAC1C,IAAI,CAAC,CAAC2C,OAAO,CAAC,CAAC;YACrCR,GAAG,EAAE;UACP,CAAC;UACD;QACF;MACA;QAAS;UACP,IAAMS,MAAM,GAAGtB,KAAK,CAACoB,UAAU,CAAC1C,IAAI,CAAC;UACrC,IAAM6C,MAAM,GAAGtB,KAAK,CAACmB,UAAU,CAACzC,IAAI,CAAC;UACrC,IAAMiC,GAAG,GAAGU,MAAM,CAACD,OAAO,CAAC,CAAC;UAC5B,IAAMR,GAAG,GAAGU,MAAM,CAACF,OAAO,CAAC,CAAC;UAC5B,IAAIT,GAAG,KAAKC,GAAG,EAAE;YACf7B,KAAK,CAACV,OAAO,EAAE;YACf2C,IAAI,CAACvC,IAAI,CAAC,GAAG;cACXkC,GAAG;cACHC;YACF,CAAC;UACH;QACF;IACF;IACA,OAAOf,IAAI;EACb,CACF,CAAC;EACD,IAAIoB,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAAC5B,MAAM,KAAK,CAAC,EAAE;EACpC,OAAO4B,IAAI;AACb,CAAC;AASD,OAAO,IAAMO,aAAa,GAAGA,CAC3BC,OAAgB,EAChBC,OAAgB,EAChB1C,KAAgB,KACb;EACH,IAAM2C,OAAkB,GAAG,CAAC,CAAC;EAC7B,IAAMC,OAAkB,GAAG,CAAC,CAAC;EAC7BH,OAAO,CAACI,SAAS,CAACC,OAAO,CAAEC,CAAC,IAAMJ,OAAO,CAACI,CAAC,CAACC,IAAI,CAAC,GAAGD,CAAE,CAAC;EACvDL,OAAO,CAACG,SAAS,CAACC,OAAO,CAAEC,CAAC,IAAMH,OAAO,CAACG,CAAC,CAACC,IAAI,CAAC,GAAGD,CAAE,CAAC;EAEvDhD,UAAU,CACRC,KAAK,EACLkC,MAAM,CAACC,IAAI,CAACQ,OAAO,CAAC,EACpBT,MAAM,CAACC,IAAI,CAACS,OAAO,CAAC,EACpB,CAAClD,IAAI,EAAEC,IAAI,KAAK;IACd,IAAMmB,IAAI,GAAGrB,WAAW,CAACC,IAAI,EAAEC,IAAI,CAAC;IACpC,IAAImB,IAAI,KAAK,CAAC,EAAE;MACd,IAAMmC,GAAG,GAAGN,OAAO,CAACjD,IAAI,CAAC,CAACwD,SAAS,CAAC,CAAC;MACrC,IAAMC,GAAG,GAAGP,OAAO,CAACjD,IAAI,CAAC,CAACuD,SAAS,CAAC,CAAC;MACrC,IAAID,GAAG,KAAKE,GAAG,EAAE;QACfnD,KAAK,CAACV,OAAO,EAAE;MACjB;IACF;IACA,OAAOwB,IAAI;EACb,CACF,CAAC;EAED,IAAMsC,UAAU,GAAGX,OAAO,CAACS,SAAS,CAAC,CAAC;EACtC,IAAMG,UAAU,GAAGX,OAAO,CAACQ,SAAS,CAAC,CAAC;EACtC,IAAIE,UAAU,KAAKC,UAAU,EAAE;EAE/B,OAAO;IACLzB,GAAG,EAAEwB,UAAU;IACfvB,GAAG,EAAEwB;EACP,CAAC;AACH,CAAC;AAQD,OAAO,IAAMC,aAAa,GAAGA,CAC3Bb,OAAgB,EAChBC,OAAgB,EAChB1C,KAAgB,KACb;EACH,IAAM2C,OAAkB,GAAG,CAAC,CAAC;EAC7B,IAAMC,OAAkB,GAAG,CAAC,CAAC;EAC7BH,OAAO,CAACc,UAAU,CAACT,OAAO,CAAEC,CAAC,IAAMJ,OAAO,CAACI,CAAC,CAACC,IAAI,CAAC,GAAGD,CAAE,CAAC;EACxDL,OAAO,CAACa,UAAU,CAACT,OAAO,CAAEC,CAAC,IAAMH,OAAO,CAACG,CAAC,CAACC,IAAI,CAAC,GAAGD,CAAE,CAAC;EAExDhD,UAAU,CAACC,KAAK,EAAEkC,MAAM,CAACC,IAAI,CAACQ,OAAO,CAAC,EAAET,MAAM,CAACC,IAAI,CAACS,OAAO,CAAC,CAAC;EAE7D,IAAMY,KAAK,GAAGf,OAAO,CAACc,UAAU,CAAClC,GAAG,CAAE0B,CAAC,IAAK;IAC1C,OAAO;MACLC,IAAI,EAAED,CAAC,CAACC,IAAI;MACZS,IAAI,EAAEV,CAAC,CAACU,IAAI,CAACC,QAAQ;MACrBC,QAAQ,EAAEZ,CAAC,CAACY;IACd,CAAC;EACH,CAAC,CAAC;EACF,IAAMC,KAAK,GAAGlB,OAAO,CAACa,UAAU,CAAClC,GAAG,CAAE0B,CAAC,IAAK;IAC1C,OAAO;MACLC,IAAI,EAAED,CAAC,CAACC,IAAI;MACZS,IAAI,EAAEV,CAAC,CAACU,IAAI,CAACC,QAAQ;MACrBC,QAAQ,EAAEZ,CAAC,CAACY;IACd,CAAC;EACH,CAAC,CAAC;EAEF,IAAIlC,IAAI,CAACC,SAAS,CAAC8B,KAAK,CAAC,KAAK/B,IAAI,CAACC,SAAS,CAACkC,KAAK,CAAC,EAAE;EAErD5D,KAAK,CAACV,OAAO,EAAE;EACf,OAAO;IACLsC,GAAG,EAAE4B,KAAK;IACV3B,GAAG,EAAE+B;EACP,CAAC;AACH,CAAC;AAQD,OAAO,IAAMC,gBAAgB,GAAGA,CAC9BpB,OAAgB,EAChBC,OAAgB,EAChB1C,KAAgB,KACb;EAEH,IAAMwD,KAAK,GAAGf,OAAO,CAACqB,SAAS,CAACzC,GAAG,CAAEV,CAAC,IAAK;IACzC,OAAO;MACLoD,UAAU,EAAEpD,CAAC,CAACoD,UAAU;MACxBC,SAAS,EAAErD,CAAC,CAACqD,SAAS;MACtBP,IAAI,EAAE9C,CAAC,CAAC8C,IAAI,CAACC;IACf,CAAC;EACH,CAAC,CAAC;EACF,IAAME,KAAK,GAAGlB,OAAO,CAACoB,SAAS,CAACzC,GAAG,CAAEV,CAAC,IAAK;IACzC,OAAO;MACLoD,UAAU,EAAEpD,CAAC,CAACoD,UAAU;MACxBC,SAAS,EAAErD,CAAC,CAACqD,SAAS;MACtBP,IAAI,EAAE9C,CAAC,CAAC8C,IAAI,CAACC;IACf,CAAC;EACH,CAAC,CAAC;EACF,IAAIjC,IAAI,CAACC,SAAS,CAAC8B,KAAK,CAAC,KAAK/B,IAAI,CAACC,SAAS,CAACkC,KAAK,CAAC,EAAE;EAErD5D,KAAK,CAACV,OAAO,EAAE;EACf,OAAO;IACLsC,GAAG,EAAE4B,KAAK;IACV3B,GAAG,EAAE+B;EACP,CAAC;AACH,CAAC;AAED,OAAO,IAAMK,YAAY,GACvB,oGAAoG;AAEtG,OAAO,IAAMC,UAAU,GAAIjC,IAAa,IAAK;EAC3C,IAAMkC,SAAS,GAAG1C,IAAI,CAACC,SAAS,CAACO,IAAI,CAACkC,SAAS,CAAC,CAACC,OAAO,CAAC,IAAI,KAAK,CAAC;EACnE,YAAAC,MAAA,CACApC,IAAI,CAACe,IAAI,OAAAqB,MAAA,CAAIpC,IAAI,CAACqC,EAAE,OAAAD,MAAA,CAAIpC,IAAI,CAACsC,OAAO,OAAAF,MAAA,CAAIpC,IAAI,CAACuC,OAAO,OAAAH,MAAA,CAAIpC,IAAI,CAACwC,QAAQ,OAAAJ,MAAA,CAAIpC,IAAI,CAACyC,UAAU,OAAAL,MAAA,CAAIpC,IAAI,CAAC0C,QAAQ,OAAAN,MAAA,CAAIpC,IAAI,CAAC2C,YAAY,SAAAP,MAAA,CAAKF,SAAS;AAC9I,CAAC;AAED,OAAO,IAAMU,WAAW,yNAEiF;AAEzG,OAAO,IAAMC,SAAS,GAAI7C,IAAa,WAAAoC,MAAA,CACnCpC,IAAI,CAACe,IAAI,SAAAqB,MAAA,CAAMpC,IAAI,CAACqC,EAAE,SAAAD,MAAA,CAAMpC,IAAI,CAACsC,OAAO,SAAAF,MAAA,CAAMpC,IAAI,CAACuC,OAAO,SAAAH,MAAA,CAC5DpC,IAAI,CAACwC,QAAQ,SAAAJ,MAAA,CACTpC,IAAI,CAACyC,UAAU,SAAAL,MAAA,CAAMpC,IAAI,CAAC0C,QAAQ,SAAAN,MAAA,CACtCpC,IAAI,CAAC2C,YAAY,SAAAP,MAAA,CACb5C,IAAI,CAACC,SAAS,CAACO,IAAI,CAACkC,SAAS,CAAC,OAAI;AAExC,IAAMY,YAAY,GAAI9C,IAAS,IAAK;EAClC,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,IAAM+C,MAAM,GAAGvD,IAAI,CAACC,SAAS,CAACO,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;EAC5C,IAAI+C,MAAM,KAAK,IAAI,EAAE,OAAO,EAAE;EAC9B,YAAAX,MAAA,CAAWW,MAAM,CAACZ,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACtC,CAAC;AAgCD,IAAMa,WAAW,GAAGA,CAACxC,OAAiB,EAAEC,OAAiB,KAAK;EAC5D,IAAI,CAACD,OAAO,IAAI,CAACC,OAAO,EAAE,MAAM,IAAIwC,KAAK,CAAC,kCAAkC,CAAC;EAE7E,IAAMlF,KAAK,GAAGX,UAAU,CAAC,CAAC;EAC1B,IAAM8F,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAI,CAACzC,OAAO,EAAE;MACZ1C,KAAK,CAACR,OAAO,EAAE;IACjB,CAAC,MAAM,IAAI,CAACiD,OAAO,EAAE;MACnBzC,KAAK,CAACT,KAAK,EAAE;IACf,CAAC,MAAM;MACL,IAAIkD,OAAO,CAAC2C,MAAM,KAAK1C,OAAO,CAAC0C,MAAM,EAAEpF,KAAK,CAACV,OAAO,EAAE;IACxD;EACF,CAAC;EAED,IAAI0F,MAAe;EACnBG,WAAW,CAAC,CAAC;EACb,IAAI1C,OAAO,EAAE;IACX,IAAMgC,QAAQ,GAAG/B,OAAO,GACpBqC,YAAY,CAACjD,YAAY,CAACW,OAAO,CAACgB,IAAI,EAAEf,OAAO,CAACe,IAAI,EAAEzD,KAAK,CAAC,CAAC,GAC7D,EAAE;IACN,IAAM0E,UAAU,GAAGhC,OAAO,GACtBqC,YAAY,CAACvC,aAAa,CAACC,OAAO,EAAEC,OAAO,EAAE1C,KAAK,CAAC,CAAC,GACpD,EAAE;IACN,IAAM2E,QAAQ,GAAGjC,OAAO,GACpBqC,YAAY,CAACzB,aAAa,CAACb,OAAO,EAAEC,OAAO,EAAE1C,KAAK,CAAC,CAAC,GACpD,EAAE;IACN,IAAM4E,YAAY,GAAGlC,OAAO,GACxBqC,YAAY,CAAClB,gBAAgB,CAACpB,OAAO,EAAEC,OAAO,EAAE1C,KAAK,CAAC,CAAC,GACvD,EAAE;IACNgF,MAAM,GAAG;MACPhC,IAAI,EAAEP,OAAO,CAACO,IAAI;MAClBsB,EAAE,EAAE7B,OAAO,CAAC6B,EAAE;MACdC,OAAO,EAAE9B,OAAO,CAAC2C,MAAM;MACvBZ,OAAO,EAAE9B,OAAO,GAAGA,OAAO,CAAC0C,MAAM,GAAG,EAAE;MACtCX,QAAQ;MACRC,UAAU;MACVC,QAAQ;MACRC,YAAY;MACZT,SAAS,EAAEnE;IACb,CAAC;EACH,CAAC,MAAM,IAAI,CAACyC,OAAO,IAAIC,OAAO,EAAE;IAC9BsC,MAAM,GAAG;MACPhC,IAAI,EAAEN,OAAO,CAACM,IAAI;MAClBsB,EAAE,EAAE5B,OAAO,CAAC4B,EAAE;MACdC,OAAO,EAAE,EAAE;MACXC,OAAO,EAAE9B,OAAO,CAAC0C,MAAM;MACvBX,QAAQ,EAAE,EAAE;MACZC,UAAU,EAAE,EAAE;MACdC,QAAQ,EAAE,EAAE;MACZC,YAAY,EAAE,EAAE;MAChBT,SAAS,EAAEnE;IACb,CAAC;EACH;EAEA,OAAOgF,MAAM;AACf,CAAC;AAkBD,OAAO,IAAMK,YAAwB,GAAGA,CAACC,KAAK,EAAE7C,OAAO,EAAEC,OAAO,KAC9D,CAACD,OAAO,IACR,CAACC,OAAQ,IACT4C,KAAK,CAACf,OAAO,KAAKe,KAAK,CAACd,OAAO,IAC/B,CAAC,CAACc,KAAK,CAACZ,UAAU,IAClB,CAAC,CAACY,KAAK,CAACb,QAAQ,IAChB,CAAC,CAACa,KAAK,CAACX,QAAQ,IAChB,CAAC,CAACW,KAAK,CAACV,YAAY;AAQtB,OAAO,IAAMW,YAAY,GAAG,SAAfA,YAAYA,CACvBC,KAAgB,EAChBC,KAAgB,EAEb;EAAA,IADHC,OAAmB,GAAAtF,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAGiF,YAAY;EAElC,IAAMM,QAAQ,GAAGA,CAACnF,CAAU,EAAEC,CAAU,KAAKD,CAAC,CAAC8D,EAAE,CAAC1E,aAAa,CAACa,CAAC,CAAC6D,EAAE,CAAC;EAErE,IAAMsB,QAAQ,GAAG1D,MAAM,CAACd,MAAM,CAACoE,KAAK,CAACK,OAAO,CAAC,CAACtF,IAAI,CAACoF,QAAQ,CAAC;EAC5D,IAAMG,QAAQ,GAAG5D,MAAM,CAACd,MAAM,CAACqE,KAAK,CAACI,OAAO,CAAC,CAACtF,IAAI,CAACoF,QAAQ,CAAC;EAE5D,IAAMI,OAAO,GAAGH,QAAQ,CAACvF,MAAM;EAC/B,IAAM2F,OAAO,GAAGF,QAAQ,CAACzF,MAAM;EAC/B,IAAI4F,MAAM,GAAG,CAAC;EACd,IAAIC,MAAM,GAAG,CAAC;EACd,IAAMjE,IAAe,GAAG,EAAE;EAE1B,OAAOgE,MAAM,GAAGF,OAAO,IAAIG,MAAM,GAAGF,OAAO,EAAE;IAC3C,IAAIvD,QAA4B,GAAGmD,QAAQ,CAACK,MAAM,CAAC;IACnD,IAAIvD,QAA4B,GAAGoD,QAAQ,CAACI,MAAM,CAAC;IAEnD,IAAI,CAACzD,QAAO,EAAE;MACZyD,MAAM,EAAE;IACV,CAAC,MAAM,IAAI,CAACxD,QAAO,EAAE;MACnBuD,MAAM,EAAE;IACV,CAAC,MAAM,IAAIxD,QAAO,CAAC6B,EAAE,GAAG5B,QAAO,CAAC4B,EAAE,EAAE;MAClC5B,QAAO,GAAGpC,SAAS;MACnB2F,MAAM,EAAE;IACV,CAAC,MAAM,IAAIvD,QAAO,CAAC4B,EAAE,GAAG7B,QAAO,CAAC6B,EAAE,EAAE;MAClC7B,QAAO,GAAGnC,SAAS;MACnB4F,MAAM,EAAE;IACV,CAAC,MAAM;MACLD,MAAM,EAAE;MACRC,MAAM,EAAE;IACV;IAEA,IAAMZ,MAAK,GAAGL,WAAW,CAACxC,QAAO,EAAEC,QAAO,CAAC;IAC3C,IAAIgD,OAAO,CAACJ,MAAK,EAAE7C,QAAO,EAAEC,QAAO,CAAC,EAAE;MACpCT,IAAI,CAACkE,IAAI,CAACb,MAAK,CAAC;IAClB;EACF;EACA,OAAOrD,IAAI;AACb,CAAC"}
|
package/lib/esm/swift.gen.js
CHANGED
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.SwiftGen = void 0;
|
|
7
|
-
var _sdkModels = require("./sdkModels");
|
|
8
|
-
var _codeGen = require("./codeGen");
|
|
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(
|
|
11
|
-
function _toPrimitive(
|
|
12
|
-
|
|
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 { EnumType, TypeOfType, describeParam, mayQuote, strBody, typeOfType } from './sdkModels';
|
|
5
|
+
import { CodeGen, commentBlock } from './codeGen';
|
|
6
|
+
export class SwiftGen extends CodeGen {
|
|
13
7
|
constructor() {
|
|
14
8
|
super(...arguments);
|
|
15
9
|
_defineProperty(this, "anyString", true);
|
|
@@ -62,9 +56,9 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
62
56
|
var commentStr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ' * ';
|
|
63
57
|
if (this.noComment || !text) return '';
|
|
64
58
|
if (commentStr === ' ') {
|
|
65
|
-
return "".concat(indent, "/**\n\n").concat(
|
|
59
|
+
return "".concat(indent, "/**\n\n").concat(commentBlock(text, indent, commentStr), "\n").concat(indent, " */\n");
|
|
66
60
|
}
|
|
67
|
-
return "".concat(indent, "/**\n").concat(
|
|
61
|
+
return "".concat(indent, "/**\n").concat(commentBlock(text, indent, commentStr), "\n").concat(indent, " */\n");
|
|
68
62
|
}
|
|
69
63
|
beginRegion(indent, description) {
|
|
70
64
|
return "".concat(indent, "// MARK ").concat(description);
|
|
@@ -76,7 +70,7 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
76
70
|
return true;
|
|
77
71
|
}
|
|
78
72
|
itemType(property) {
|
|
79
|
-
if (
|
|
73
|
+
if (typeOfType(property.type) === TypeOfType.Array && property.type.elementType) {
|
|
80
74
|
return property.type.elementType;
|
|
81
75
|
}
|
|
82
76
|
return property.type;
|
|
@@ -97,7 +91,7 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
97
91
|
}
|
|
98
92
|
declareProperty(indent, property) {
|
|
99
93
|
var optional = property.required ? '' : '?';
|
|
100
|
-
if (property.name ===
|
|
94
|
+
if (property.name === strBody) {
|
|
101
95
|
property.type.refCount++;
|
|
102
96
|
return this.commentHeader(indent, property.description || 'body parameter for dynamically created request type') + "".concat(indent, "var ").concat(this.reserve(property.name), ": ").concat(property.type.name).concat(optional);
|
|
103
97
|
}
|
|
@@ -106,7 +100,7 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
106
100
|
var munge = '';
|
|
107
101
|
var declaration = "".concat(indent, "public var ").concat(this.reserve(property.name), ": ").concat(type.name).concat(optional, "\n");
|
|
108
102
|
if (specialHandling) {
|
|
109
|
-
var ra =
|
|
103
|
+
var ra = typeOfType(property.type) === TypeOfType.Array;
|
|
110
104
|
var privy = this.reserve('_' + property.name);
|
|
111
105
|
var bump = this.bumper(indent);
|
|
112
106
|
var setter = property.required ? ra ? "".concat(privy, " = newValue.map { ").concat(specialHandling, ".init($0) }") : "".concat(privy, " = ").concat(specialHandling, ".init(newValue)") : ra ? "if let v = newValue { ".concat(privy, " = v.map { ").concat(specialHandling, ".init($0) } } else { ").concat(privy, " = nil }") : "".concat(privy, " = newValue.map(").concat(specialHandling, ".init)");
|
|
@@ -117,14 +111,14 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
117
111
|
return munge + this.commentHeader(indent, this.describeProperty(property)) + declaration;
|
|
118
112
|
}
|
|
119
113
|
paramComment(param, mapped) {
|
|
120
|
-
return "@param {".concat(mapped.name, "} ").concat(param.name, " ").concat(
|
|
114
|
+
return "@param {".concat(mapped.name, "} ").concat(param.name, " ").concat(describeParam(param));
|
|
121
115
|
}
|
|
122
116
|
declareParameter(indent, method, param) {
|
|
123
|
-
var type = param.location ===
|
|
117
|
+
var type = param.location === strBody ? this.writeableType(param.type, method) || param.type : param.type;
|
|
124
118
|
var mapped = this.typeMap(type);
|
|
125
119
|
var pOpt = '';
|
|
126
120
|
var line = '';
|
|
127
|
-
if (param.location ===
|
|
121
|
+
if (param.location === strBody) {
|
|
128
122
|
mapped.name = "".concat(mapped.name);
|
|
129
123
|
}
|
|
130
124
|
if (!param.required) {
|
|
@@ -138,7 +132,7 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
138
132
|
var propName = this.reserve(prop.name);
|
|
139
133
|
var specialHandling = this.getSpecialHandling(prop);
|
|
140
134
|
if (specialHandling) {
|
|
141
|
-
var ra =
|
|
135
|
+
var ra = typeOfType(prop.type) === TypeOfType.Array;
|
|
142
136
|
var varName = this.privy(propName);
|
|
143
137
|
if (prop.required) {
|
|
144
138
|
if (ra) {
|
|
@@ -155,7 +149,7 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
155
149
|
return "".concat(this.it(propName), " = ").concat(propName);
|
|
156
150
|
}
|
|
157
151
|
construct(indent, type) {
|
|
158
|
-
if (type instanceof
|
|
152
|
+
if (type instanceof EnumType) return '';
|
|
159
153
|
indent = this.bumper(indent);
|
|
160
154
|
var bump = this.bumper(indent);
|
|
161
155
|
var args = [];
|
|
@@ -276,14 +270,14 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
276
270
|
}
|
|
277
271
|
declareEnumValue(indent, value) {
|
|
278
272
|
var quote = typeof value === 'string' ? this.codeQuote : '';
|
|
279
|
-
return "".concat(indent, "case ").concat(
|
|
273
|
+
return "".concat(indent, "case ").concat(mayQuote(value), " = ").concat(quote).concat(value).concat(quote);
|
|
280
274
|
}
|
|
281
275
|
typeSignature(indent, type) {
|
|
282
276
|
var recursive = type.isRecursive();
|
|
283
277
|
var typeName = recursive ? 'class' : 'struct';
|
|
284
278
|
var access = recursive ? 'open' : 'public';
|
|
285
279
|
var baseClass = 'SDKModel';
|
|
286
|
-
var isEnum = type instanceof
|
|
280
|
+
var isEnum = type instanceof EnumType;
|
|
287
281
|
if (isEnum) {
|
|
288
282
|
typeName = 'enum';
|
|
289
283
|
var num = type;
|
|
@@ -525,5 +519,4 @@ class SwiftGen extends _codeGen.CodeGen {
|
|
|
525
519
|
}
|
|
526
520
|
}
|
|
527
521
|
}
|
|
528
|
-
exports.SwiftGen = SwiftGen;
|
|
529
522
|
//# sourceMappingURL=swift.gen.js.map
|
package/lib/esm/swift.gen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swift.gen.js","names":["_sdkModels","require","_codeGen","_defineProperty","obj","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","call","TypeError","Number","SwiftGen","CodeGen","constructor","arguments","Set","supportsMultiApi","methodsPrologue","_indent","concat","warnEditing","packageName","indentStr","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","reserve","name","keywords","has","sdkFileName","baseFileName","fileName","commentHeader","indent","text","commentStr","length","noComment","commentBlock","beginRegion","description","endRegion","_description","isIdProp","_property","itemType","property","typeOfType","type","TypeOfType","Array","elementType","useAnyString","typeCheck","toLowerCase","anyString","useAnyInt","privy","replace","getSpecialHandling","declareProperty","optional","required","strBody","refCount","typeMap","specialHandling","munge","declaration","ra","bump","bumper","setter","getter","describeProperty","paramComment","param","mapped","describeParam","declareParameter","method","location","writeableType","pOpt","line","default","initProp","prop","propName","varName","it","construct","EnumType","args","posArgs","inits","posInits","props","typeProperties","forEach","push","declareConstructorArg","declarePositionalArg","namedInit","join","argDelimiter","posInit","some","p","mappedType","propType","nullStr","methodHeaderDeclaration","_method$description","streamer","resultType","returnType","head","trim","headComment","httpMethod","endpoint","fragment","requestType","requestTypeName","params","allParams","paramDelimiter","responseIsBoth","responseIsBinary","dep","deprecated","header","methodSignature","encodePathParams","encodings","pathParams","declareMethod","httpCall","streamerSignature","declareStreamer","streamCall","codingKeys","special","keys","values","properties","map","alias","useIt","jsonName","hasSpecialNeeds","bump2","cases","declareEnumValue","quote","codeQuote","mayQuote","typeSignature","recursive","isRecursive","typeName","access","baseClass","isEnum","num","needClass","errorResponses","_method","httpPath","path","prefix","indexOf","tweak","argGroup","hash","queryGroup","getParams","asAny","castIt","argList","argFill","current","httpArgs","request","useRequest","result","bodyArg","errors","summary","typeNames","countError","names","api","types","Error","filter","intrinsic","ns","swiftTypes","Group","Locale","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","className","mapName","JSON","stringify","exports"],"sources":["../../src/swift.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 EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels'\nimport {\n describeParam,\n EnumType,\n mayQuote,\n strBody,\n TypeOfType,\n typeOfType,\n} from './sdkModels'\nimport type { IMappedType } from './codeGen'\nimport { CodeGen, commentBlock } from './codeGen'\n\nexport class SwiftGen extends CodeGen {\n // Use AnyString JSON parser for number or string ids\n anyString = true\n codePath = './swift/'\n packagePath = 'looker'\n itself = 'self'\n fileExtension = '.swift'\n commentStr = '// '\n nullStr = 'nil'\n transport = 'transport'\n\n argDelimiter = ', '\n paramDelimiter = ',\\n'\n propDelimiter = '\\n'\n enumDelimiter = '\\n'\n codeQuote = '\"'\n\n indentStr = ' '\n endTypeStr = `\\n}`\n needsRequestTypes = false\n willItStream = true\n keywords = new Set<string>([\n 'associatedtype',\n 'class',\n 'deinit',\n 'enum',\n 'extension',\n 'fileprivate',\n 'func',\n 'import',\n 'init',\n 'inout',\n 'internal',\n 'let',\n 'open',\n 'operator',\n 'private',\n 'protocol',\n 'public',\n 'static',\n 'struct',\n 'subscript',\n 'typealias',\n 'var',\n 'break',\n 'case',\n 'continue',\n 'default',\n 'defer',\n 'do',\n 'else',\n 'fallthrough',\n 'for',\n 'guard',\n 'if',\n 'in',\n 'repeat',\n 'return',\n 'switch',\n 'where',\n 'while',\n 'as',\n 'Any',\n 'catch',\n 'false',\n 'is',\n 'nil',\n 'rethrows',\n 'super',\n 'self',\n 'Self',\n 'throw',\n 'throws',\n 'true',\n 'try',\n '_',\n '#available',\n '#colorLiteral',\n '#column',\n '#else',\n '#elseif',\n '#endif',\n '#file',\n '#fileLiteral',\n '#function',\n '#if',\n '#imageLiteral',\n '#line',\n '#selector',\n 'and #sourceLocation',\n 'associativity',\n 'convenience',\n 'dynamic',\n 'didSet',\n 'final',\n 'get',\n 'infix',\n 'indirect',\n 'lazy',\n 'left',\n 'mutating',\n 'none',\n 'nonmutating',\n 'optional',\n 'override',\n 'postfix',\n 'precedence',\n 'prefix',\n 'Protocol',\n // 'required', removing this from the list because Swift complains about it being escaped\n 'right',\n 'set',\n 'Type',\n 'unowned',\n 'weak',\n 'willSet',\n ])\n\n supportsMultiApi(): boolean {\n return false\n }\n\n methodsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}: APIMethods {\n\n${this.indentStr}public lazy var stream = ${this.packageName}Stream(authSession)\n`\n }\n\n streamsPrologue(_indent: string): string {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}Stream: APIMethods {\n`\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}'\n }\n\n modelsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n`\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n'\n }\n\n reserve(name: string) {\n if (this.keywords.has(name)) {\n return `\\`${name}\\``\n }\n return name\n }\n\n sdkFileName(baseFileName: string) {\n // return this.fileName(`sdk/${baseFileName}${this.apiRef}`)\n return this.fileName(`sdk/${baseFileName}`)\n }\n\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}// MARK ${description}`\n }\n\n endRegion(_indent: string, _description: string): string {\n return '' // No end MARK in Swift, and XCode appears to no longer process MARKs anyway\n }\n\n isIdProp(_property: IProperty) {\n // sadly we can't scope fuzzy decoding to only id fields because some \"id\" refs are not named correctly\n // TODO just return true until we figure out a generic solution for fuzzy JSON decoding\n return true\n // const nameCheck = property.name.toLowerCase()\n // return (\n // nameCheck === 'id' ||\n // nameCheck.endsWith('_id') ||\n // nameCheck.endsWith('_ids')\n // )\n }\n\n itemType(property: IProperty) {\n if (\n typeOfType(property.type) === TypeOfType.Array &&\n property.type.elementType\n ) {\n return property.type.elementType\n }\n return property.type\n }\n\n /**\n * true if this property should use AnyString\n * @param property to check\n */\n useAnyString(property: IProperty) {\n const typeCheck = this.itemType(property).name.toLowerCase()\n return this.anyString && typeCheck === 'string' && this.isIdProp(property)\n }\n\n /**\n * true if this property should use AnyInt\n * @param property to check\n */\n useAnyInt(property: IProperty) {\n const typeCheck = this.itemType(property).name.toLowerCase()\n return (\n this.anyString &&\n (typeCheck === 'integer' || typeCheck === 'int64') &&\n this.isIdProp(property)\n )\n }\n\n /**\n * Private version of the name (_ prefix)\n *\n * Strips reserved character markings from the name if present\n *\n * @param name to privatize\n */\n privy(name: string) {\n return this.reserve('_' + name.replace(/`/g, ''))\n }\n\n getSpecialHandling(property: IProperty) {\n return this.useAnyString(property)\n ? 'AnyString'\n : this.useAnyInt(property)\n ? 'AnyInt'\n : ''\n }\n\n declareProperty(indent: string, property: IProperty) {\n // const optional = (property.nullable || !property.required) ? '?' : ''\n const optional = property.required ? '' : '?'\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}var ${this.reserve(property.name)}: ${\n property.type.name\n }${optional}`\n )\n }\n const type = this.typeMap(property.type)\n const specialHandling = this.getSpecialHandling(property)\n let munge = ''\n let declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional}\\n`\n if (specialHandling) {\n const ra = typeOfType(property.type) === TypeOfType.Array\n const privy = this.reserve('_' + property.name)\n const bump = this.bumper(indent)\n const setter = property.required\n ? ra\n ? `${privy} = newValue.map { ${specialHandling}.init($0) }`\n : `${privy} = ${specialHandling}.init(newValue)`\n : ra\n ? `if let v = newValue { ${privy} = v.map { ${specialHandling}.init($0) } } else { ${privy} = nil }`\n : `${privy} = newValue.map(${specialHandling}.init)`\n const getter = property.required\n ? ra\n ? `${privy}.map { $0.value }`\n : `${privy}.value`\n : ra\n ? `if let v = ${privy} { return v.map { $0.value } } else { return nil }`\n : `${privy}${optional}.value`\n munge = ra\n ? `${indent}private var ${privy}: [${specialHandling}]${optional}\\n`\n : `${indent}private var ${privy}: ${specialHandling}${optional}\\n`\n declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional} {\n${bump}get { ${getter} }\n${bump}set { ${setter} }\n${indent}}\\n`\n }\n return (\n munge +\n this.commentHeader(indent, this.describeProperty(property)) +\n declaration\n )\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 type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type\n const mapped = this.typeMap(type)\n let pOpt = ''\n let line = ''\n if (param.location === strBody) {\n mapped.name = `${mapped.name}`\n }\n if (!param.required) {\n pOpt = '?'\n } else {\n line = '_ '\n }\n return (\n this.commentHeader(indent, this.paramComment(param, mapped)) +\n `${indent}${line}${this.reserve(param.name)}: ${mapped.name}${pOpt}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n )\n }\n\n initProp(prop: IProperty) {\n const propName = this.reserve(prop.name)\n const specialHandling = this.getSpecialHandling(prop)\n if (specialHandling) {\n const ra = typeOfType(prop.type) === TypeOfType.Array\n const varName = this.privy(propName)\n if (prop.required) {\n if (ra) {\n return `${this.it(\n varName\n )} = ${propName}.map { ${specialHandling}.init($0) }`\n }\n return `${this.it(varName)} = ${specialHandling}.init(${propName})`\n } else {\n if (ra) {\n return `if let v = ${propName} { ${varName} = v.map { ${specialHandling}.init($0) } } else { ${varName} = nil }`\n }\n return `${this.it(varName)} = ${propName}.map(${specialHandling}.init)`\n }\n }\n return `${this.it(propName)} = ${propName}`\n }\n\n construct(indent: string, type: IType) {\n if (type instanceof EnumType) return ''\n indent = this.bumper(indent)\n const bump = this.bumper(indent)\n const args: string[] = []\n const posArgs: string[] = []\n const inits: string[] = []\n const posInits: string[] = []\n const props = this.typeProperties(type)\n props.forEach((prop) => {\n const propName = this.reserve(prop.name)\n args.push(this.declareConstructorArg('', prop))\n posArgs.push(this.declarePositionalArg('', prop))\n inits.push(`${bump}${this.initProp(prop)}`)\n posInits.push(`${propName}: ${propName}`)\n })\n const namedInit =\n `${indent}public init(` +\n `${args.join(this.argDelimiter)}) {\\n` +\n inits.join('\\n') +\n `\\n${indent}}`\n let posInit = ''\n if (props.some((p) => p.required)) {\n posInit =\n `\\n${indent}public init(` +\n `${posArgs.join(this.argDelimiter)}) {\\n` +\n `${bump}${this.it('init')}(${posInits.join(', ')})` +\n `\\n${indent}}\\n`\n }\n return `\\n${namedInit}\\n${posInit}`\n }\n\n declarePositionalArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type)\n let propType: string\n let line = '_ '\n if (property.required) {\n propType = mappedType.name\n } else {\n line = ''\n propType = `${mappedType.name}? = ${this.nullStr}`\n }\n const propName = this.reserve(property.name)\n return `${indent}${line}${propName}: ${propType}`\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type)\n let propType: string\n if (property.required) {\n propType = mappedType.name\n } else {\n propType = `${mappedType.name}? = ${this.nullStr}`\n }\n const propName = this.reserve(property.name)\n return `${indent}${propName}: ${propType}`\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type)\n const resultType = streamer ? 'Data' : type.name\n const returnType =\n type.name === 'Void' ? 'Voidable' : `SDKResponse<${resultType}, SDKError>`\n const head = method.description?.trim()\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`\n let fragment\n const requestType = this.requestTypeName(method)\n const bump = indent + this.indentStr\n\n if (requestType) {\n // use the request type that will be generated in models.ts\n fragment = `request: I${requestType}`\n } else {\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 fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : ''\n }\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 const dep = method.deprecated ? `${indent}@available(*, deprecated)\\n` : ''\n const header =\n this.commentHeader(indent, headComment) +\n dep +\n `${indent}public func ${method.name}(`\n\n return (\n header +\n fragment +\n `${\n fragment ? ',' : ''\n }\\n${bump}options: ITransportSettings? = nil\\n${indent}) -> ${returnType} {\\n`\n )\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false)\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = ''\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n // For swift, just encode all path params because of awkward variable renames\n encodings += `${indent}let 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 codingKeys(indent: string, type: IType) {\n let special = false\n\n const keys = Object.values(type.properties).map((p) => {\n let name = this.reserve(p.name)\n let alias = ''\n const useIt = this.useAnyString(p) || this.useAnyInt(p)\n if (useIt) {\n name = this.privy(name)\n special = true\n alias = p.jsonName\n } else if (p.hasSpecialNeeds) {\n special = true\n alias = p.jsonName\n }\n return name + (alias ? ` = \"${alias}\"` : '')\n })\n\n if (!special) return ''\n const bump = this.bumper(indent)\n const bump2 = this.bumper(bump)\n const cases = keys.join(`\\n${bump2}case `)\n\n return (\n `\\n${bump}private enum CodingKeys : String, CodingKey {` +\n `\\n${bump2}case ${cases}` +\n `\\n${bump}}\\n`\n )\n }\n\n // declareType(indent: string, type: IType): string {\n // return super.declareType(this.bumper(indent), type)\n // }\n declareEnumValue(indent: string, value: EnumValueType) {\n const quote = typeof value === 'string' ? this.codeQuote : ''\n return `${indent}case ${mayQuote(value)} = ${quote}${value}${quote}`\n }\n\n typeSignature(indent: string, type: IType) {\n const recursive = type.isRecursive()\n let typeName = recursive ? 'class' : 'struct'\n const access = recursive ? 'open' : 'public'\n let baseClass = 'SDKModel'\n const isEnum = type instanceof EnumType\n if (isEnum) {\n typeName = 'enum'\n const num = type as EnumType\n const mapped = this.typeMap(num.elementType)\n baseClass = `${mapped.name}, Codable`\n }\n\n const keys = this.codingKeys(indent, type)\n\n const needClass = recursive\n ? '\\nRecursive type references must use Class instead of Struct'\n : ''\n const mapped = this.typeMap(type)\n return (\n this.commentHeader(indent, type.description + needClass) +\n `${indent}${access} ${typeName} ${mapped.name}: ${baseClass} {\\n${keys}`\n )\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n // const results: string[] = method.errorResponses\n // .map(r => `${r.type.name}`)\n // return results.join(' | ')\n // TODO figure out how to express Union error type responses\n return 'SDKError'\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || ''\n if (path.indexOf('{') >= 0) {\n let tweak = path.replace(/{/gi, '\\\\(path_' + prefix)\n tweak = tweak.replace(/}/gi, ')')\n return `\"${tweak}\"`\n }\n return `\"${path}\"`\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr\n const hash: string[] = []\n for (const arg of args) {\n if (prefix) {\n hash.push(`\"${arg}\": ${prefix}${arg}`)\n } else {\n hash.push(`\"${arg}\": ${arg}`)\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`\n }\n\n queryGroup(indent: string, method: IMethod, prefix?: string) {\n const params = method.getParams('query')\n if (!params || params.length === 0) return this.nullStr\n const hash: string[] = []\n for (const param of params) {\n const arg = this.asAny(param)\n if (prefix) {\n hash.push(`\"${param.name}\": ${prefix}${arg}`)\n } else {\n hash.push(`\"${param.name}\": ${arg}`)\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`\n }\n\n asAny(param: IParameter): Arg {\n let castIt\n if (param.type.elementType) {\n castIt = true\n } else {\n const mapped = this.typeMap(param.type)\n switch (mapped.name.toLowerCase()) {\n case 'date':\n case 'datetime': // case 'url': case 'uri':\n case 'object':\n case 'bool':\n castIt = true\n break\n default:\n castIt = false\n break\n }\n }\n return param.name + (castIt ? ' as Any?' : '')\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 /**\n * this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n * @param {string} current accumulator\n * @param {string} args names of parameters\n * @returns {string} accumulated argument list\n */\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 /**\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 * @param {string} indent\n * @param {IMethod} method\n * @returns {string}\n */\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : ''\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options')\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg\n ? `try! self.encode(${request}${method.bodyArg})`\n : this.nullStr\n )\n result = this.argFill(result, this.queryGroup(indent, method, request))\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 bump = this.bumper(indent)\n const args = this.httpArgs(bump, method)\n const errors = this.errorResponses(indent, method)\n return `${indent}let result: SDKResponse<${\n type.name\n }, ${errors}> = ${this.it(method.httpMethod.toLowerCase())}(${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})\n${indent}return result`\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 `${indent}let result: SDKResponse<Data, ${errors}> = ${this.it(\n method.httpMethod.toLowerCase()\n )}(${this.httpPath(method.endpoint, request)}${args ? ', ' + args : ''})\n${indent}return result`\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 ns = `api${this.apiRef}.`\n // const ns = `Looker.`\n const ns = 'Lk'\n\n const swiftTypes: Record<string, IMappedType> = {\n Error: { default: '', name: `${ns}Error` },\n Group: { default: '', name: `${ns}Group` },\n Locale: { default: '', name: `${ns}Locale` },\n any: { default: this.nullStr, name: 'AnyCodable' },\n boolean: { default: this.nullStr, name: 'Bool' },\n byte: { default: this.nullStr, name: 'binary' },\n date: { default: this.nullStr, name: 'Date' },\n datetime: { default: this.nullStr, name: 'Date' },\n double: { default: this.nullStr, name: 'Double' },\n float: { default: this.nullStr, name: 'Float' },\n int32: { default: this.nullStr, name: 'Int32' },\n int64: { default: this.nullStr, name: 'Int64' },\n integer: { default: this.nullStr, name: 'Int' },\n number: { default: this.nullStr, name: 'Double' },\n object: { default: this.nullStr, name: 'Any' },\n password: { default: this.nullStr, name: 'Password' },\n string: { default: this.nullStr, name: 'String' },\n uri: { default: this.nullStr, name: 'URI' },\n url: { default: this.nullStr, name: 'URL' },\n void: { default: '', name: 'Voidable' },\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: '[]', name: `[${map.name}]` }\n case 'HashType': {\n const mapName =\n type.elementType.name === 'string' ? 'AnyCodable' : map.name // TODO fix bad API spec, like MergeQuery vis_config\n\n return { default: 'nil', name: `StringDictionary<${mapName}>` }\n }\n case 'DelimArrayType':\n return { default: 'nil', name: `DelimArray<${map.name}>` }\n case 'EnumType':\n return { default: 'nil', 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 swiftTypes[type.name] || { default: '', name: `${type.name}` } // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.')\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"swift.gen.js","names":["EnumType","TypeOfType","describeParam","mayQuote","strBody","typeOfType","CodeGen","commentBlock","SwiftGen","constructor","arguments","_defineProperty","Set","supportsMultiApi","methodsPrologue","_indent","concat","warnEditing","packageName","indentStr","streamsPrologue","methodsEpilogue","modelsPrologue","modelsEpilogue","reserve","name","keywords","has","sdkFileName","baseFileName","fileName","commentHeader","indent","text","commentStr","length","undefined","noComment","beginRegion","description","endRegion","_description","isIdProp","_property","itemType","property","type","Array","elementType","useAnyString","typeCheck","toLowerCase","anyString","useAnyInt","privy","replace","getSpecialHandling","declareProperty","optional","required","refCount","typeMap","specialHandling","munge","declaration","ra","bump","bumper","setter","getter","describeProperty","paramComment","param","mapped","declareParameter","method","location","writeableType","pOpt","line","default","initProp","prop","propName","varName","it","construct","args","posArgs","inits","posInits","props","typeProperties","forEach","push","declareConstructorArg","declarePositionalArg","namedInit","join","argDelimiter","posInit","some","p","mappedType","propType","nullStr","methodHeaderDeclaration","_method$description","streamer","resultType","returnType","head","trim","headComment","httpMethod","endpoint","fragment","requestType","requestTypeName","params","allParams","paramDelimiter","responseIsBoth","responseIsBinary","dep","deprecated","header","methodSignature","encodePathParams","encodings","pathParams","declareMethod","httpCall","streamerSignature","declareStreamer","streamCall","codingKeys","special","keys","Object","values","properties","map","alias","useIt","jsonName","hasSpecialNeeds","bump2","cases","declareEnumValue","value","quote","codeQuote","typeSignature","recursive","isRecursive","typeName","access","baseClass","isEnum","num","needClass","errorResponses","_method","httpPath","path","prefix","indexOf","tweak","argGroup","hash","arg","queryGroup","getParams","asAny","castIt","argList","argFill","current","httpArgs","request","useRequest","result","bodyArg","errors","summary","typeNames","countError","names","api","types","Error","filter","intrinsic","ns","swiftTypes","Group","Locale","any","boolean","byte","date","datetime","double","float","int32","int64","integer","number","object","password","string","uri","url","void","className","mapName","JSON","stringify"],"sources":["../../src/swift.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 EnumValueType,\n IMethod,\n IParameter,\n IProperty,\n IType,\n} from './sdkModels';\nimport {\n EnumType,\n TypeOfType,\n describeParam,\n mayQuote,\n strBody,\n typeOfType,\n} from './sdkModels';\nimport type { IMappedType } from './codeGen';\nimport { CodeGen, commentBlock } from './codeGen';\n\nexport class SwiftGen extends CodeGen {\n // Use AnyString JSON parser for number or string ids\n anyString = true;\n codePath = './swift/';\n packagePath = 'looker';\n itself = 'self';\n fileExtension = '.swift';\n commentStr = '// ';\n nullStr = 'nil';\n transport = 'transport';\n\n argDelimiter = ', ';\n paramDelimiter = ',\\n';\n propDelimiter = '\\n';\n enumDelimiter = '\\n';\n codeQuote = '\"';\n\n indentStr = ' ';\n endTypeStr = `\\n}`;\n needsRequestTypes = false;\n willItStream = true;\n keywords = new Set<string>([\n 'associatedtype',\n 'class',\n 'deinit',\n 'enum',\n 'extension',\n 'fileprivate',\n 'func',\n 'import',\n 'init',\n 'inout',\n 'internal',\n 'let',\n 'open',\n 'operator',\n 'private',\n 'protocol',\n 'public',\n 'static',\n 'struct',\n 'subscript',\n 'typealias',\n 'var',\n 'break',\n 'case',\n 'continue',\n 'default',\n 'defer',\n 'do',\n 'else',\n 'fallthrough',\n 'for',\n 'guard',\n 'if',\n 'in',\n 'repeat',\n 'return',\n 'switch',\n 'where',\n 'while',\n 'as',\n 'Any',\n 'catch',\n 'false',\n 'is',\n 'nil',\n 'rethrows',\n 'super',\n 'self',\n 'Self',\n 'throw',\n 'throws',\n 'true',\n 'try',\n '_',\n '#available',\n '#colorLiteral',\n '#column',\n '#else',\n '#elseif',\n '#endif',\n '#file',\n '#fileLiteral',\n '#function',\n '#if',\n '#imageLiteral',\n '#line',\n '#selector',\n 'and #sourceLocation',\n 'associativity',\n 'convenience',\n 'dynamic',\n 'didSet',\n 'final',\n 'get',\n 'infix',\n 'indirect',\n 'lazy',\n 'left',\n 'mutating',\n 'none',\n 'nonmutating',\n 'optional',\n 'override',\n 'postfix',\n 'precedence',\n 'prefix',\n 'Protocol',\n // 'required', removing this from the list because Swift complains about it being escaped\n 'right',\n 'set',\n 'Type',\n 'unowned',\n 'weak',\n 'willSet',\n ]);\n\n supportsMultiApi(): boolean {\n return false;\n }\n\n methodsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}: APIMethods {\n\n${this.indentStr}public lazy var stream = ${this.packageName}Stream(authSession)\n`;\n }\n\n streamsPrologue(_indent: string): string {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n\n@available(OSX 10.15, *)\nopen class ${this.packageName}Stream: APIMethods {\n`;\n }\n\n methodsEpilogue(_indent: string) {\n return '\\n}';\n }\n\n modelsPrologue(_indent: string) {\n return `\n/// ${this.warnEditing()}\n\nimport Foundation\n`;\n }\n\n modelsEpilogue(_indent: string) {\n return '\\n';\n }\n\n reserve(name: string) {\n if (this.keywords.has(name)) {\n return `\\`${name}\\``;\n }\n return name;\n }\n\n sdkFileName(baseFileName: string) {\n // return this.fileName(`sdk/${baseFileName}${this.apiRef}`)\n return this.fileName(`sdk/${baseFileName}`);\n }\n\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}// MARK ${description}`;\n }\n\n endRegion(_indent: string, _description: string): string {\n return ''; // No end MARK in Swift, and XCode appears to no longer process MARKs anyway\n }\n\n isIdProp(_property: IProperty) {\n // sadly we can't scope fuzzy decoding to only id fields because some \"id\" refs are not named correctly\n // TODO just return true until we figure out a generic solution for fuzzy JSON decoding\n return true;\n // const nameCheck = property.name.toLowerCase()\n // return (\n // nameCheck === 'id' ||\n // nameCheck.endsWith('_id') ||\n // nameCheck.endsWith('_ids')\n // )\n }\n\n itemType(property: IProperty) {\n if (\n typeOfType(property.type) === TypeOfType.Array &&\n property.type.elementType\n ) {\n return property.type.elementType;\n }\n return property.type;\n }\n\n /**\n * true if this property should use AnyString\n * @param property to check\n */\n useAnyString(property: IProperty) {\n const typeCheck = this.itemType(property).name.toLowerCase();\n return this.anyString && typeCheck === 'string' && this.isIdProp(property);\n }\n\n /**\n * true if this property should use AnyInt\n * @param property to check\n */\n useAnyInt(property: IProperty) {\n const typeCheck = this.itemType(property).name.toLowerCase();\n return (\n this.anyString &&\n (typeCheck === 'integer' || typeCheck === 'int64') &&\n this.isIdProp(property)\n );\n }\n\n /**\n * Private version of the name (_ prefix)\n *\n * Strips reserved character markings from the name if present\n *\n * @param name to privatize\n */\n privy(name: string) {\n return this.reserve('_' + name.replace(/`/g, ''));\n }\n\n getSpecialHandling(property: IProperty) {\n return this.useAnyString(property)\n ? 'AnyString'\n : this.useAnyInt(property)\n ? 'AnyInt'\n : '';\n }\n\n declareProperty(indent: string, property: IProperty) {\n // const optional = (property.nullable || !property.required) ? '?' : ''\n const optional = property.required ? '' : '?';\n if (property.name === strBody) {\n // TODO refactor this hack to track context when the body parameter is created for the request type\n property.type.refCount++;\n return (\n this.commentHeader(\n indent,\n property.description ||\n 'body parameter for dynamically created request type'\n ) +\n `${indent}var ${this.reserve(property.name)}: ${\n property.type.name\n }${optional}`\n );\n }\n const type = this.typeMap(property.type);\n const specialHandling = this.getSpecialHandling(property);\n let munge = '';\n let declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional}\\n`;\n if (specialHandling) {\n const ra = typeOfType(property.type) === TypeOfType.Array;\n const privy = this.reserve('_' + property.name);\n const bump = this.bumper(indent);\n const setter = property.required\n ? ra\n ? `${privy} = newValue.map { ${specialHandling}.init($0) }`\n : `${privy} = ${specialHandling}.init(newValue)`\n : ra\n ? `if let v = newValue { ${privy} = v.map { ${specialHandling}.init($0) } } else { ${privy} = nil }`\n : `${privy} = newValue.map(${specialHandling}.init)`;\n const getter = property.required\n ? ra\n ? `${privy}.map { $0.value }`\n : `${privy}.value`\n : ra\n ? `if let v = ${privy} { return v.map { $0.value } } else { return nil }`\n : `${privy}${optional}.value`;\n munge = ra\n ? `${indent}private var ${privy}: [${specialHandling}]${optional}\\n`\n : `${indent}private var ${privy}: ${specialHandling}${optional}\\n`;\n declaration = `${indent}public var ${this.reserve(property.name)}: ${\n type.name\n }${optional} {\n${bump}get { ${getter} }\n${bump}set { ${setter} }\n${indent}}\\n`;\n }\n return (\n munge +\n this.commentHeader(indent, this.describeProperty(property)) +\n declaration\n );\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 type =\n param.location === strBody\n ? this.writeableType(param.type, method) || param.type\n : param.type;\n const mapped = this.typeMap(type);\n let pOpt = '';\n let line = '';\n if (param.location === strBody) {\n mapped.name = `${mapped.name}`;\n }\n if (!param.required) {\n pOpt = '?';\n } else {\n line = '_ ';\n }\n return (\n this.commentHeader(indent, this.paramComment(param, mapped)) +\n `${indent}${line}${this.reserve(param.name)}: ${mapped.name}${pOpt}` +\n (param.required ? '' : mapped.default ? ` = ${mapped.default}` : '')\n );\n }\n\n initProp(prop: IProperty) {\n const propName = this.reserve(prop.name);\n const specialHandling = this.getSpecialHandling(prop);\n if (specialHandling) {\n const ra = typeOfType(prop.type) === TypeOfType.Array;\n const varName = this.privy(propName);\n if (prop.required) {\n if (ra) {\n return `${this.it(\n varName\n )} = ${propName}.map { ${specialHandling}.init($0) }`;\n }\n return `${this.it(varName)} = ${specialHandling}.init(${propName})`;\n } else {\n if (ra) {\n return `if let v = ${propName} { ${varName} = v.map { ${specialHandling}.init($0) } } else { ${varName} = nil }`;\n }\n return `${this.it(varName)} = ${propName}.map(${specialHandling}.init)`;\n }\n }\n return `${this.it(propName)} = ${propName}`;\n }\n\n construct(indent: string, type: IType) {\n if (type instanceof EnumType) return '';\n indent = this.bumper(indent);\n const bump = this.bumper(indent);\n const args: string[] = [];\n const posArgs: string[] = [];\n const inits: string[] = [];\n const posInits: string[] = [];\n const props = this.typeProperties(type);\n props.forEach((prop) => {\n const propName = this.reserve(prop.name);\n args.push(this.declareConstructorArg('', prop));\n posArgs.push(this.declarePositionalArg('', prop));\n inits.push(`${bump}${this.initProp(prop)}`);\n posInits.push(`${propName}: ${propName}`);\n });\n const namedInit =\n `${indent}public init(` +\n `${args.join(this.argDelimiter)}) {\\n` +\n inits.join('\\n') +\n `\\n${indent}}`;\n let posInit = '';\n if (props.some((p) => p.required)) {\n posInit =\n `\\n${indent}public init(` +\n `${posArgs.join(this.argDelimiter)}) {\\n` +\n `${bump}${this.it('init')}(${posInits.join(', ')})` +\n `\\n${indent}}\\n`;\n }\n return `\\n${namedInit}\\n${posInit}`;\n }\n\n declarePositionalArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type);\n let propType: string;\n let line = '_ ';\n if (property.required) {\n propType = mappedType.name;\n } else {\n line = '';\n propType = `${mappedType.name}? = ${this.nullStr}`;\n }\n const propName = this.reserve(property.name);\n return `${indent}${line}${propName}: ${propType}`;\n }\n\n declareConstructorArg(indent: string, property: IProperty) {\n const mappedType = this.typeMap(property.type);\n let propType: string;\n if (property.required) {\n propType = mappedType.name;\n } else {\n propType = `${mappedType.name}? = ${this.nullStr}`;\n }\n const propName = this.reserve(property.name);\n return `${indent}${propName}: ${propType}`;\n }\n\n methodHeaderDeclaration(indent: string, method: IMethod, streamer = false) {\n const type = this.typeMap(method.type);\n const resultType = streamer ? 'Data' : type.name;\n const returnType =\n type.name === 'Void'\n ? 'Voidable'\n : `SDKResponse<${resultType}, SDKError>`;\n const head = method.description?.trim();\n let headComment =\n (head ? `${head}\\n\\n` : '') +\n `${method.httpMethod} ${method.endpoint} -> ${type.name}`;\n let fragment;\n const requestType = this.requestTypeName(method);\n const bump = indent + this.indentStr;\n\n if (requestType) {\n // use the request type that will be generated in models.ts\n fragment = `request: I${requestType}`;\n } else {\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) =>\n params.push(this.declareParameter(bump, method, p))\n );\n fragment =\n params.length > 0 ? `\\n${params.join(this.paramDelimiter)}` : '';\n }\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 const dep = method.deprecated ? `${indent}@available(*, deprecated)\\n` : '';\n const header =\n this.commentHeader(indent, headComment) +\n dep +\n `${indent}public func ${method.name}(`;\n\n return (\n header +\n fragment +\n `${\n fragment ? ',' : ''\n }\\n${bump}options: ITransportSettings? = nil\\n${indent}) -> ${returnType} {\\n`\n );\n }\n\n methodSignature(indent: string, method: IMethod) {\n return this.methodHeaderDeclaration(indent, method, false);\n }\n\n encodePathParams(indent: string, method: IMethod) {\n let encodings = '';\n if (method.pathParams.length > 0) {\n for (const param of method.pathParams) {\n // For swift, just encode all path params because of awkward variable renames\n encodings += `${indent}let 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 codingKeys(indent: string, type: IType) {\n let special = false;\n\n const keys = Object.values(type.properties).map((p) => {\n let name = this.reserve(p.name);\n let alias = '';\n const useIt = this.useAnyString(p) || this.useAnyInt(p);\n if (useIt) {\n name = this.privy(name);\n special = true;\n alias = p.jsonName;\n } else if (p.hasSpecialNeeds) {\n special = true;\n alias = p.jsonName;\n }\n return name + (alias ? ` = \"${alias}\"` : '');\n });\n\n if (!special) return '';\n const bump = this.bumper(indent);\n const bump2 = this.bumper(bump);\n const cases = keys.join(`\\n${bump2}case `);\n\n return (\n `\\n${bump}private enum CodingKeys : String, CodingKey {` +\n `\\n${bump2}case ${cases}` +\n `\\n${bump}}\\n`\n );\n }\n\n // declareType(indent: string, type: IType): string {\n // return super.declareType(this.bumper(indent), type)\n // }\n declareEnumValue(indent: string, value: EnumValueType) {\n const quote = typeof value === 'string' ? this.codeQuote : '';\n return `${indent}case ${mayQuote(value)} = ${quote}${value}${quote}`;\n }\n\n typeSignature(indent: string, type: IType) {\n const recursive = type.isRecursive();\n let typeName = recursive ? 'class' : 'struct';\n const access = recursive ? 'open' : 'public';\n let baseClass = 'SDKModel';\n const isEnum = type instanceof EnumType;\n if (isEnum) {\n typeName = 'enum';\n const num = type as EnumType;\n const mapped = this.typeMap(num.elementType);\n baseClass = `${mapped.name}, Codable`;\n }\n\n const keys = this.codingKeys(indent, type);\n\n const needClass = recursive\n ? '\\nRecursive type references must use Class instead of Struct'\n : '';\n const mapped = this.typeMap(type);\n return (\n this.commentHeader(indent, type.description + needClass) +\n `${indent}${access} ${typeName} ${mapped.name}: ${baseClass} {\\n${keys}`\n );\n }\n\n errorResponses(_indent: string, _method: IMethod) {\n // const results: string[] = method.errorResponses\n // .map(r => `${r.type.name}`)\n // return results.join(' | ')\n // TODO figure out how to express Union error type responses\n return 'SDKError';\n }\n\n httpPath(path: string, prefix?: string) {\n prefix = prefix || '';\n if (path.indexOf('{') >= 0) {\n let tweak = path.replace(/{/gi, '\\\\(path_' + prefix);\n tweak = tweak.replace(/}/gi, ')');\n return `\"${tweak}\"`;\n }\n return `\"${path}\"`;\n }\n\n argGroup(indent: string, args: Arg[], prefix?: string) {\n if (!args || args.length === 0) return this.nullStr;\n const hash: string[] = [];\n for (const arg of args) {\n if (prefix) {\n hash.push(`\"${arg}\": ${prefix}${arg}`);\n } else {\n hash.push(`\"${arg}\": ${arg}`);\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`;\n }\n\n queryGroup(indent: string, method: IMethod, prefix?: string) {\n const params = method.getParams('query');\n if (!params || params.length === 0) return this.nullStr;\n const hash: string[] = [];\n for (const param of params) {\n const arg = this.asAny(param);\n if (prefix) {\n hash.push(`\"${param.name}\": ${prefix}${arg}`);\n } else {\n hash.push(`\"${param.name}\": ${arg}`);\n }\n }\n return `\\n${indent}[${hash.join(this.argDelimiter)}]`;\n }\n\n asAny(param: IParameter): Arg {\n let castIt;\n if (param.type.elementType) {\n castIt = true;\n } else {\n const mapped = this.typeMap(param.type);\n switch (mapped.name.toLowerCase()) {\n case 'date':\n case 'datetime': // case 'url': case 'uri':\n case 'object':\n case 'bool':\n castIt = true;\n break;\n default:\n castIt = false;\n break;\n }\n }\n return param.name + (castIt ? ' as Any?' : '');\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 /**\n * this is a builder function to produce arguments with optional null place holders but no extra required optional arguments\n * @param {string} current accumulator\n * @param {string} args names of parameters\n * @returns {string} accumulated argument list\n */\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 /**\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 * @param {string} indent\n * @param {IMethod} method\n * @returns {string}\n */\n httpArgs(indent: string, method: IMethod) {\n const request = this.useRequest(method) ? 'request.' : '';\n // add options at the end of the request calls. this will cause all other arguments to be\n // filled in but there's no way to avoid this for passing in the last optional parameter.\n // Fortunately, this code bloat is minimal and also hidden from the consumer.\n let result = this.argFill('', 'options');\n // let result = this.argFill('', this.argGroup(indent, method.cookieArgs, request))\n // result = this.argFill(result, this.argGroup(indent, method.headerArgs, request))\n result = this.argFill(\n result,\n method.bodyArg\n ? `try! self.encode(${request}${method.bodyArg})`\n : this.nullStr\n );\n result = this.argFill(result, this.queryGroup(indent, method, request));\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 bump = this.bumper(indent);\n const args = this.httpArgs(bump, method);\n const errors = this.errorResponses(indent, method);\n return `${indent}let result: SDKResponse<${\n type.name\n }, ${errors}> = ${this.it(method.httpMethod.toLowerCase())}(${this.httpPath(\n method.endpoint,\n request\n )}${args ? ', ' + args : ''})\n${indent}return result`;\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 `${indent}let result: SDKResponse<Data, ${errors}> = ${this.it(\n method.httpMethod.toLowerCase()\n )}(${this.httpPath(method.endpoint, request)}${args ? ', ' + args : ''})\n${indent}return result`;\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 ns = `api${this.apiRef}.`\n // const ns = `Looker.`\n const ns = 'Lk';\n\n const swiftTypes: Record<string, IMappedType> = {\n Error: { default: '', name: `${ns}Error` },\n Group: { default: '', name: `${ns}Group` },\n Locale: { default: '', name: `${ns}Locale` },\n any: { default: this.nullStr, name: 'AnyCodable' },\n boolean: { default: this.nullStr, name: 'Bool' },\n byte: { default: this.nullStr, name: 'binary' },\n date: { default: this.nullStr, name: 'Date' },\n datetime: { default: this.nullStr, name: 'Date' },\n double: { default: this.nullStr, name: 'Double' },\n float: { default: this.nullStr, name: 'Float' },\n int32: { default: this.nullStr, name: 'Int32' },\n int64: { default: this.nullStr, name: 'Int64' },\n integer: { default: this.nullStr, name: 'Int' },\n number: { default: this.nullStr, name: 'Double' },\n object: { default: this.nullStr, name: 'Any' },\n password: { default: this.nullStr, name: 'Password' },\n string: { default: this.nullStr, name: 'String' },\n uri: { default: this.nullStr, name: 'URI' },\n url: { default: this.nullStr, name: 'URL' },\n void: { default: '', name: 'Voidable' },\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: '[]', name: `[${map.name}]` };\n case 'HashType': {\n const mapName =\n type.elementType.name === 'string' ? 'AnyCodable' : map.name; // TODO fix bad API spec, like MergeQuery vis_config\n\n return { default: 'nil', name: `StringDictionary<${mapName}>` };\n }\n case 'DelimArrayType':\n return { default: 'nil', name: `DelimArray<${map.name}>` };\n case 'EnumType':\n return { default: 'nil', 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 swiftTypes[type.name] || { default: '', name: `${type.name}` }; // No null default for complex types\n } else {\n throw new Error('Cannot output a nameless type.');\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,17 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
var _testUtils = require("./testUtils");
|
|
7
|
-
Object.keys(_testUtils).forEach(function (key) {
|
|
8
|
-
if (key === "default" || key === "__esModule") return;
|
|
9
|
-
if (key in exports && exports[key] === _testUtils[key]) return;
|
|
10
|
-
Object.defineProperty(exports, key, {
|
|
11
|
-
enumerable: true,
|
|
12
|
-
get: function get() {
|
|
13
|
-
return _testUtils[key];
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
1
|
+
export * from './testUtils';
|
|
17
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/testUtils/index.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\nexport * from './testUtils';\n"],"mappings":"AA0BA,cAAc,aAAa"}
|