PluginProbe
Code Snippets / 3.6.6
Code Snippets v3.6.6
3.10.2 3.10.1 3.10.0 3.10.0-beta.2 3.10.0-beta.1 4.0.0-beta.1 3.9.6 trunk 2.10.0 2.10.1 2.12.0 2.12.1 2.13.0 2.13.1 2.13.2 2.13.3 2.14.0 2.14.1 2.14.2 2.14.3 2.14.4 2.14.5 2.14.6 3.0.0 3.0.1 All 64 releases
code-snippets / js / utils / restAPI.ts

restAPI.ts in Code Snippets 3.6.6, at js/utils/restAPI.ts

21 lines 793 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import axios from 'axios'
2 import { trimLeadingChar, trimTrailingChar } from './text'
3 import type { AxiosRequestConfig, AxiosResponse } from 'axios'
4
5 const REST_BASE = window.CODE_SNIPPETS?.restAPI.base ?? ''
6
7 const getRestUrl = (endpoint: string): string =>
8 `${trimTrailingChar(REST_BASE, '/')}/${trimLeadingChar(endpoint, '/')}`
9
10 const GET_CACHE: Record<string, AxiosResponse<unknown> | undefined> = {}
11
12 export const getCached = <T, D>(endpoint: string, refresh = false, config?: AxiosRequestConfig<D>): Promise<AxiosResponse<T, D>> =>
13 !refresh && GET_CACHE[endpoint] ?
14 Promise.resolve(<AxiosResponse<T, D>> GET_CACHE[endpoint]) :
15 axios
16 .get<T, AxiosResponse<T, D>, D>(getRestUrl(endpoint), config)
17 .then(response => {
18 GET_CACHE[endpoint] = response
19 return response
20 })
21