query-serialize.js 879 B

123456789101112131415161718192021222324252627282930313233
  1. export function sortObjectKeys(source) {
  2. return Object.keys(source)
  3. .sort()
  4. .reduce((acc, key) => {
  5. acc[key] = source[key]
  6. return acc
  7. }, {})
  8. }
  9. export function buildQueryString(record) {
  10. const segments = []
  11. for (const key in record) {
  12. if (!Object.prototype.hasOwnProperty.call(record, key)) continue
  13. const encodedKey = encodeURIComponent(key)
  14. const rawValue = record[key]
  15. const encodedValue = encodedKey === 'scene' ? rawValue : encodeURIComponent(rawValue)
  16. segments.push(`${encodedKey}=${encodedValue}`)
  17. }
  18. return segments.join('&')
  19. }
  20. export function parseQueryString(urlOrQuery) {
  21. const result = {}
  22. const queryPart = urlOrQuery.includes('?')
  23. ? urlOrQuery.split('?')[1]
  24. : urlOrQuery
  25. const pairs = queryPart.split('&').filter(Boolean)
  26. for (const pair of pairs) {
  27. const [k, v = ''] = pair.split('=')
  28. if (k) result[k] = v
  29. }
  30. return result
  31. }