12345 |
- /*
- All material copyright ESRI, All Rights Reserved, unless otherwise specified.
- See https://js.arcgis.com/4.25/esri/copyright.txt for details.
- */
- import{ArcadeExecutionError as n,ExecutionErrorCodes as t}from"../arcade/executionError.js";import r from"../arcade/ImmutableArray.js";import{y as e,g as o,z as i,A as u,x as a,m as c,v as s,s as l,a as f,i as d,B as h,j as w}from"./languageUtils.js";import{isPromiseLike as g}from"../core/promiseUtils.js";function F(F){function m(e,o,i){if(e instanceof r)return e.toArray();if(c(e))return e;throw new n(o,t.InvalidParameter,i)}function p(n,t){const r=n.length,e=Math.floor(r/2);return 0===r?[]:1===r?[n[0]]:y(p(n.slice(0,e),t),p(n.slice(e,r),t),t)}function y(n,t,r){const e=[];for(;n.length>0||t.length>0;)if(n.length>0&&t.length>0){let o=r(n[0],t[0]);isNaN(o)&&(o=0),o<=0?(e.push(n[0]),n=n.slice(1)):(e.push(t[0]),t=t.slice(1))}else n.length>0?(e.push(n[0]),n=n.slice(1)):t.length>0&&(e.push(t[0]),t=t.slice(1));return e}async function v(n,t){const r=n.length,e=Math.floor(r/2);if(0===r)return[];if(1===r)return[n[0]];const o=[await v(n.slice(0,e),t),await v(n.slice(e,r),t)];return P(o[0],o[1],t,[])}async function P(n,t,r,e){const o=e;if(!(n.length>0||t.length>0))return e;if(n.length>0&&t.length>0){let i=await r(n[0],t[0]);return isNaN(i)&&(i=1),i<=0?(o.push(n[0]),n=n.slice(1)):(o.push(t[0]),t=t.slice(1)),P(n,t,r,e)}return n.length>0?(o.push(n[0]),P(n=n.slice(1),t,r,e)):t.length>0?(o.push(t[0]),P(n,t=t.slice(1),r,e)):void 0}function I(r,o,i,u){e(i,1,2,r,o);let l=i[0];if(a(l)&&(l=l.toArray()),!1===c(l))throw new n(r,t.InvalidParameter,o);if(i.length>1){if(!1===d(i[1]))throw new n(r,t.InvalidParameter,o);let e=l;const a=i[1].createFunction(r);return u?v(e,a):(e=p(e,((n,t)=>a(n,t))),e)}let f=l;if(0===f.length)return[];const g={};for(let n=0;n<f.length;n++){const t=h(f[n]);""!==t&&(g[t]=!0)}if(!0===g.Array||!0===g.Dictionary||!0===g.Feature||!0===g.Point||!0===g.Polygon||!0===g.Polyline||!0===g.Multipoint||!0===g.Extent||!0===g.Function)return f.slice(0);let F=0,m="";for(const n in g)F++,m=n;return f=F>1||"String"===m?p(f,((n,t)=>{if(null==n||n===s)return null==t||t===s?0:1;if(null==t||t===s)return-1;const r=w(n),e=w(t);return r<e?-1:r===e?0:1})):"Number"===m?p(f,((n,t)=>n-t)):"Boolean"===m?p(f,((n,t)=>n===t?0:t?-1:1)):"Date"===m?p(f,((n,t)=>t-n)):f.slice(0),f}F.functions.array=function(r,a){return F.standardFunction(r,a,((c,s,l)=>{e(l,1,2,r,a);const f=o(l[0]);if(isNaN(f)||!1===i(f))throw new n(r,t.InvalidParameter,a);const d=u(l[1],null),h=new Array(f);return h.fill(d),h}))},F.functions.front=function(r,o){return F.standardFunction(r,o,((i,u,s)=>{if(e(s,1,1,r,o),a(s[0])){if(s[0].length()<=0)throw new n(r,t.OutOfBounds,o);return s[0].get(0)}if(c(s[0])){if(s[0].length<=0)throw new n(r,t.OutOfBounds,o);return s[0][0]}throw new n(r,t.InvalidParameter,o)}))},F.functions.back=function(r,o){return F.standardFunction(r,o,((i,u,s)=>{if(e(s,1,1,r,o),a(s[0])){if(s[0].length()<=0)throw new n(r,t.OutOfBounds,o);return s[0].get(s[0].length()-1)}if(c(s[0])){if(s[0].length<=0)throw new n(r,t.OutOfBounds,o);return s[0][s[0].length-1]}throw new n(r,t.InvalidParameter,o)}))},F.functions.push=function(r,o){return F.standardFunction(r,o,((i,u,a)=>{if(e(a,1,2,r,o),c(a[0]))return a[0][a[0].length]=a[1],a[0].length;throw new n(r,t.InvalidParameter,o)}))},F.functions.pop=function(r,o){return F.standardFunction(r,o,((i,u,a)=>{if(e(a,1,1,r,o),c(a[0])){if(a[0].length<=0)throw new n(r,t.OutOfBounds,o);const e=a[0][a[0].length-1];return a[0].length=a[0].length-1,e}throw new n(r,t.InvalidParameter,o)}))},F.functions.erase=function(r,u){return F.standardFunction(r,u,((a,l,f)=>{if(e(f,2,2,r,u),c(f[0])){let e=o(f[1]);if(isNaN(e)||!1===i(e))throw new n(r,t.InvalidParameter,u);const a=f[0];if(a.length<=0)throw new n(r,t.OutOfBounds,u);if(e<0&&(e=a.length+e),e<0)throw new n(r,t.OutOfBounds,u);if(e>=a.length)throw new n(r,t.OutOfBounds,u);return a.splice(e,1),s}throw new n(r,t.InvalidParameter,u)}))},F.functions.insert=function(r,u){return F.standardFunction(r,u,((a,l,f)=>{if(e(f,3,3,r,u),c(f[0])){const e=o(f[1]);if(isNaN(e)||!1===i(e))throw new n(r,t.InvalidParameter,u);const a=f[2],c=f[0];if(e>c.length)throw new n(r,t.OutOfBounds,u);if(e<0&&e<-1*c.length)throw new n(r,t.OutOfBounds,u);return e===c.length?(c[e]=a,s):(c.splice(e,0,a),s)}throw new n(r,t.InvalidParameter,u)}))},F.functions.resize=function(r,a){return F.standardFunction(r,a,((l,f,d)=>{if(e(d,2,3,r,a),c(d[0])){const e=o(d[1]);if(isNaN(e)||!1===i(e))throw new n(r,t.InvalidParameter,a);if(e<0)throw new n(r,t.InvalidParameter,a);const c=u(d[2],null),l=d[0];if(l.length>=e)return l.length=e,s;const f=l.length;l.length=e;for(let n=f;n<l.length;n++)l[n]=c;return s}throw new n(r,t.InvalidParameter,a)}))},F.functions.includes=function(r,o){return F.standardFunction(r,o,((i,u,s)=>{if(e(s,2,2,r,o),c(s[0])){const n=s[1];return s[0].findIndex((t=>l(t,n)))>-1}if(a(s[0])){const n=s[1];return s[0].toArray().findIndex((t=>l(t,n)))>-1}throw new n(r,t.InvalidParameter,o)}))},F.functions.slice=function(r,s){return F.standardFunction(r,s,((l,f,d)=>{if(e(d,1,3,r,s),c(d[0])){const e=o(u(d[1],0)),a=o(u(d[2],d[0].length));if(isNaN(e)||!1===i(e))throw new n(r,t.InvalidParameter,s);if(isNaN(a)||!1===i(a))throw new n(r,t.InvalidParameter,s);return d[0].slice(e,a)}if(a(d[0])){const e=d[0],a=o(u(d[1],0)),c=o(u(d[2],e.length()));if(isNaN(a)||!1===i(a))throw new n(r,t.InvalidParameter,s);if(isNaN(c)||!1===i(c))throw new n(r,t.InvalidParameter,s);return e.toArray().slice(a,c)}throw new n(r,t.InvalidParameter,s)}))},F.functions.splice=function(n,t){return F.standardFunction(n,t,((n,t,r)=>{const e=[];for(let o=0;o<r.length;o++)c(r[o])?e.push(...r[o]):a(r[o])?e.push(...r[o].toArray()):e.push(r[o]);return e}))},F.functions.top=function(r,i){return F.standardFunction(r,i,((u,s,l)=>{if(e(l,2,2,r,i),c(l[0]))return o(l[1])>=l[0].length?l[0].slice(0):l[0].slice(0,o(l[1]));if(a(l[0]))return o(l[1])>=l[0].length()?l[0].slice(0):l[0].slice(0,o(l[1]));throw new n(r,t.InvalidParameter,i)}))},F.functions.first=function(n,t){return F.standardFunction(n,t,((r,o,i)=>(e(i,1,1,n,t),c(i[0])?0===i[0].length?null:i[0][0]:a(i[0])?0===i[0].length()?null:i[0].get(0):null)))},"sync"===F.mode&&(F.functions.sort=function(n,t){return F.standardFunction(n,t,((r,e,o)=>I(n,t,o,!1)))},F.functions.any=function(n,t){return F.standardFunction(n,t,((r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);for(const n of a){const t=u(n);if(f(t)&&!0===t)return!0}return!1}))},F.functions.all=function(n,t){return F.standardFunction(n,t,((r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);for(const n of a){if(!0!==u(n))return!1}return!0}))},F.functions.none=function(n,t){return F.standardFunction(n,t,((r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);for(const n of a){if(!0===u(n))return!1}return!0}))},F.functions.reduce=function(n,t){return F.standardFunction(n,t,((r,o,i)=>{e(i,2,3,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);return 2===i.length?0===a.length?null:a.reduce(((n,t)=>{const r=u(n,t);return n=void 0!==r&&r!==s?r:null})):a.reduce(((n,t)=>{const r=u(n,t);return n=void 0!==r&&r!==s?r:null}),i[2])}))},F.functions.map=function(n,t){return F.standardFunction(n,t,((r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t),c=[];for(const n of a){const t=u(n);void 0!==t&&t!==s?c.push(t):c.push(null)}return c}))},F.functions.filter=function(n,t){return F.standardFunction(n,t,((r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t),c=[];for(const n of a){!0===u(n)&&c.push(n)}return c}))}),"async"===F.mode&&(F.functions.sort=function(n,t){return F.standardFunctionAsync(n,t,((r,e,o)=>I(n,t,o,!0)))},F.functions.any=function(n,t){return F.standardFunctionAsync(n,t,(async(r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);for(const n of a){const t=await u(n);let r=null;if(r=g(r)?await t:t,f(r)&&!0===r)return!0}return!1}))},F.functions.all=function(n,t){return F.standardFunctionAsync(n,t,(async(r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);for(const n of a){const t=await u(n);let r=null;if(r=g(r)?await t:t,!0!==r)return!1}return!0}))},F.functions.none=function(n,t){return F.standardFunctionAsync(n,t,(async(r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t);for(const n of a){const t=await u(n);let r=null;if(r=g(r)?await t:t,!0===r)return!1}return!0}))},F.functions.filter=function(n,t){return F.standardFunctionAsync(n,t,(async(r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t),c=[];for(const n of a){const t=await u(n);let r=null;r=g(r)?await t:t,!0===r&&c.push(n)}return c}))},F.functions.reduce=function(n,t){return F.standardFunctionAsync(n,t,((r,o,i)=>{e(i,2,3,n,t);const a=i[1].createFunction(n),c=m(i[0],n,t);let l=null;if(i.length>2){const n=u(i[2],null);l=c.reduce((async(n,t)=>{let r=await n;return void 0!==r&&r!==s||(r=null),a(r,t)}),Promise.resolve(n))}else{if(0===c.length)return null;l=c.reduce((async(n,t,r)=>{if(r<=1)return a(n,t);let e=await n;return void 0!==e&&e!==s||(e=null),a(e,t)}))}return l.then((n=>void 0!==n&&n!==s?n:null))}))},F.functions.map=function(n,t){return F.standardFunctionAsync(n,t,(async(r,o,i)=>{e(i,2,2,n,t);const u=i[1].createFunction(n),a=m(i[0],n,t),c=[];for(const n of a){const t=await u(n);let r=null;r=g(r)?await t:t,void 0!==r&&r!==s?c.push(r):c.push(null)}return c}))})}const m=Object.freeze(Object.defineProperty({__proto__:null,registerFunctions:F},Symbol.toStringTag,{value:"Module"}));export{m as A,F as r};
|