MCPcopy Create free account
hub / github.com/APIParkLab/APIPark / syncUrlAndQuery

Function syncUrlAndQuery

frontend/packages/common/src/utils/postcat.tsx:171–213  ·  view source on GitHub ↗
(
  url = '',
  query = [],
  opts: {
    nowOperate?: 'url' | 'query'
    method: 'replace' | 'keepBoth'
  } = {
    method: 'replace',
    nowOperate: 'url'
  }
)

Source from the content-addressed store, hash-verified

169 * @returns - {url:"",query:[]}
170 */
171export const syncUrlAndQuery = (
172 url = '',
173 query = [],
174 opts: {
175 nowOperate?: 'url' | 'query'
176 method: 'replace' | 'keepBoth'
177 } = {
178 method: 'replace',
179 nowOperate: 'url'
180 }
181) => {
182 const urlQuery: SafeAny[] = []
183 const uiQuery = query
184 //Get url query
185 const queryObj = getQueryFromURL(url)
186 Object.keys(queryObj).forEach((name) => {
187 const value = queryObj[name]
188 const item: SafeAny = {
189 isRequired: 1,
190 name,
191 paramAttr: {
192 example: value
193 }
194 }
195 urlQuery.push(item)
196 })
197 const pre = opts.nowOperate === 'url' ? uiQuery : urlQuery
198 const next = opts.nowOperate === 'url' ? urlQuery : uiQuery
199 const result: SafeAny = {
200 url,
201 query
202 }
203 if (opts.method === 'replace') {
204 result.query = [...next, ...pre.filter((val) => !val.isRequired)]
205 } else {
206 result.query = [
207 ...next.map((val) => Object.assign(pre.find((val1) => val1.name === val.name) || {}, val)),
208 ...pre.filter((val: SafeAny) => urlQuery.every((val1) => val1.name !== val.name))
209 ]
210 }
211 result.url = jointQuery(url, result.query)
212 return result
213}
214
215const jointQuery = (url = '', query: SafeAny[]) => {
216 //Joint query

Callers 2

ApiTestFunction · 0.90
handleUriChangeFunction · 0.90

Calls 3

getQueryFromURLFunction · 0.85
jointQueryFunction · 0.85
findMethod · 0.80

Tested by

no test coverage detected