@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 9.01 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{ArcadeDate as n,createDateTimeZone as r}from"../ArcadeDate.js";import{toStringEnumKey as e,StringEnum as t}from"../enum.js";import{ArcadeExecutionError as o,ExecutionErrorCodes as u}from"../executionError.js";import{B as l,K as i,u as a,g as s,e as c,f,w as m,N as d,J as h,O as N,P as y}from"../../chunks/languageUtils.js";import{DateOnly as w}from"../../core/sql/DateOnly.js";import{TimeOnly as g}from"../../core/sql/TimeOnly.js";import{getLocale as A}from"../../intl/locale.js";import{DateTime as T}from"luxon";import{isString as D}from"../../support/guards.js";function k(n,r,e){return n+(P(e)?S:p)[r]}function P(n){return n%4==0&&(n%100!=0||n%400==0)}const p=[0,31,59,90,120,151,181,212,243,273,304,334],S=[0,31,60,91,121,152,182,213,244,274,305,335];function Z(n){return null===n?n:!1===n.isValid?null:n}function F(n,r){switch(e(n)){case"":case"default":return i(r);case"z":return"UTC";default:return n}}function O(n,r){return f(n)?n.toArcadeDate():d(n,i(r))}const C=new t(["days","months","minutes","seconds","hours","years","milliseconds"],[["day","days"],["d","days"],["month","months"],["minute","minutes"],["m","minutes"],["second","seconds"],["s","seconds"],["hour","hours"],["h","hours"],["year","years"],["y","years"],["millisecond","milliseconds"],["ms","milliseconds"]]);function U(n){return"M"===n?"months":C.lookup(m(n))??"milliseconds"}function x(e,t){e.today=function(r,e){return t(r,e,((t,o,u)=>{l(u,0,0,r,e);const a=new Date;return a.setHours(0,0,0,0),n.dateJSAndZoneToArcadeDate(a,i(r))}))},e.time=function(r,e){return t(r,e,((t,m,d)=>{switch(l(d,0,4,r,e),d.length){case 0:{const e=n.nowToArcadeDate(i(r));return new g(e.hour,e.minute,e.second,e.millisecond)}case 1:{if(s(d[0]))return d[0].clone();if(c(d[0]))return new g(d[0].hour,d[0].minute,d[0].second,d[0].millisecond);if(f(d[0]))return new g(0,0,0,0);if(D(d[0]))return g.fromString(d[0]);const n=a(d[0]);return!1===isNaN(n)?g.fromMilliseconds(n):null}case 2:return D(d[0])&&D(d[1])?g.fromString(d[0],d[1]):g.fromParts(a(d[0]),a(d[1]),0,0);case 3:return g.fromParts(a(d[0]),a(d[1]),a(d[2]),0);case 4:return g.fromParts(a(d[0]),a(d[1]),a(d[2]),a(d[3]))}throw new o(r,u.InvalidParameter,e)}))},e.dateonly=function(r,e){return t(r,e,((t,o,u)=>{if(l(u,0,3,r,e),3===u.length)return w.fromParts(a(u[0]),a(u[1])+1,a(u[2]));if(2===u.length){const n=m(u[1]);return""===n?null:"X"===n?w.fromSeconds(a(u[0])):"x"===n?w.fromMilliseconds(a(u[0])):w.fromString(m(u[0]),n)}if(1===u.length){if(D(u[0])){if(""===u[0].replaceAll(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""))return null;if(!0===/^[0-9][0-9][0-9][0-9]$/.test(u[0]))return w.fromString(u[0]+"-01-01")}if(f(u[0]))return u[0].clone();if(c(u[0]))return w.fromParts(u[0].year,u[0].monthJS+1,u[0].day);const n=a(u[0]);return!1===isNaN(n)?w.fromMilliseconds(n):D(u[0])?w.fromString(u[0]):null}if(0===u.length){const e=n.nowToArcadeDate(i(r));return!1===e.isValid?null:w.fromParts(e.year,e.monthJS+1,e.day)}return null}))},e.changetimezone=function(e,a){return t(e,a,((t,s,c)=>{if(l(c,2,2,e,a),null===c[0])return null;if(f(c[0]))throw new o(e,u.CannotChangeTimeZoneDateOnly,a);if(f(c[0]))throw new o(e,u.CannotChangeTimeZoneTime,a);const h=d(c[0],i(e));if(null===h)throw new o(e,u.InvalidParameter,a);const N=r(F(m(c[1]),e),!1);if(null===N)return null;const y=n.arcadeDateAndZoneToArcadeDate(h,N);return!1===y.isValid?null:y}))},e.timezone=function(r,e){return t(r,e,((t,o,u)=>{if(l(u,1,2,r,e),s(u[0]))return"Unknown";if(f(u[0]))return"Unknown";const a=d(u[0],i(r));if(null===a)return null;const c=a.timeZone;return"system"===c?n.systemTimeZoneCanonicalName:"utc"===c.toLowerCase()?"UTC":"unknown"===c.toLowerCase()?"Unknown":c}))},e.timezoneoffset=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=d(o[0],i(n));return null===u?null:60*u.timeZoneOffset*1e3}))},e.now=function(r,e){return t(r,e,((t,o,u)=>{l(u,0,0,r,e);const a=n.nowToArcadeDate(i(r));return!1===a.isValid?null:a}))},e.timestamp=function(r,e){return t(r,e,((t,o,u)=>{l(u,0,0,r,e);const i=n.nowUTCToArcadeDate();return!1===i.isValid?null:i}))},e.toutc=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=d(o[0],i(n));return null===u?null:u.toUTC()}))},e.tolocal=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=d(o[0],i(n));return null===u?null:u.toLocal()}))},e.day=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.day}))},e.month=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.monthJS}))},e.year=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.year}))},e.hour=function(n,r){return t(n,r,((e,t,o)=>{if(l(o,1,1,n,r),s(o[0]))return o[0].hour;const u=d(o[0],i(n));return null===u?NaN:u.hour}))},e.second=function(n,r){return t(n,r,((e,t,o)=>{if(l(o,1,1,n,r),s(o[0]))return o[0].second;const u=d(o[0],i(n));return null===u?NaN:u.second}))},e.millisecond=function(n,r){return t(n,r,((e,t,o)=>{if(l(o,1,1,n,r),s(o[0]))return o[0].millisecond;const u=d(o[0],i(n));return null===u?NaN:u.millisecond}))},e.minute=function(n,r){return t(n,r,((e,t,o)=>{if(l(o,1,1,n,r),s(o[0]))return o[0].minute;const u=d(o[0],i(n));return null===u?NaN:u.minute}))},e.week=function(n,r){return t(n,r,((e,t,s)=>{l(s,1,2,n,r);const c=O(s[0],i(n));if(null===c)return NaN;const f=a(h(s[1],0));if(f<0||f>6)throw new o(n,u.InvalidParameter,r);const m=c.day,d=c.monthJS,N=c.year,y=c.dayOfWeekJS,w=k(m,d,N)-1,g=Math.floor(w/7);return y-f+(y-f<0?7:0)<w-7*g?g+1:g}))},e.weekday=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.dayOfWeekJS}))},e.isoweekday=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.dayOfWeekISO}))},e.isomonth=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.monthISO}))},e.isoweek=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.weekISO}))},e.isoyear=function(n,r){return t(n,r,((e,t,o)=>{l(o,1,1,n,r);const u=O(o[0],i(n));return null===u?NaN:u.yearISO}))},e.date=function(e,o){return t(e,o,((t,u,c)=>{if(l(c,0,8,e,o),3===c.length){if(f(c[0])&&s(c[1])&&D(c[2])){const t=r(F(m(c[2])??"unknown",e),!1);return null===t?null:Z(n.fromParts(c[0].year,c[0].month,c[0].day,c[1].hour,c[1].minute,c[1].second,c[1].millisecond,t))}return Z(n.fromParts(a(c[0]),a(c[1])+1,a(c[2]),0,0,0,0,i(e)))}if(4===c.length)return Z(n.fromParts(a(c[0]),a(c[1])+1,a(c[2]),a(c[3]),0,0,0,i(e)));if(5===c.length)return Z(n.fromParts(a(c[0]),a(c[1])+1,a(c[2]),a(c[3]),a(c[4]),0,0,i(e)));if(6===c.length)return Z(n.fromParts(a(c[0]),a(c[1])+1,a(c[2]),a(c[3]),a(c[4]),a(c[5]),0,i(e)));if(7===c.length)return Z(n.fromParts(a(c[0]),a(c[1])+1,a(c[2]),a(c[3]),a(c[4]),a(c[5]),a(c[6]),i(e)));if(8===c.length){const t=r(F(m(c[7])??"unknown",e),!1);return null===t?null:Z(n.fromParts(a(c[0]),a(c[1])+1,a(c[2]),a(c[3]),a(c[4]),a(c[5]),a(c[6]),t))}if(2===c.length){if(f(c[0])&&D(c[1])){const t=r(F(m(c[1])??"unknown",e),!1);return null===t?null:Z(n.fromParts(c[0].year,c[0].month,c[0].day,0,0,0,0,t))}if(f(c[0])&&s(c[1]))return Z(n.fromParts(c[0].year,c[0].month,c[0].day,c[1].hour,c[1].minute,c[1].second,c[1].millisecond,"unknown"));let t,o=m(c[1]);return""===o?null:(o=N(o,!0),t="X"===o?T.fromSeconds(a(c[0])):"x"===o?T.fromMillis(a(c[0])):T.fromFormat(m(c[0]),o,{locale:A(),numberingSystem:"latn"}),t.isValid?n.dateTimeToArcadeDate(t):null)}if(1===c.length){if(f(c[0]))return Z(n.fromParts(c[0].year,c[0].month,c[0].day,0,0,0,0,"unknown"));if(D(c[0])){if(""===c[0].replaceAll(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""))return null;if(!0===/^[0-9][0-9][0-9][0-9]$/.test(c[0]))return d(c[0]+"-01-01",i(e))}const r=a(c[0]);if(!1===isNaN(r)){const t=T.fromMillis(r);return t.isValid?n.dateTimeAndZoneToArcadeDate(t,i(e)):null}return d(c[0],i(e))}return 0===c.length?n.nowToArcadeDate(i(e)):null}))},e.datediff=function(r,e){return t(r,e,((t,o,u)=>{if(l(u,2,4,r,e),s(u[0]))return s(u[1])?u[0].difference(u[1],m(u[2])):NaN;if(s(u[1]))return NaN;if(f(u[0]))return f(u[1])?u[0].difference(u[1],m(u[2])):NaN;if(f(u[1]))return NaN;let a=d(u[0],i(r)),c=d(u[1],i(r));if(null===a||null===c)return NaN;let N=h(u[3],"");return""!==N&&null!==N?(N=F(m(N),r),a=n.arcadeDateAndZoneToArcadeDate(a,N),c=n.arcadeDateAndZoneToArcadeDate(c,N)):a.timeZone!==c.timeZone&&(a.isUnknownTimeZone?a=n.arcadeDateAndZoneToArcadeDate(a,c.timeZone):c=(c.isUnknownTimeZone,n.arcadeDateAndZoneToArcadeDate(c,a.timeZone))),a.diff(c,U(u[2]))}))},e.dateadd=function(n,r){return t(n,r,((e,t,o)=>{l(o,2,3,n,r);let u=a(o[1]);if(isNaN(u)||u===1/0||u===-1/0)return s(o[0])||f(o[0])?o[0].clone():d(o[0],i(n));const c=U(o[2]);if("days"!==c&&"months"!==c||(u=f(o[0])?u:y(u)),s(o[0]))return o[0].plus(c,u);if(f(o[0]))return o[0].plus(c,u);const m=d(o[0],i(n));return null===m?null:m.plus({[c]:u})}))}}export{x as registerFunctions};