import { computed } from '@ember/object'; // An unattractive but robust way to encode query params export const serialize = (val) => { if (typeof val === 'string' || typeof val === 'number') return val; return val.length ? JSON.stringify(val) : ''; }; export const deserialize = (str) => { try { return JSON.parse(str).compact().without(''); } catch (e) { return []; } }; // A computed property macro for deserializing a query param export const deserializedQueryParam = (qpKey) => computed(qpKey, function () { return deserialize(this.get(qpKey)); });