( parameter: ts.Symbol | undefined, checker: ts.TypeChecker, location: ts.Node )
| 2858 | } |
| 2859 | |
| 2860 | function signatureParameterKind( |
| 2861 | parameter: ts.Symbol | undefined, |
| 2862 | checker: ts.TypeChecker, |
| 2863 | location: ts.Node |
| 2864 | ): string { |
| 2865 | if (parameter === undefined) return "none" |
| 2866 | const declaration = signatureParameterDeclaration(parameter) |
| 2867 | if (declaration?.dotDotDotToken !== undefined) return "rest" |
| 2868 | const name = signatureParameterName(parameter).replace(/_$/, "").toLowerCase() |
| 2869 | const type = checker.getTypeOfSymbolAtLocation(parameter, declaration ?? location) |
| 2870 | if (name === "self" || name === "that") return "self" |
| 2871 | if (name === "body") return `body:${signatureFunctionThisKind(type, checker, location)}` |
| 2872 | if (name === "name" || name === "spanname") return "name" |
| 2873 | if (name.includes("refinement")) return "refinement" |
| 2874 | if (name.includes("predicate")) return "predicate" |
| 2875 | if (name === "options" || name === "option" || name === "opts" || name === "config" || name === "args") { |
| 2876 | return "options" |
| 2877 | } |
| 2878 | if (name === "f" || name === "fn" || name === "callback") { |
| 2879 | return `function:${signatureFunctionThisKind(type, checker, location)}` |
| 2880 | } |
| 2881 | if (checker.getSignaturesOfType(type, ts.SignatureKind.Call).length > 0) { |
| 2882 | return `function:${signatureFunctionThisKind(type, checker, location)}` |
| 2883 | } |
| 2884 | if ((type.flags & ts.TypeFlags.StringLike) !== 0) return "primitive:string" |
| 2885 | if ((type.flags & ts.TypeFlags.NumberLike) !== 0) return "primitive:number" |
| 2886 | if ((type.flags & ts.TypeFlags.BooleanLike) !== 0) return "primitive:boolean" |
| 2887 | if ((type.flags & ts.TypeFlags.BigIntLike) !== 0) return "primitive:bigint" |
| 2888 | if ((type.flags & ts.TypeFlags.ESSymbolLike) !== 0) return "primitive:symbol" |
| 2889 | if ((type.flags & ts.TypeFlags.Object) !== 0 || checker.getPropertiesOfType(type).length > 0) return "object" |
| 2890 | return "other" |
| 2891 | } |
| 2892 | |
| 2893 | function signatureTailKind(signature: ts.Signature, checker: ts.TypeChecker, location: ts.Node): string { |
| 2894 | if (signature.parameters.length <= 1) return "none" |
no test coverage detected