async getOptions()

in src/connector.ts [221:274]


  async getOptions(opts: ConnectionOptions): Promise<DriverOptions> {
    const {instances} = this;
    await instances.loadInstance(opts);

    return {
      stream() {
        const cloudSqlInstance = instances.getInstance(opts);
        const {
          instanceInfo,
          ephemeralCert,
          host,
          port,
          privateKey,
          serverCaCert,
          dnsName,
        } = cloudSqlInstance;

        if (
          instanceInfo &&
          ephemeralCert &&
          host &&
          port &&
          privateKey &&
          serverCaCert
        ) {
          const tlsSocket = getSocket({
            instanceInfo,
            ephemeralCert,
            host,
            port,
            privateKey,
            serverCaCert,
            instanceDnsName: dnsName,
            serverName: instanceInfo.domainName || dnsName, // use the configured domain name, or the instance dnsName.
          });
          tlsSocket.once('error', () => {
            cloudSqlInstance.forceRefresh();
          });
          tlsSocket.once('secureConnect', async () => {
            cloudSqlInstance.setEstablishedConnection();
          });

          cloudSqlInstance.addSocket(tlsSocket);

          return tlsSocket;
        }

        throw new CloudSQLConnectorError({
          message: 'Invalid Cloud SQL Instance info',
          code: 'EBADINSTANCEINFO',
        });
      },
    };
  }