export function validateNodeTransportOptions()

in packages/dubbo-node/src/node-transport-options.ts [84:132]


export function validateNodeTransportOptions(
  options: NodeTransportOptions &
    Partial<Omit<CommonTransportOptions, "baseUrl">> &
    Pick<CommonTransportOptions, "baseUrl">
) {
  let httpClient: UniversalClientFn;
  if (options.httpVersion == "2") {
    let sessionManager: NodeHttp2ClientSessionManager;
    if (options.sessionManager) {
      sessionManager = options.sessionManager;
    } else {
      sessionManager = new Http2SessionManager(
        options.baseUrl,
        {
          pingIntervalMs: options.pingIntervalMs,
          pingIdleConnection: options.pingIdleConnection,
          pingTimeoutMs: options.pingTimeoutMs,
          idleConnectionTimeoutMs: options.idleConnectionTimeoutMs,
        },
        options.nodeOptions
      );
    }
    httpClient = createNodeHttpClient({
      httpVersion: "2",
      sessionProvider: () => sessionManager,
    });
  } else {
    httpClient = createNodeHttpClient({
      httpVersion: "1.1",
      nodeOptions: options.nodeOptions,
    });
  }
  return {
    ...options,
    httpClient,
    useBinaryFormat: options.useBinaryFormat ?? true,
    interceptors: options.interceptors ?? [],
    sendCompression: options.sendCompression ?? null,
    acceptCompression: options.acceptCompression ?? [
      compressionGzip,
      compressionBrotli,
    ],
    ...validateReadWriteMaxBytes(
      options.readMaxBytes,
      options.writeMaxBytes,
      options.compressMinBytes
    ),
  };
}