MCPcopy Index your code
hub / github.com/github/copilot-sdk / emitSessionMethod

Function emitSessionMethod

scripts/codegen/csharp.ts:1984–2116  ·  view source on GitHub ↗
(key: string, method: RpcMethod, lines: string[], classes: string[], indent: string, groupExperimental: boolean, groupDeprecated: boolean)

Source from the content-addressed store, hash-verified

1982}
1983
1984function emitSessionMethod(key: string, method: RpcMethod, lines: string[], classes: string[], indent: string, groupExperimental: boolean, groupDeprecated: boolean): void {
1985 const methodName = toPascalCase(key);
1986 const isInternal = method.visibility === "internal";
1987 const methodVisibility = isInternal ? "internal" : "public";
1988 const resultSchema = getMethodResultSchema(method);
1989 let resultClassName = !isVoidSchema(resultSchema) ? resultTypeName(method) : "";
1990 if (!isVoidSchema(resultSchema) && method.stability === "experimental" && !nonExperimentalRpcTypes.has(resultClassName)) {
1991 experimentalRpcTypes.add(resultClassName);
1992 }
1993 if (!isVoidSchema(resultSchema)) {
1994 resultClassName = emitRpcResultType(resultClassName, resultSchema!, methodVisibility, classes);
1995 }
1996
1997 const effectiveParams = resolveMethodParamsSchema(method);
1998 const paramEntries = (effectiveParams?.properties ? Object.entries(effectiveParams.properties) : []).filter(([k]) => k !== "sessionId");
1999 const requiredSet = new Set(effectiveParams?.required || []);
2000 const useRequestParameter =
2001 paramEntries.length > 0 &&
2002 !!getNullableInner(method.params) &&
2003 paramEntries.every(([name]) => !requiredSet.has(name));
2004
2005 // Sort so required params come before optional (C# requires defaults at end)
2006 paramEntries.sort((a, b) => {
2007 const aReq = requiredSet.has(a[0]) ? 0 : 1;
2008 const bReq = requiredSet.has(b[0]) ? 0 : 1;
2009 return aReq - bReq;
2010 });
2011
2012 const requestClassName = paramsTypeName(method);
2013 const wireRequestClassName = useRequestParameter ? `${requestClassName}WithSession` : requestClassName;
2014 if (method.stability === "experimental" && !nonExperimentalRpcTypes.has(requestClassName)) {
2015 experimentalRpcTypes.add(requestClassName);
2016 if (useRequestParameter && !nonExperimentalRpcTypes.has(wireRequestClassName)) {
2017 experimentalRpcTypes.add(wireRequestClassName);
2018 }
2019 }
2020 if (effectiveParams?.properties && Object.keys(effectiveParams.properties).length > 0) {
2021 if (useRequestParameter) {
2022 const publicParams: JSONSchema7 = {
2023 ...effectiveParams,
2024 properties: Object.fromEntries(paramEntries),
2025 required: effectiveParams.required?.filter((name) => name !== "sessionId"),
2026 };
2027 const publicReqClass = emitRpcClass(requestClassName, publicParams, methodVisibility, classes);
2028 if (publicReqClass) classes.push(publicReqClass);
2029 const wireReqClass = emitRpcClass(wireRequestClassName, effectiveParams, "internal", classes);
2030 if (wireReqClass) classes.push(wireReqClass);
2031 } else {
2032 const reqClass = emitRpcClass(requestClassName, effectiveParams, "internal", classes);
2033 if (reqClass) classes.push(reqClass);
2034 }
2035 }
2036
2037 const sigParams: string[] = [];
2038 const bodyAssignments = [`SessionId = _session.SessionId`];
2039 const argumentNullChecks: string[] = [];
2040 const parameterDescriptions: Array<{ name: string; description?: string; escapeDescription?: boolean }> = [];
2041

Callers 2

emitSessionRpcClassesFunction · 0.85
emitSessionApiClassFunction · 0.85

Calls 15

isVoidSchemaFunction · 0.85
emitRpcResultTypeFunction · 0.85
getNullableInnerFunction · 0.85
emitRpcClassFunction · 0.85
toCSharpPropertyNameFunction · 0.85
resolveRpcTypeFunction · 0.85
localRequestVariableNameFunction · 0.85
pushRpcMethodXmlDocsFunction · 0.85
pushObsoleteAttributesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…