(
url = '',
query = [],
opts: {
nowOperate?: 'url' | 'query'
method: 'replace' | 'keepBoth'
} = {
method: 'replace',
nowOperate: 'url'
}
)
| 169 | * @returns - {url:"",query:[]} |
| 170 | */ |
| 171 | export 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 | |
| 215 | const jointQuery = (url = '', query: SafeAny[]) => { |
| 216 | //Joint query |
no test coverage detected