PluginProbe
Code Snippets / 3.5.0
Code Snippets v3.5.0
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 / api / wp.ts

wp.ts in Code Snippets 3.5.0, at js/utils/api/wp.ts

24 lines 796 B
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import axios, { AxiosResponse } from 'axios'
2
3 const REST_BASE = window.CODE_SNIPPETS?.restAPI.base ?? ''
4
5 export const trimLeadingSlash = (path: string): string =>
6 '/' === path.charAt(0) ? path.slice(1) : path
7
8 export const trimTrailingSlash = (path: string): string =>
9 '/' === path.charAt(path.length - 1) ? path.slice(0, -1) : path
10
11 const getRestUrl = (endpoint: string): string =>
12 `${trimTrailingSlash(REST_BASE)}/${trimLeadingSlash(endpoint)}`
13
14 const GET_CACHE: Record<string, AxiosResponse> = {}
15
16 export const getCached = <T>(endpoint: string, refresh = false): Promise<AxiosResponse<T>> =>
17 !refresh && GET_CACHE[endpoint] ?
18 Promise.resolve(GET_CACHE[endpoint]) :
19 axios.get<T>(getRestUrl(endpoint))
20 .then(response => {
21 GET_CACHE[endpoint] = response
22 return response
23 })
24