{"version":3,"sources":["../src/client.ts","../src/admin/upstream.ts","../src/admin/validation.ts","../src/admin/route.ts","../src/admin/plugin.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, Method } from 'axios';\nimport { ConnectionConfig, EtcdConnectionConfig } from '../types/client';\nimport Upstream from './admin/upstream';\nimport Route from './admin/route';\nimport Plugin from './admin/plugin';\nimport Validation from './admin/validation';\nimport { stringify } from 'qs';\nimport { Etcd3 } from 'etcd3';\n\nexport default class ApisixAdminClient {\n  private connectionConfig: ConnectionConfig;\n  private etcdConnectionConfig: EtcdConnectionConfig;\n  private readonly client: AxiosInstance;\n  public readonly etcd: Etcd3;\n\n  public upstream: Upstream;\n  public route: Route;\n  public plugin: Plugin;\n  public validation: Validation;\n\n  constructor(connectionConfig: ConnectionConfig, etcdConnectionConfig: EtcdConnectionConfig) {\n    this.connectionConfig = connectionConfig;\n    this.etcdConnectionConfig = etcdConnectionConfig;\n    this.client = axios.create(this.connectionConfig);\n    this.etcd = new Etcd3(this.etcdConnectionConfig);\n\n    this.upstream = new Upstream(this);\n    this.route = new Route(this);\n    this.plugin = new Plugin(this);\n    this.validation = new Validation(this);\n  }\n\n  request = async <Request, Response>(method: Method, url: string, requestBody?: Request, query?: Request) => {\n    const config: AxiosRequestConfig = {\n      method,\n      url,\n    };\n    if (requestBody) {\n      config.data = requestBody;\n    }\n    if (query) {\n      config.params = query;\n      config.paramsSerializer = (params) => stringify(params);\n    }\n    return await this.client.request<Response>(config);\n  };\n}\n","import { isAxiosError } from 'axios';\nimport { Upstream, UpstreamDef, UpstreamGetListRequest } from '../../types/admin/upstream';\nimport { CreateResponse, GetResponse, PaginationResponse } from '../../types/client';\nimport ApisixAdminClient from '../client';\nimport ValidationService from './validation';\n\nexport default class UpstreamService {\n  private readonly client: ApisixAdminClient;\n  private readonly validationService: ValidationService;\n  constructor(client: ApisixAdminClient) {\n    this.client = client;\n    this.validationService = new ValidationService(client);\n  }\n\n  /**\n   * Fetches specified Upstream by id.\n   * @param id unique id of upstream\n   * @returns {GetResponse<Upstream>}\n   */\n  get = async (id: string): Promise<GetResponse<Upstream>> => {\n    const res = await this.client.request<null, GetResponse<Upstream>>('get', `/apisix/admin/upstreams/${id}`);\n    return res.data;\n  };\n\n  /**\n   * Fetch a list of all configured Upstreams.\n   * @param id unique id of upstream\n   * @param desc description of upstream\n   * @param name name of upstream\n   * @param page offset\n   * @param page_size limit\n   * @returns {PaginationResponse<GetUpstreamResponse>}\n   */\n  getList = async (\n    id?: string,\n    desc?: string,\n    name?: string,\n    page?: string,\n    page_size?: string,\n  ): Promise<PaginationResponse<GetResponse<Upstream>>> => {\n    const res = await this.client.request<UpstreamGetListRequest, PaginationResponse<GetResponse<Upstream>>>(\n      'get',\n      `/apisix/admin/upstreams`,\n      undefined,\n      {\n        id,\n        desc,\n        name,\n        page,\n        page_size,\n      },\n    );\n\n    return res.data;\n  };\n\n  /**\n   * Creates an Upstream and assigns a random id.\n   * @param config {UpstreamDef}\n   * @returns {CreateResponse<Upstream>}\n   */\n  create = async (def: UpstreamDef, validate = false): Promise<CreateResponse<Upstream>> => {\n    if (validate) {\n      await this.validationService.validate('upstreams', def);\n    }\n    const res = await this.client.request<UpstreamDef, CreateResponse<Upstream>>(\n      'post',\n      '/apisix/admin/upstreams',\n      def,\n    );\n\n    return res.data;\n  };\n\n  /**\n   * Creates an Upstream with the specified id.\n   * @param id unique id of upstream\n   * @param config {UpstreamDef}\n   * @returns {CreateResponse<Upstream>}\n   */\n  upsert = async (id: string, config: UpstreamDef, validate = false): Promise<CreateResponse<Upstream>> => {\n    if (validate) {\n      await this.validationService.validate('upstreams', config);\n    }\n    const res = await this.client.request<UpstreamDef, CreateResponse<Upstream>>(\n      'put',\n      `/apisix/admin/upstreams/${id}`,\n      config,\n    );\n\n    return res.data;\n  };\n\n  /**\n   * Updates the selected attributes of the specified, existing Upstream. To delete an attribute, set value of attribute set to null.\n   * @param id unique id of upstream\n   * @param config {UpstreamDef}\n   * @returns {CreateResponse<Upstream>}\n   */\n  update = async (id: string, config: UpstreamDef, validate = false): Promise<CreateResponse<Upstream>> => {\n    if (validate) {\n      await this.validationService.validate('upstreams', config);\n    }\n    const res = await this.client.request<UpstreamDef, CreateResponse<Upstream>>(\n      'patch',\n      `/apisix/admin/upstreams/${id}`,\n      config,\n    );\n\n    return res.data;\n  };\n\n  /**\n   * Updates the attribute specified in the path. The values of other attributes remain unchanged.\n   * @param id unique id of upstream\n   * @param path like node\n   * @param config {UpstreamDef}\n   * @returns {CreateResponse<Upstream>}\n   */\n  updateByPath = async (\n    id: string,\n    path: string,\n    config: UpstreamDef,\n    validate = false,\n  ): Promise<CreateResponse<Upstream>> => {\n    if (validate) {\n      await this.validationService.validate('upstreams', config);\n    }\n    const res = await this.client.request<UpstreamDef, CreateResponse<Upstream>>(\n      'patch',\n      `/apisix/admin/upstreams/${id}/${path}`,\n      config,\n    );\n\n    return res.data;\n  };\n\n  /**\n   * Removes the Upstream with the specified id.\n   * @param id unique id of upstream\n   * @returns {void}\n   */\n  delete = async (id: string): Promise<void> => {\n    await this.client.request<void, void>('delete', `/apisix/admin/upstreams/${id}`);\n  };\n\n  /**\n   * Is upstream exists ?\n   * @param id unique id of upstream\n   * @returns {boolean}\n   */\n  isExists = async (id: string): Promise<boolean> => {\n    try {\n      await this.get(id);\n      return true;\n    } catch (error) {\n      if (isAxiosError(error) && error.status === 404) {\n        return false;\n      }\n      throw error;\n    }\n  };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { ValidationResource } from '../../types/admin/validation';\nimport ApisixAdminClient from '../client';\n\nexport default class ValidationService {\n  private readonly client: ApisixAdminClient;\n  constructor(client: ApisixAdminClient) {\n    this.client = client;\n  }\n\n  validate = async (resource: ValidationResource, schema: any) => {\n    const res = await this.client.request<any, any>('post', `/apisix/admin/schema/validate/${resource}`, schema);\n    return res.data;\n  };\n}\n","import { isAxiosError } from 'axios';\nimport { GetListRoute, Route, RouteDef } from '../../types/admin/route';\nimport { CreateResponse, GetResponse, PaginationResponse } from '../../types/client';\nimport ApisixAdminClient from '../client';\nimport ValidationService from './validation';\n\nexport default class RouteService {\n  private readonly client: ApisixAdminClient;\n  private readonly validationService: ValidationService;\n  constructor(client: ApisixAdminClient) {\n    this.client = client;\n    this.validationService = new ValidationService(client);\n  }\n\n  private readonly isJson = (json: string): boolean => {\n    try {\n      JSON.parse(json);\n      return true;\n    } catch (error) {\n      return false;\n    }\n  };\n\n  /**\n   * Fetches specified Route by id.\n   * @param id\n   * @returns\n   */\n  get = async (id: string): Promise<GetResponse<Route>> => {\n    const res = await this.client.request<null, GetResponse<Route>>('get', `/apisix/admin/routes/${id}`);\n    return res.data;\n  };\n\n  getByPath = async (path: string): Promise<PaginationResponse<GetResponse<Route>>> => {\n    const res = await this.client.request<GetListRoute, PaginationResponse<GetResponse<Route>>>(\n      'get',\n      `/apisix/admin/routes?uri=${path}&label=&page=1&page_size=100&host=&desc=&id=`,\n    );\n    return res.data;\n  };\n\n  /**\n   * Fetches a list of all configured Routes.\n   * @param name\n   * @param uri\n   * @param label\n   * @param status\n   * @param host\n   * @param id\n   * @param desc\n   * @param page\n   * @param page_size\n   * @returns\n   */\n  getList = async (\n    name?: string,\n    uri?: string,\n    label?: string,\n    status?: string,\n    host?: string,\n    id?: string,\n    desc?: string,\n    page?: string,\n    page_size?: string,\n  ): Promise<PaginationResponse<GetResponse<Route>>> => {\n    const res = await this.client.request<GetListRoute, PaginationResponse<GetResponse<Route>>>(\n      'get',\n      `/apisix/admin/routes`,\n      undefined,\n      {\n        name,\n        uri,\n        label,\n        status,\n        host,\n        id,\n        desc,\n        page,\n        page_size,\n      },\n    );\n    return res.data;\n  };\n\n  filter = async (\n    upstream_id?: string,\n    name?: string,\n    uri?: string,\n    status?: '0' | '1',\n    host?: string,\n    id?: string,\n    desc?: string,\n    labels?: string,\n    page = '1',\n    page_size = '10',\n  ) => {\n    const bufferValues = (await this.client.etcd.getAll().prefix('/apisix/routes').exec()).kvs.filter((kv) => {\n      return this.isJson(kv.value.toString('utf8'));\n    });\n\n    let routes = bufferValues.map((bufferValue) => {\n      return {\n        ...bufferValue,\n        key: bufferValue.key.toString('utf8'),\n        value: JSON.parse(bufferValue.value.toString('utf8')),\n      };\n    });\n\n    for await (const route of routes) {\n      const upstream_id = route.value.upstream_id;\n      if (upstream_id) {\n        const upstream = (await this.client.etcd.get(`/apisix/upstreams/${upstream_id}`).exec()).kvs[0];\n        if (upstream) {\n          const value = JSON.parse(upstream.value.toString('utf8'));\n          const nodes = value.nodes;\n          if (nodes) {\n            route.value.upstream = value;\n          }\n        }\n      }\n    }\n\n    if (name) {\n      routes = routes.filter((route) => (route.value.name as string).includes(name));\n    }\n    if (uri) {\n      routes = routes.filter((route) => (route.value.uri as string).includes(uri));\n    }\n    if (status) {\n      routes = routes.filter((route) => route.value.status === +status);\n    }\n    if (id) {\n      routes = routes.filter((route) => (route.value.id as string).includes(id));\n    }\n    if (desc) {\n      routes = routes.filter((route) => (route.value.desc as string).includes(desc));\n    }\n    if (host) {\n      routes = routes.filter(\n        (route) =>\n          route.value.upstream && route.value.upstream.nodes && Object.keys(route.value.upstream.nodes).includes(host),\n      );\n    }\n    if (labels) {\n      const isSearchObjJson = this.isJson(labels);\n      if (isSearchObjJson) {\n        const searchObj = JSON.parse(labels);\n        const keysSearchObj = Object.keys(searchObj);\n        routes = routes.filter((route) => {\n          const sourceObj = route.value.labels;\n          if (sourceObj) {\n            const keysSourceObj = Object.keys(sourceObj);\n            return keysSearchObj.some((key) => keysSourceObj.includes(key) && searchObj[key] === sourceObj[key]);\n          }\n        });\n      }\n    }\n    if (upstream_id) {\n      routes = routes.filter((route) => (route.value.upstream_id as string).includes(upstream_id));\n    }\n\n    return {\n      list: routes\n        .slice((parseInt(page) - 1) * parseInt(page_size), parseInt(page) * parseInt(page_size))\n        .map((slicedRoute) => slicedRoute.value as RouteDef),\n      total: routes.length,\n    };\n  };\n\n  /**\n   * Creates a Route and assigns a random id.\n   * @param config\n   * @returns\n   */\n  create = async (config: RouteDef, validate = false): Promise<CreateResponse<Route>> => {\n    if (validate) {\n      await this.validationService.validate('routes', config);\n    }\n    const res = await this.client.request<RouteDef, CreateResponse<Route>>('post', `/apisix/admin/routes`, config);\n    return res.data;\n  };\n\n  /**\n   * Creates a Route with the specified id.\n   * @param id\n   * @param ttl\n   * @param config\n   * @returns\n   */\n  upsert = async (id: string, config: RouteDef, ttl?: string, validate = false): Promise<CreateResponse<Route>> => {\n    if (validate) {\n      await this.validationService.validate('routes', config);\n    }\n    const res = await this.client.request<RouteDef, CreateResponse<Route>>(\n      'put',\n      `/apisix/admin/routes/${id}${ttl ? `?ttl=${ttl}` : ''}`,\n      config,\n    );\n    return res.data;\n  };\n\n  /**\n   * Updates the selected attributes of the specified, existing Route. To delete an attribute, set value of attribute set to null.\n   * @param id\n   * @param config\n   * @returns\n   */\n  update = async (id: string, config: RouteDef, validate = false): Promise<CreateResponse<Route>> => {\n    if (validate) {\n      await this.validationService.validate('routes', config);\n    }\n    const res = await this.client.request<RouteDef, CreateResponse<Route>>(\n      'patch',\n      `/apisix/admin/routes/${id}`,\n      config,\n    );\n    return res.data;\n  };\n\n  /**\n   * Updates the attribute specified in the path. The values of other attributes remain unchanged.\n   * @param id\n   * @param path\n   * @param config\n   * @returns\n   */\n  updateByPath = async (\n    id: string,\n    path: string,\n    config: RouteDef,\n    validate = false,\n  ): Promise<CreateResponse<Route>> => {\n    if (validate) {\n      await this.validationService.validate('routes', config);\n    }\n    const res = await this.client.request<RouteDef, CreateResponse<Route>>(\n      'patch',\n      `/apisix/admin/routes/${id}/${path}`,\n      config,\n    );\n    return res.data;\n  };\n\n  /**\n   * Removes the Route with the specified id.\n   * @param id\n   */\n  delete = async (id: string): Promise<void> => {\n    await this.client.request<void, void>('delete', `/apisix/admin/routes/${id}`);\n  };\n\n  isExists = async (id: string): Promise<boolean> => {\n    try {\n      await this.get(id);\n      return true;\n    } catch (error) {\n      if (isAxiosError(error) && error.response && error.response.status === 404) {\n        return false;\n      } else {\n        throw error;\n      }\n    }\n  };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport ApisixAdminClient from '../client';\n\nexport default class PluginService {\n  private readonly client: ApisixAdminClient;\n  constructor(client: ApisixAdminClient) {\n    this.client = client;\n  }\n\n  /**\n   * Fetches a list of all Plugins.\n   * @returns {PluginList}\n   */\n  getList = async (): Promise<string[]> => {\n    const res = await this.client.request<null, string[]>('get', `/apisix/admin/plugins/list`);\n\n    return res.data;\n  };\n\n  /**\n   * Get properties for config a plugin\n   * @param pluginName\n   * @returns {any}\n   */\n  getProperties = async (pluginName: string): Promise<any> => {\n    const res = await this.client.request<null, any>('get', `/apisix/admin/plugins/${pluginName}`);\n\n    return res.data;\n  };\n\n  /**\n   * Reloads the plugin according to the changes made in code\n   * @returns {void}\n   */\n  reload = async (): Promise<void> => {\n    const res = await this.client.request<null, void>('put', `/apisix/admin/plugins/reload`);\n\n    return res.data;\n  };\n\n  isExists = async (name: string): Promise<boolean> => {\n    const plugins = await this.getList();\n    return plugins.indexOf(name) > -1;\n  };\n}\n","import ApisixAdminClient from './client';\nexport default ApisixAdminClient;\n\nexport type * from '../types/client.d.ts';\nexport type * from '../types/admin/route.d.ts';\nexport type * from '../types/admin/upstream.d.ts';\n"],"mappings":"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","names":["isAxiosError","upstream_id","isAxiosError"]}