const formatRegExp=/%[sdj%]/g;export let warning=()=>{};export function format(...t){let e=1;const r=t[0],n=t.length;if("function"==typeof r)return r.apply(null,t.slice(1));if("string"==typeof r){let i=String(r).replace(formatRegExp,r=>{if("%%"===r)return"%";if(e>=n)return r;switch(r){case"%s":return String(t[e++]);case"%d":return Number(t[e++]);case"%j":try{return JSON.stringify(t[e++])}catch(t){return"[Circular]"}default:return r}});for(let r=t[e];e{e(t,a)})}function asyncSerialArray(t,e,r){let n=0;const i=t.length;!function l(a){if(a&&a.length)return void r(a);const c=n;n+=1,c{e.push.apply(e,t[r])}),e}export function asyncMap(t,e,r,n){if(e.first){return asyncSerialArray(flattenObjArr(t),r,n)}let i=e.firstFields||[];!0===i&&(i=Object.keys(t));const l=Object.keys(t),a=l.length;let c=0;const o=[],s=t=>{o.push.apply(o,t),c++,c===a&&n(o)};l.forEach(e=>{const n=t[e];-1!==i.indexOf(e)?asyncSerialArray(n,r,s):asyncParallelArray(n,r,s)})}export function complementError(t){return e=>e&&e.message?(e.field=e.field||t.fullField,e):{message:e,field:e.field||t.fullField}}export function deepMerge(t,e){if(e)for(const r in e)if(e.hasOwnProperty(r)){const n=e[r];"object"==typeof n&&"object"==typeof t[r]?t[r]={...t[r],...n}:t[r]=n}return t}