astrajs icon indicating copy to clipboard operation
astrajs copied to clipboard

Add TypeScript types

Open SferaDev opened this issue 2 years ago • 2 comments

Something similar to:

declare module "@astrajs/rest" {
  import { AxiosRequestConfig } from "axios";

  interface AstraClientOptions {
    configFile?: string;
    configSection?: string;
    baseApiPath?: string;
    baseUrl?: string;
    authUrl?: string;
    authToken?: string;
    applicationToken?: string;
    autoReconnect?: boolean;
    getAuthToken?: () => Promise<string>;
    setAuthToken?: (authToken: string) => Promise<void>;
    username?: string;
    password?: string;
    debug?: boolean;
    authHeaderName?: string;
    astraDatabaseId?: string;
    astraDatabaseRegion?: string;
  }

  interface AstraClient extends AstraClientOptions {
    get: (
      path: string,
      options?: AxiosRequestConfig
    ) => Promise<{ status: number; data: any }>;
    post: (
      path: string,
      data: any,
      options?: AxiosRequestConfig
    ) => Promise<{ status: number; data: any }>;
    put: (
      path: string,
      data: any,
      options?: AxiosRequestConfig
    ) => Promise<{ status: number; data: any }>;
    patch: (
      path: string,
      data: any,
      options?: AxiosRequestConfig
    ) => Promise<{ status: number; data: any }>;
    delete: (
      path: string,
      options?: AxiosRequestConfig
    ) => Promise<{ status: number; data: any }>;
  }

  export function createClient(
    options: AstraClientOptions
  ): Promise<AstraClient>;

  export function axiosRequest(
    options: AxiosRequestConfig & {
      authToken?: string;
      applicationToken?: string;
      authHeaderName?: string;
    }
  ): Promise<{ status: number; data: any }>;
}

Of course types could be improved further, but this at least offers a first step.

Disclaimer: Copilot chat might have or might have not generated this dts file.

SferaDev avatar Oct 11 '23 16:10 SferaDev

Yes right and also options field with available astra options like where { $eq: "..." }

Btw instead of issue pull request will be better

PanditSiddharth avatar Jan 27 '24 17:01 PanditSiddharth

I only used Astra db for a workshop and wasn't planning on maintaining anything so decided to open an issue instead with what helped me work for ~2 hours 😅

SferaDev avatar Jan 28 '24 08:01 SferaDev