@arcgis/core 5.1.0-next.89 → 5.1.0-next.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/arcade/arcadeAsyncRuntime.js +1 -1
- package/arcade/arcadeCompiler.js +1 -1
- package/arcade/arcadeRuntime.js +1 -1
- package/assets/esri/core/workers/RemoteClient.js +1 -1
- package/assets/esri/core/workers/chunks/014a5fad55f97b9b5166.js +1 -0
- package/assets/esri/core/workers/chunks/{9d10db72e342fe63c981.js → 36f6673b23579b88d8f7.js} +1 -1
- package/assets/esri/core/workers/chunks/53ef72edc3ed80bf558c.js +1 -0
- package/assets/esri/core/workers/chunks/{456d269e3982c437010a.js → 71cfab6305f275cfb04e.js} +1 -1
- package/assets/esri/core/workers/chunks/740588250eaffb7301fd.js +1 -0
- package/assets/esri/core/workers/chunks/{7160e3e7340beb7fdb42.js → bea170f08f5261e22d29.js} +1 -1
- package/assets/esri/core/workers/chunks/{d5ad036d282df54b9ddc.js → f971dcfd04af1fd652b4.js} +1 -1
- package/chunks/array.js +1 -1
- package/config.js +1 -1
- package/core/workers/workerFactory.js +1 -1
- package/kernel.js +1 -1
- package/layers/graphics/featureConversionUtils.js +1 -1
- package/package.json +1 -1
- package/support/revision.js +1 -1
- package/symbols/cim/placements/PlacementAtMeasuredUnits.js +1 -1
- package/views/2d/FrameTask.js +1 -1
- package/views/2d/LabelManager.js +1 -1
- package/views/2d/engine/DisplayObject.js +1 -1
- package/views/2d/engine/Stage.js +1 -1
- package/views/2d/engine/webgl/shaders/sources/shaderRepository.js +1 -1
- package/views/2d/input/MapViewInputManager.js +1 -1
- package/views/2d/layers/FeatureLikeLayerView2D.js +1 -1
- package/views/2d/layers/ImageryLayerView2D.js +1 -1
- package/views/2d/layers/LayerView2D.js +1 -1
- package/views/2d/layers/MediaLayerView2D.js +1 -1
- package/views/2d/layers/SubtypeGroupLayerView2D.js +1 -1
- package/views/2d/layers/features/FeatureContainer.js +1 -1
- package/views/2d/layers/features/support/AttributeStore.js +1 -1
- package/views/2d/layers/features/support/FeatureSetReader.js +1 -1
- package/views/2d/layers/graphics/GraphicsView2D.js +1 -1
- package/views/2d/layers/imagery/ImageryView2D.js +1 -1
- package/views/2d/layers/support/UpdateTracking2D.js +1 -1
- package/views/VideoView.js +1 -1
- package/views/View2D.js +1 -1
- package/views/support/waitForResources.js +1 -1
- package/assets/esri/core/workers/chunks/0e3dcf99382478181366.js +0 -1
- package/assets/esri/core/workers/chunks/48acd146bf0241d87647.js +0 -1
- package/assets/esri/core/workers/chunks/e0fcb5fa0e9f21fde2b6.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{toSymbolId as e,neverAbortedSignal as t}from"./arcadeEnvironment.js";import{ArcadeModule as n}from"./ArcadeModule.js";import{ArcadeModuleLoader as r}from"./ArcadeModuleLoader.js";import{resolveBreakpoints as o,collectDeclaredGlobalNames as a,flattenAccessChain as i,collectDeclaredLocalNames as s}from"./compilerUtils.js";import{getNestedOptionalValue as c,getGeometryKeys as l,tryGetMember as u,getMember as f,getGeometryMember as p}from"./containerUtils.js";import{wrapDebugValue as w,renderFunctionDebugName as d}from"./debug.js";import m from"./Dictionary.js";import{ArcadeExecutionError as h,ensureArcadeExecutionError as g}from"./executionError.js";import{Feature as y}from"./Feature.js";import{NativeFunction as b,ScopeMarshalledFunction as v,ArcadeFunction as x,wrapModuleScopedResponse as S}from"./FunctionWrapper.js";import{R as k,I as F,q as j,i as O,z as R,A as I,v as M,B as C,r as E,s as N,u as A,w as B,x as U,k as G,j as L,y as Z,m as z,h as D}from"../chunks/languageUtils.js";import{addFunctionDeclaration as _}from"./treeAnalysis.js";import{A as q}from"../chunks/aiServices.js";import{A as P}from"../chunks/array.js";import{registerFunctions as W}from"./functions/date.js";import{registerFunctions as T}from"./functions/feature.js";import{registerFunctions as V}from"./functions/geomasync.js";import{registerFunctions as K}from"./functions/geometry.js";import{registerFunctions as $}from"./functions/maths.js";import{registerFunctions as Y}from"./functions/stats.js";import{registerFunctions as H}from"./functions/string.js";import{registerFunctions as J}from"./functions/track.js";import Q from"../core/Logger.js";import X from"../geometry/SpatialReference.js";import{isGraphic as ee}from"../support/graphicInstanceUtils.js";import{isBoolean as te,isString as ne,isArray as re,isNumber as oe}from"../support/guards.js";const ae=()=>Q.getLogger("esri.arcade.arcadeAsyncRuntime"),ie=Symbol("uninitialized");function se(e){if(e===ie)throw new h(null,"InvalidIdentifier",null)}function ce(e){return se(e),e}function le(t,n){const r=e(n);if(null!==t.localScope){const e=t.localScope[r];if(void 0!==e)return{scope:t.localScope,id:r,var:e}}const o=t.globalScope[r];if(void 0!==o)return{scope:t.globalScope,id:r,var:o};throw new h(t,"InvalidIdentifier",n)}function ue(t,n,r="InvalidIdentifier"){const o=e(n);if(null!==t.localScope){const e=t.localScope[o];if(void 0!==e)return se(e),e.value}const a=t.globalScope[o];if(void 0!==a)return se(a),a.value;throw new h(t,r,n)}const fe=function(){};async function pe(e,t){const n=[];for(let r=0;r<t.arguments.length;r++)n.push(await xe(e,t.arguments[r]));return n}async function we(e,t,n){if(!0===t.preparsed)return n(e,null,t.arguments);return n(e,t,await pe(e,t))}fe.prototype=Object.freeze(Object.create(null));class de extends x{constructor(e,t,n,r){super(),this.definition=e,this.context=t,this._params=n,this._locals=r}get debugName(){return this.definition.id.name}createFunction(e){return(...t)=>{const n={spatialReference:this.context.spatialReference,console:this.context.console,lrucache:this.context.lrucache,timeZone:this.context.timeZone??null,exports:this.context.exports,libraryResolver:this.context.libraryResolver,interceptor:this.context.interceptor,services:this.context.services,abortSignal:this.context.abortSignal,localScope:new fe,depthCounter:{depth:e.depthCounter.depth+1},globalScope:this.context.globalScope,track:this.context.track};if(n.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",null);return me(n,this.definition.body,this._params,this._locals,t,null)}}call(e,t){return ge(e,t,(n,r,o)=>{const a={spatialReference:e.spatialReference,services:e.services,console:e.console,libraryResolver:e.libraryResolver,exports:e.exports,lrucache:e.lrucache,timeZone:e.timeZone??null,interceptor:e.interceptor,localScope:new fe,abortSignal:e.abortSignal,globalScope:e.globalScope,depthCounter:{depth:e.depthCounter.depth+1},track:e.track};if(a.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",t);return me(a,this.definition.body,this._params,this._locals,o,t)})}marshalledCall(e,t,n,r){return r(e,t,async(o,a,i)=>{const s={spatialReference:e.spatialReference,services:e.services,globalScope:n.globalScope,depthCounter:{depth:e.depthCounter.depth+1},libraryResolver:e.libraryResolver,exports:e.exports,console:e.console,abortSignal:e.abortSignal,lrucache:e.lrucache,timeZone:e.timeZone??null,interceptor:e.interceptor,localScope:new fe,track:e.track};return i=i.map(t=>!O(t)||t instanceof v?t:S(t,e,r)),S(await me(s,this.definition.body,this._params,this._locals,i,t),n,r)})}}async function me(e,t,n,r,o,a){if(n.length!==o.length)throw new h(e,"WrongNumberOfParameters",a);if(null!=e.localScope){for(let t=0;t<n.length;t++)e.localScope[n[t]]={value:o[t]};for(const t of r)e.localScope[t]=ie}const i=await Se(e,t);if(i instanceof k)return i.value;if(i===R)throw new h(e,"UnexpectedToken",a);if(i===I)throw new h(e,"UnexpectedToken",a);return i instanceof F?i.value:i}class he extends n{constructor(e){super(),this.moduleGlobalContext=e}global(t){const n=e(t);if(!this.moduleGlobalContext.exports.has(n))throw new h(null,"ModuleExportNotFound",null);const r=this.moduleGlobalContext.globalScope[n];if(se(r),O(r.value)&&!(r.value instanceof v)){const e=new v;return e.fn=r.value,e.parameterEvaluator=we,e.context=this.moduleGlobalContext,this.moduleGlobalContext.globalScope[n]={value:e},e}return r.value}setGlobal(t,n){if(O(n))throw new h(null,"AssignModuleFunction",null);const r=e(t);if(!this.moduleGlobalContext.exports.has(r))throw new h(null,"ModuleExportNotFound",null);this.moduleGlobalContext.globalScope[r]={value:n}}hasGlobal(t){return this.moduleGlobalContext.exports.has(e(t))}static async load(e,n){const{globals:o,exports:i}=a(n),s=new pt;for(const t of o)t in s||(s[t]=ie);const c=e.spatialReference??X.WebMercator,l={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??dt,abortSignal:e.abortSignal??t,timeZone:e.timeZone??null,spatialReference:c,track:null,depthCounter:{depth:1},libraryResolver:new r(e.libraryResolver._moduleSingletons,n.loadedModules),exports:i,localScope:null,globalScope:s};return await Ze(l,n),new he(l)}}async function ge(e,t,n){if(!0===t.preparsed)return n(e,null,t.arguments);return n(e,t,await pe(e,t))}function ye(e,t){const n=new Map;for(const r of Object.getOwnPropertyNames(e))n.set(r,e[r]===ie?null:w(e[r].value,t));return n}function be(e){return e instanceof de?`ƒ ${e.debugName}(${e.definition.params.map(e=>e.name).join(", ")})`:d(e)}function ve(e,t){const n=e.services?.debugger;if(null==n)return;const r={renderFunction:be,defaultTimeZone:e.timeZone??"system"};return n.pause(t,{globals:ye(e.globalScope,r),locals:null==e.localScope?null:ye(e.localScope,r)})}async function xe(e,t){t.breakpoint&&await ve(e,t.breakpoint);try{switch(t.type){case"UpdateExpression":return await Ae(e,t);case"AssignmentExpression":return await Ue(e,t);case"TemplateLiteral":return await ot(e,t);case"Identifier":return tt(e,t);case"MemberExpression":return await Ve(e,t);case"Literal":return t.value;case"CallExpression":return await nt(e,t);case"UnaryExpression":return await Je(e,t);case"BinaryExpression":return await Xe(e,t);case"LogicalExpression":return await et(e,t);case"ArrayExpression":return await Qe(e,t);case"ObjectExpression":return await ke(e,t);case"MemberAccessChainExpression":return await He(e,t);case"SafeMemberExpression":throw ae().error("SafeMemberExpression outside of MemberAccessChainExpression"),new h(null,"Unrecognized",t);default:throw new h(e,"Unrecognized",t)}}catch(n){throw g(e,t,n)}}async function Se(e,t){t.breakpoint&&await ve(e,t.breakpoint);try{switch(t.type){case"ImportDeclaration":return await qe(e,t);case"ExportNamedDeclaration":return await Pe(e,t);case"VariableDeclaration":return await We(e,t);case"BlockStatement":return await Ze(e,t);case"FunctionDeclaration":return await _e(e,t);case"ReturnStatement":return await De(e,t);case"IfStatement":return await Le(e,t);case"ExpressionStatement":return await Ge(e,t);case"ForStatement":return await je(e,t);case"WhileStatement":return await Fe(e,t);case"ForInStatement":return await Ee(e,t);case"ForOfStatement":return await Ne(e,t);case"BreakStatement":return R;case"EmptyStatement":return M;case"ContinueStatement":return I;default:throw new h(e,"Unrecognized",t)}}catch(n){throw g(e,t,n)}}async function ke(e,t){const n=[];for(let i=0;i<t.properties.length;i++){const r=t.properties[i],o=await xe(e,r.value),a="Identifier"===r.key.type?r.key.name:await xe(e,r.key);n[i]={key:a,value:o}}const r=Object.create(null),o=new Map;for(let i=0;i<n.length;i++){const a=n[i];if(O(a.value))throw new h(e,"NoFunctionInDictionary",t);if(!1===ne(a.key))throw new h(e,"KeyMustBeString",t);let s=a.key.toString();const c=s.toLowerCase();o.has(c)?s=o.get(c):o.set(c,s),a.value===M?r[s]=null:r[s]=a.value}const a=new m(r);return a.immutable=!1,a}async function Fe(e,t){let n=await xe(e,t.test);if(!1===n)return M;if(!0!==n)throw new h(e,"BooleanConditionRequired",t);for(;!0===n;){const r=await Se(e,t.body);if(r===R)break;if(r instanceof k)return r;if(n=await xe(e,t.test),!0!==n&&!1!==n)throw new h(e,"BooleanConditionRequired",t)}return M}async function je(e,t){try{for(null!==t.init&&("VariableDeclaration"===t.init.type?await Se(e,t.init):await xe(e,t.init));;){if(null!==t.test){const n=await xe(e,t.test);if(!0===e.abortSignal?.aborted)throw new h(e,"Cancelled",t);if(!1===n)break;if(!0!==n)throw new h(e,"BooleanConditionRequired",t)}const n=await Se(e,t.body);if(n===R)break;if(n instanceof k)return n;null!==t.update&&await xe(e,t.update)}return M}catch(n){throw n}}async function Oe(e,t,n,r,o="i"){const a=n.length;for(let i=0;i<a;i++){if("k"===o){if(i>=n.length)throw new h(e,"OutOfBounds",t);r.scope[r.id]={value:n[i]}}else r.scope[r.id]={value:i};const a=await Se(e,t.body);if(a===R)break;if(a instanceof k)return a}return M}async function Re(e,t,n,r,o="i"){const a=n.length();for(let i=0;i<a;i++){r.scope[r.id]="k"===o?{value:n.get(i)}:{value:i};const a=await Se(e,t.body);if(a===R)break;if(a instanceof k)return a}return M}async function Ie(e,t,n,r){e:for await(const o of await n.queryAll(e.abortSignal))for(const a of o){r.scope[r.id]={value:y.createFromGraphicLikeObject(a.geometry,a.attributes,n,e.timeZone)};const o=await Se(e,t.body);if(o===R)break e;if(o instanceof k)return o}return M}async function Me(e,t,n,r){for(const o of n.keys()){const a=n.field(o);r.scope[r.id]={value:m.containerEntry(o,a)};const i=await Se(e,t.body);if(i===R)break;if(i instanceof k)return i}return M}async function Ce(e,t,n,r){for(const o of l(n)){const a=p(n,o,e,t);r.scope[r.id]={value:m.containerEntry(o,a)};const i=await Se(e,t.body);if(i===R)break;if(i instanceof k)return i}return M}async function Ee(e,t){const n=await xe(e,t.right);"VariableDeclaration"===t.left.type&&await Se(e,t.left);const r=le(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);return re(n)||ne(n)?await Oe(e,t,n,r):L(n)?await Re(e,t,n,r):n instanceof m||Z(n)?await Oe(e,t,n.keys(),r,"k"):z(n)?await Ie(e,t,n,r):D(n)?await Oe(e,t,l(n),r,"k"):M}async function Ne(e,t){const n=await xe(e,t.right);"VariableDeclaration"===t.left.type&&await Se(e,t.left);const r=le(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);return re(n)||ne(n)?await Oe(e,t,n,r,"k"):L(n)?await Re(e,t,n,r,"k"):n instanceof m||Z(n)?await Me(e,t,n,r):z(n)?await Ie(e,t,n,r):D(n)?await Ce(e,t,n,r):M}async function Ae(e,t){const n=t.argument;if("CallExpression"===n.type)throw new h(e,"NeverReach",t);if("MemberExpression"===n.type){const r=await xe(e,n.object);let o,a;if(!0===n.computed)o=await xe(e,n.property);else{if("Identifier"!==n.property.type)throw new h(e,"Unrecognized",t);o=n.property.name}if(re(r)){if(!oe(o))throw new h(e,"ArrayAccessMustBeNumber",t);if(o<0&&(o=r.length+o),o<0||o>=r.length)throw new h(e,"OutOfBounds",t);a=E(r[o]),r[o]="++"===t.operator?a+1:a-1}else if(r instanceof m){if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==r.hasField(o))throw new h(e,"FieldNotFound",t,{key:o});a=E(r.field(o)),r.setField(o,"++"===t.operator?a+1:a-1)}else if(r instanceof he){if(!1===ne(o))throw new h(e,"ModuleAccessorMustBeString",t);if(!0!==r.hasGlobal(o))throw new h(e,"ModuleExportNotFound",t);a=E(r.global(o)),r.setGlobal(o,"++"===t.operator?a+1:a-1)}else{if(!G(r))throw L(r)?new h(e,"Immutable",t):new h(e,"InvalidParameter",t);if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==r.hasField(o))throw new h(e,"FieldNotFound",t,{key:o});a=E(r.field(o)),r.setField(o,"++"===t.operator?a+1:a-1)}return!1===t.prefix?a:"++"===t.operator?a+1:a-1}const r=le(e,n),o=E(ce(r.var).value),a="++"===t.operator?o+1:o-1;return r.scope[r.id]={value:a},!1===t.prefix?o:"++"===t.operator?o+1:o-1}function Be(e,t,n,r,o){switch(t){case"=":return e===M?null:e;case"/=":return E(n)/E(e);case"*=":return E(n)*E(e);case"-=":return E(n)-E(e);case"+=":return ne(n)||ne(e)?N(n)+N(e):E(n)+E(e);case"%=":return E(n)%E(e);default:throw new h(o,"UnsupportedOperator",r)}}async function Ue(e,t){const n=t.left;if("MemberExpression"===n.type){const r=await xe(e,n.object);let o;if(!0===n.computed)o=await xe(e,n.property);else{if("Identifier"!==n.property.type)throw new h(e,"InvalidIdentifier",t);o=n.property.name}const a=await xe(e,t.right);if(re(r)){if(!oe(o))throw new h(e,"ArrayAccessMustBeNumber",t);if(o<0&&(o=r.length+o),o<0||o>r.length)throw new h(e,"OutOfBounds",t);if(o===r.length){if("="!==t.operator)throw new h(e,"OutOfBounds",t);r[o]=Be(a,t.operator,r[o],t,e)}else r[o]=Be(a,t.operator,r[o],t,e)}else if(r instanceof m){if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(o))r.setField(o,Be(a,t.operator,r.field(o),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:o});r.setField(o,Be(a,t.operator,null,t,e))}}else if(r instanceof he){if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==r.hasGlobal(o))throw new h(e,"ModuleExportNotFound",t);r.setGlobal(o,Be(a,t.operator,r.global(o),t,e))}else{if(!G(r))throw L(r)?new h(e,"Immutable",t):new h(e,"InvalidParameter",t);if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(o))r.setField(o,Be(a,t.operator,r.field(o),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:o});r.setField(o,Be(a,t.operator,null,t,e))}}return M}const r=le(e,n),o=await xe(e,t.right);return r.scope[r.id]={value:Be(o,t.operator,"="!==t.operator?ce(r.var).value:null,t,e)},M}async function Ge(e,t){const n=await xe(e,t.expression);return n===M?M:new F(n)}async function Le(e,t){const n=await xe(e,t.test);if(!0===n)return Se(e,t.consequent);if(!1===n)return null!==t.alternate?Se(e,t.alternate):M;throw new h(e,"BooleanConditionRequired",t)}async function Ze(e,t){return ze(e,t,0)}async function ze(e,t,n){if(n>=t.body.length)return M;const r=await Se(e,t.body[n]);return r instanceof k||r===R||r===I||n===t.body.length-1?r:ze(e,t,n+1)}async function De(e,t){if(null===t.argument)return new k(M);const n=await xe(e,t.argument);return new k(n)}async function _e(t,n){if(null!=t.localScope)throw ae().error("Function declarations are only valid in global scope."),new h(t,"NeverReach",n);const r=e(n.id);if(!(r in t.globalScope))throw ae().error(`Function "${r}" not declared.`),new h(t,"NeverReach",n);const o=s(n),a=n.params.map(t=>e(t)),i=Array.from(o).filter(e=>!a.includes(e));return t.globalScope[r]={value:new de(n,t,a,i)},M}async function qe(e,t){const n=le(e,t.specifiers[0].local),r=e.libraryResolver;if(null==r)throw ae().error("Internal error: module loader not initialized"),new h(e,"NeverReach",t);const o=r.loadLibrary(n.id);let a;return r._moduleSingletons?.has(o.uri)?a=r._moduleSingletons.get(o.uri):(a=await he.load(e,o.syntax),r._moduleSingletons?.set(o.uri,a)),n.scope[n.id]={value:a},M}async function Pe(e,t){return await Se(e,t.declaration),M}async function We(e,t){for(const n of t.declarations)await Te(e,n);return M}async function Te(e,t){t.breakpoint&&await ve(e,t.breakpoint);let n=null;n=null===t.init?null:await xe(e,t.init),n===M&&(n=null);const r=le(e,t.id);r.scope[r.id]={value:n}}async function Ve(e,t){return Ke(e,await xe(e,t.object),t)}async function Ke(e,t,n){const r=n.computed?await xe(e,n.property):n.property.name;return f(t,r)}async function $e(e,t,n){for(const r of n)switch(r.type){case"MemberExpression":t=await Ke(e,t,r);break;case"CallExpression":t=await rt(e,t,r);break;default:throw new h(null,"Unrecognized",r)}return t}async function Ye(e,t,n){const r=n.computed?await xe(e,n.property):n.property.name;return u(t,r)}async function He(e,t){const n=i(t);let r=await xe(e,n.root);for(const o of n.sections){const t=await Ye(e,r,o.checked);if(null==t)return null;r=await $e(e,t,o.unchecked)}return r}async function Je(e,t){const n=await xe(e,t.argument);if(te(n)){if("!"===t.operator)return!n;if("-"===t.operator)return-1*E(n);if("+"===t.operator)return 1*E(n);if("~"===t.operator)return~E(n);throw new h(e,"UnsupportUnaryOperator",t)}if("-"===t.operator)return-1*E(n);if("+"===t.operator)return 1*E(n);if("~"===t.operator)return~E(n);throw new h(e,"UnsupportUnaryOperator",t)}async function Qe(e,t){const n=[];for(let r=0;r<t.elements.length;r++)n.push(await xe(e,t.elements[r]));for(let r=0;r<n.length;r++){if(O(n[r]))throw new h(e,"NoFunctionInArray",t);n[r]===M&&(n[r]=null)}return n}async function Xe(e,t){const n=await xe(e,t.left),r=await xe(e,t.right);switch(t.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":return U(E(n),E(r),t.operator);case"==":return B(n,r);case"!=":return!B(n,r);case"<":case">":case"<=":case">=":return A(n,r,t.operator);case"+":return ne(n)||ne(r)?N(n)+N(r):E(n)+E(r);case"-":return E(n)-E(r);case"*":return E(n)*E(r);case"/":return E(n)/E(r);case"%":return E(n)%E(r);default:throw t.operator,new h(e,"UnsupportedOperator",t)}}async function et(e,t){const n=await xe(e,t.left);if(!te(n))throw new h(e,"LogicalExpressionOnlyBoolean",t);switch(t.operator){case"||":{if(!0===n)return n;const r=await xe(e,t.right);if(te(r))return r;throw new h(e,"LogicExpressionOrAnd",t)}case"&&":{if(!1===n)return n;const r=await xe(e,t.right);if(te(r))return r;throw new h(e,"LogicExpressionOrAnd",t)}default:throw t.operator,new h(e,"LogicExpressionOrAnd",t)}}function tt(e,t){return ue(e,t)}async function nt(e,t){let n;if("Identifier"===t.callee.type){const r=t.callee;r.breakpoint&&await ve(e,r.breakpoint),n=ue(e,t.callee,"FunctionNotFound")}else n=await xe(e,t.callee);return rt(e,n,t)}async function rt(e,t,n){if(O(t))return t.call(e,n);throw new h(e,"CallNonFunction",n)}async function ot(e,t){let n="",r=0;for(const o of t.quasis)if(n+=o.value?o.value.cooked:"",!1===o.tail){if(t.expressions[r]){const o=await xe(e,t.expressions[r]);if(O(o))throw new h(e,"NoFunctionInTemplateLiteral",t);n+=N(o)}r++}return n}async function at(e,t){C(null===t.arguments?[]:t.arguments,3,3,e,t);const n=await xe(e,t.arguments[0]);if(!1===te(n))throw new h(e,"BooleanConditionRequired",t);return xe(e,n?t.arguments[1]:t.arguments[2])}async function it(e,t){C(null===t.arguments?[]:t.arguments,2,3,e,t);const n=await xe(e,t.arguments[0]);if(3===t.arguments.length){const r=await xe(e,t.arguments[1]),o=c(n,r);return null!=o&&""!==o?o:xe(e,t.arguments[2])}return null==n||""===n?xe(e,t.arguments[1]):n}async function st(e,t){if(t.arguments.length<2)throw new h(e,"WrongNumberOfParameters",t);if(2===t.arguments.length)return xe(e,t.arguments[1]);if((t.arguments.length-1)%2==0)throw new h(e,"WrongNumberOfParameters",t);return ct(e,t,1,await xe(e,t.arguments[0]))}async function ct(e,t,n,r){const o=await xe(e,t.arguments[n]);if(B(o,r))return xe(e,t.arguments[n+1]);const a=t.arguments.length-n;return 1===a?xe(e,t.arguments[n]):2===a?null:3===a?xe(e,t.arguments[n+2]):ct(e,t,n+2,r)}async function lt(e,t){if(t.arguments.length<3)throw new h(e,"WrongNumberOfParameters",t);if(t.arguments.length%2==0)throw new h(e,"WrongNumberOfParameters",t);const n=await xe(e,t.arguments[0]);if(!1===te(n))throw new h(e,"BooleanConditionRequired",t.arguments[0]);return ut(e,t,0,n)}async function ut(e,t,n,r){if(!0===r)return xe(e,t.arguments[n+1]);if(3===t.arguments.length-n)return xe(e,t.arguments[n+2]);const o=await xe(e,t.arguments[n+2]);if(!1===te(o))throw new h(e,"ModuleExportNotFound",t.arguments[n+2]);return ut(e,t,n+2,o)}function ft(){const e=Object.create(null);W(e,we),H(e,we),T(e,we,tt),$(e,we),K(e,we),Y(e,we),J(e,we),V({functions:e,compiled:!1,signatures:null,evaluateIdentifier:null,mode:"async",standardFunction:we,standardFunctionAsync:ge}),e.iif=at,e.defaultvalue=it,e.decode=st,e.when=lt;const t=function(){this.textformatting={value:m.textFormatting()}};t.prototype=Object.create(null),t.prototype.infinity=Object.freeze({value:Number.POSITIVE_INFINITY}),t.prototype.pi=Object.freeze({value:Math.PI});for(const[n,r]of Object.entries(e))t.prototype[n]=Object.freeze({value:new b(r,n)});return t}const pt=ft();function wt(e){const t={mode:"async",compiled:!1,functions:Object.create(null),signatures:[],standardFunction:we,standardFunctionAsync:ge,evaluateIdentifier:tt};for(let n=0;n<e.length;n++)e[n].registerFunctions(t);for(const[n,r]of Object.entries(t.functions))pt.prototype[n]=Object.freeze({value:new b(r,n)});for(let n=0;n<t.signatures.length;n++)_(t.signatures[n],"async")}function dt(e){console.log(e)}function mt(n,i){const s=new Set(Object.keys(i?.vars||{}).map(t=>e(t))),c=new Set(Object.keys(i?.customfunctions||{}).map(t=>e(t)));if(i?.breakpoints)for(const[e,t]of o(i.breakpoints,n))e.breakpoint=t;const{globals:l,exports:u}=a(n);return async e=>{const o=e.spatialReference??X.WebMercator;let a=null;n.usesModules&&(a=new r(new Map,n.loadedModules));const i=new pt;for(const t of c)null!=e.customfunctions&&t in e.customfunctions?i[t]={value:new b(e.customfunctions[t],t)}:i[t]=ie;for(const t of s){if(null==e.vars||!(t in e.vars)){t in i||(i[t]=ie);continue}const n=e.vars[t]??null;ee(n)?i[t]={value:y.createFromGraphic(n,e.timeZone??null)}:i[t]={value:n}}for(const t of l)t in i||(i[t]=ie);const f={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??dt,abortSignal:e.abortSignal??t,timeZone:e.timeZone??null,spatialReference:o,track:e.track,depthCounter:{depth:1},libraryResolver:a,exports:u,localScope:null,globalScope:i},p=await Ze(f,n);if(p instanceof k||p instanceof F){const e=p.value;if(j(e))return null;if(O(e))throw new h(f,"IllegalResult",null);return e}if(j(p))return null;if(p===R)throw new h(f,"IllegalResult",null);if(p===I)throw new h(f,"IllegalResult",null);throw new h(f,"NeverReach",null)}}function ht(e,t){return mt(e,t)(t)}wt([P]),wt([q]);export{ht as executeScript,wt as extend,mt as prepareScript};
|
|
2
|
+
import{toSymbolId as e,neverAbortedSignal as t}from"./arcadeEnvironment.js";import{ArcadeModule as n}from"./ArcadeModule.js";import{ArcadeModuleLoader as r}from"./ArcadeModuleLoader.js";import{resolveBreakpoints as o,collectDeclaredGlobalNames as a,flattenAccessChain as i,collectDeclaredLocalNames as s}from"./compilerUtils.js";import{getNestedOptionalValue as c,getGeometryKeys as l,tryGetMember as u,getMember as f,getGeometryMember as p}from"./containerUtils.js";import{wrapDebugValue as w,renderFunctionDebugName as d}from"./debug.js";import m from"./Dictionary.js";import{ArcadeExecutionError as h,ensureArcadeExecutionError as g}from"./executionError.js";import{Feature as y}from"./Feature.js";import{NativeFunction as b,ScopeMarshalledFunction as v,ArcadeFunction as x,wrapModuleScopedResponse as S}from"./FunctionWrapper.js";import{R as k,I as F,q as j,i as O,z as R,A as I,v as M,B as C,r as E,s as N,u as A,w as B,x as U,k as G,j as z,y as L,m as Z,h as D}from"../chunks/languageUtils.js";import{addFunctionDeclaration as _}from"./treeAnalysis.js";import{A as q}from"../chunks/aiServices.js";import{A as P}from"../chunks/array.js";import{registerFunctions as W}from"./functions/date.js";import{registerFunctions as T}from"./functions/feature.js";import{registerFunctions as V}from"./functions/geomasync.js";import{registerFunctions as K}from"./functions/geometry.js";import{registerFunctions as $}from"./functions/maths.js";import{registerFunctions as Y}from"./functions/stats.js";import{registerFunctions as H}from"./functions/string.js";import{registerFunctions as J}from"./functions/track.js";import Q from"../core/Logger.js";import X from"../geometry/SpatialReference.js";import{isGraphic as ee}from"../support/graphicInstanceUtils.js";import{isBoolean as te,isString as ne,isArray as re,isNumber as oe}from"../support/guards.js";const ae=()=>Q.getLogger("esri.arcade.arcadeAsyncRuntime"),ie=Symbol("uninitialized");function se(e){if(e===ie)throw new h(null,"InvalidIdentifier",null)}function ce(e){return se(e),e}function le(t,n){const r=e(n);if(null!==t.localScope){const e=t.localScope[r];if(void 0!==e)return{scope:t.localScope,id:r,var:e}}const o=t.globalScope[r];if(void 0!==o)return{scope:t.globalScope,id:r,var:o};throw new h(t,"InvalidIdentifier",n)}function ue(t,n,r="InvalidIdentifier"){const o=e(n);if(null!==t.localScope){const e=t.localScope[o];if(void 0!==e)return se(e),e.value}const a=t.globalScope[o];if(void 0!==a)return se(a),a.value;throw new h(t,r,n)}const fe=function(){};async function pe(e,t){const n=[];for(let r=0;r<t.arguments.length;r++)n.push(await xe(e,t.arguments[r]));return n}async function we(e,t,n){if(!0===t.preparsed)return n(e,null,t.arguments);return n(e,t,await pe(e,t))}fe.prototype=Object.freeze(Object.create(null));class de extends x{constructor(e,t,n,r){super(),this.definition=e,this.context=t,this._params=n,this._locals=r}get debugName(){return this.definition.id.name}createFunction(e){return(...t)=>{const n={spatialReference:this.context.spatialReference,console:this.context.console,lrucache:this.context.lrucache,timeZone:this.context.timeZone??null,exports:this.context.exports,libraryResolver:this.context.libraryResolver,interceptor:this.context.interceptor,services:this.context.services,abortSignal:this.context.abortSignal,localScope:new fe,depthCounter:{depth:e.depthCounter.depth+1},globalScope:this.context.globalScope,track:this.context.track};if(n.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",null);return me(n,this.definition.body,this._params,this._locals,t,null)}}call(e,t){return ge(e,t,(n,r,o)=>{const a={spatialReference:e.spatialReference,services:e.services,console:e.console,libraryResolver:e.libraryResolver,exports:e.exports,lrucache:e.lrucache,timeZone:e.timeZone??null,interceptor:e.interceptor,localScope:new fe,abortSignal:e.abortSignal,globalScope:e.globalScope,depthCounter:{depth:e.depthCounter.depth+1},track:e.track};if(a.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",t);return me(a,this.definition.body,this._params,this._locals,o,t)})}marshalledCall(e,t,n,r){return r(e,t,async(o,a,i)=>{const s={spatialReference:e.spatialReference,services:e.services,globalScope:n.globalScope,depthCounter:{depth:e.depthCounter.depth+1},libraryResolver:e.libraryResolver,exports:e.exports,console:e.console,abortSignal:e.abortSignal,lrucache:e.lrucache,timeZone:e.timeZone??null,interceptor:e.interceptor,localScope:new fe,track:e.track};return i=i.map(t=>!O(t)||t instanceof v?t:S(t,e,r)),S(await me(s,this.definition.body,this._params,this._locals,i,t),n,r)})}}async function me(e,t,n,r,o,a){if(n.length!==o.length)throw new h(e,"WrongNumberOfParameters",a);if(null!=e.localScope){for(let t=0;t<n.length;t++)e.localScope[n[t]]={value:o[t]};for(const t of r)e.localScope[t]=ie}const i=await Se(e,t);if(i instanceof k)return i.value;if(i===R)throw new h(e,"UnexpectedToken",a);if(i===I)throw new h(e,"UnexpectedToken",a);return i instanceof F?i.value:i}class he extends n{constructor(e){super(),this.moduleGlobalContext=e}global(t){const n=e(t);if(!this.moduleGlobalContext.exports.has(n))throw new h(null,"ModuleExportNotFound",null);const r=this.moduleGlobalContext.globalScope[n];if(se(r),O(r.value)&&!(r.value instanceof v)){const e=new v;return e.fn=r.value,e.parameterEvaluator=we,e.context=this.moduleGlobalContext,this.moduleGlobalContext.globalScope[n]={value:e},e}return r.value}setGlobal(t,n){if(O(n))throw new h(null,"AssignModuleFunction",null);const r=e(t);if(!this.moduleGlobalContext.exports.has(r))throw new h(null,"ModuleExportNotFound",null);this.moduleGlobalContext.globalScope[r]={value:n}}hasGlobal(t){return this.moduleGlobalContext.exports.has(e(t))}static async load(e,n){const{globals:o,exports:i}=a(n),s=new pt;for(const t of o)t in s||(s[t]=ie);const c=e.spatialReference??X.WebMercator,l={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??dt,abortSignal:e.abortSignal??t,timeZone:e.timeZone??null,spatialReference:c,track:null,depthCounter:{depth:1},libraryResolver:new r(e.libraryResolver._moduleSingletons,n.loadedModules),exports:i,localScope:null,globalScope:s};return await Le(l,n),new he(l)}}async function ge(e,t,n){if(!0===t.preparsed)return n(e,null,t.arguments);return n(e,t,await pe(e,t))}function ye(e,t){const n=new Map;for(const r of Object.getOwnPropertyNames(e))n.set(r,e[r]===ie?null:w(e[r].value,t));return n}function be(e){return e instanceof de?`ƒ ${e.debugName}(${e.definition.params.map(e=>e.name).join(", ")})`:d(e)}function ve(e,t){const n=e.services?.debugger;if(null==n)return;const r={renderFunction:be,defaultTimeZone:e.timeZone??"system"};return n.pause(t,{globals:ye(e.globalScope,r),locals:null==e.localScope?null:ye(e.localScope,r)})}async function xe(e,t){t.breakpoint&&await ve(e,t.breakpoint);try{switch(t.type){case"UpdateExpression":return await Ae(e,t);case"AssignmentExpression":return await Ue(e,t);case"TemplateLiteral":return await ot(e,t);case"Identifier":return tt(e,t);case"MemberExpression":return await Ve(e,t);case"Literal":return t.value;case"CallExpression":return await nt(e,t);case"UnaryExpression":return await Je(e,t);case"BinaryExpression":return await Xe(e,t);case"LogicalExpression":return await et(e,t);case"ArrayExpression":return await Qe(e,t);case"ObjectExpression":return await ke(e,t);case"MemberAccessChainExpression":return await He(e,t);case"SafeMemberExpression":throw ae().error("SafeMemberExpression outside of MemberAccessChainExpression"),new h(null,"Unrecognized",t);default:throw new h(e,"Unrecognized",t)}}catch(n){throw g(e,t,n)}}async function Se(e,t){t.breakpoint&&await ve(e,t.breakpoint);try{switch(t.type){case"ImportDeclaration":return await qe(e,t);case"ExportNamedDeclaration":return await Pe(e,t);case"VariableDeclaration":return await We(e,t);case"BlockStatement":return await Le(e,t);case"FunctionDeclaration":return await _e(e,t);case"ReturnStatement":return await De(e,t);case"IfStatement":return await ze(e,t);case"ExpressionStatement":return await Ge(e,t);case"ForStatement":return await je(e,t);case"WhileStatement":return await Fe(e,t);case"ForInStatement":return await Ee(e,t);case"ForOfStatement":return await Ne(e,t);case"BreakStatement":return R;case"EmptyStatement":return M;case"ContinueStatement":return I;default:throw new h(e,"Unrecognized",t)}}catch(n){throw g(e,t,n)}}async function ke(e,t){const n=[];for(let i=0;i<t.properties.length;i++){const r=t.properties[i],o=await xe(e,r.value),a="Identifier"===r.key.type?r.key.name:await xe(e,r.key);n[i]={key:a,value:o}}const r=Object.create(null),o=new Map;for(let i=0;i<n.length;i++){const a=n[i];if(O(a.value))throw new h(e,"NoFunctionInDictionary",t);if(!1===ne(a.key))throw new h(e,"KeyMustBeString",t);let s=a.key.toString();const c=s.toLowerCase();o.has(c)?s=o.get(c):o.set(c,s),a.value===M?r[s]=null:r[s]=a.value}const a=new m(r);return a.immutable=!1,a}async function Fe(e,t){let n=await xe(e,t.test);if(!1===n)return M;if(!0!==n)throw new h(e,"BooleanConditionRequired",t);for(;!0===n;){const r=await Se(e,t.body);if(r===R)break;if(r instanceof k)return r;if(n=await xe(e,t.test),!0!==n&&!1!==n)throw new h(e,"BooleanConditionRequired",t)}return M}async function je(e,t){try{for(null!==t.init&&("VariableDeclaration"===t.init.type?await Se(e,t.init):await xe(e,t.init));;){if(null!==t.test){const n=await xe(e,t.test);if(!0===e.abortSignal?.aborted)throw new h(e,"Cancelled",t);if(!1===n)break;if(!0!==n)throw new h(e,"BooleanConditionRequired",t)}const n=await Se(e,t.body);if(n===R)break;if(n instanceof k)return n;null!==t.update&&await xe(e,t.update)}return M}catch(n){throw n}}async function Oe(e,t,n,r,o="i"){const a=n.length;for(let i=0;i<a;i++){if("k"===o){if(i>=n.length)throw new h(e,"OutOfBounds",t);r.scope[r.id]={value:n[i]}}else r.scope[r.id]={value:i};const a=await Se(e,t.body);if(a===R)break;if(a instanceof k)return a}return M}async function Re(e,t,n,r,o="i"){const a=n.length();for(let i=0;i<a;i++){r.scope[r.id]="k"===o?{value:n.get(i)}:{value:i};const a=await Se(e,t.body);if(a===R)break;if(a instanceof k)return a}return M}async function Ie(e,t,n,r){e:for await(const o of await n.queryAll(e.abortSignal))for(const a of o){r.scope[r.id]={value:y.createFromGraphicLikeObject(a.geometry,a.attributes,n,e.timeZone)};const o=await Se(e,t.body);if(o===R)break e;if(o instanceof k)return o}return M}async function Me(e,t,n,r){for(const o of n.keys()){const a=n.field(o);r.scope[r.id]={value:m.containerEntry(o,a)};const i=await Se(e,t.body);if(i===R)break;if(i instanceof k)return i}return M}async function Ce(e,t,n,r){for(const o of l(n)){const a=p(n,o,e,t);r.scope[r.id]={value:m.containerEntry(o,a)};const i=await Se(e,t.body);if(i===R)break;if(i instanceof k)return i}return M}async function Ee(e,t){const n=await xe(e,t.right);"VariableDeclaration"===t.left.type&&await Se(e,t.left);const r=le(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);return re(n)||ne(n)?await Oe(e,t,n,r):z(n)?await Re(e,t,n,r):n instanceof m||L(n)?await Oe(e,t,n.keys(),r,"k"):Z(n)?await Ie(e,t,n,r):D(n)?await Oe(e,t,l(n),r,"k"):M}async function Ne(e,t){const n=await xe(e,t.right);"VariableDeclaration"===t.left.type&&await Se(e,t.left);const r=le(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);return re(n)||ne(n)?await Oe(e,t,n,r,"k"):z(n)?await Re(e,t,n,r,"k"):n instanceof m||L(n)?await Me(e,t,n,r):Z(n)?await Ie(e,t,n,r):D(n)?await Ce(e,t,n,r):M}async function Ae(e,t){const n=t.argument;if("CallExpression"===n.type)throw new h(e,"NeverReach",t);if("MemberExpression"===n.type){const r=await xe(e,n.object);let o,a;if(!0===n.computed)o=await xe(e,n.property);else{if("Identifier"!==n.property.type)throw new h(e,"Unrecognized",t);o=n.property.name}if(re(r)){if(!oe(o))throw new h(e,"ArrayAccessMustBeNumber",t);if(o<0&&(o=r.length+o),o<0||o>=r.length)throw new h(e,"OutOfBounds",t);a=E(r[o]),r[o]="++"===t.operator?a+1:a-1}else if(r instanceof m){if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==r.hasField(o))throw new h(e,"FieldNotFound",t,{key:o});a=E(r.field(o)),r.setField(o,"++"===t.operator?a+1:a-1)}else if(r instanceof he){if(!1===ne(o))throw new h(e,"ModuleAccessorMustBeString",t);if(!0!==r.hasGlobal(o))throw new h(e,"ModuleExportNotFound",t);a=E(r.global(o)),r.setGlobal(o,"++"===t.operator?a+1:a-1)}else{if(!G(r))throw z(r)?new h(e,"Immutable",t):new h(e,"InvalidParameter",t);if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==r.hasField(o))throw new h(e,"FieldNotFound",t,{key:o});a=E(r.field(o)),r.setField(o,"++"===t.operator?a+1:a-1)}return!1===t.prefix?a:"++"===t.operator?a+1:a-1}const r=le(e,n),o=E(ce(r.var).value),a="++"===t.operator?o+1:o-1;return r.scope[r.id]={value:a},!1===t.prefix?o:"++"===t.operator?o+1:o-1}function Be(e,t,n,r,o){switch(t){case"=":return e===M?null:e;case"/=":return E(n)/E(e);case"*=":return E(n)*E(e);case"-=":return E(n)-E(e);case"+=":return ne(n)||ne(e)?N(n)+N(e):E(n)+E(e);case"%=":return E(n)%E(e);default:throw new h(o,"UnsupportedOperator",r)}}async function Ue(e,t){const n=t.left;if("MemberExpression"===n.type){const r=await xe(e,n.object);let o;if(!0===n.computed)o=await xe(e,n.property);else{if("Identifier"!==n.property.type)throw new h(e,"InvalidIdentifier",t);o=n.property.name}const a=await xe(e,t.right);if(re(r)){if(!oe(o))throw new h(e,"ArrayAccessMustBeNumber",t);if(o<0&&(o=r.length+o),o<0||o>r.length)throw new h(e,"OutOfBounds",t);if(o===r.length){if("="!==t.operator)throw new h(e,"OutOfBounds",t);r[o]=Be(a,t.operator,r[o],t,e)}else r[o]=Be(a,t.operator,r[o],t,e)}else if(r instanceof m){if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(o))r.setField(o,Be(a,t.operator,r.field(o),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:o});r.setField(o,Be(a,t.operator,null,t,e))}}else if(r instanceof he){if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==r.hasGlobal(o))throw new h(e,"ModuleExportNotFound",t);r.setGlobal(o,Be(a,t.operator,r.global(o),t,e))}else{if(!G(r))throw z(r)?new h(e,"Immutable",t):new h(e,"InvalidParameter",t);if(!1===ne(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(o))r.setField(o,Be(a,t.operator,r.field(o),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:o});r.setField(o,Be(a,t.operator,null,t,e))}}return M}const r=le(e,n),o=await xe(e,t.right);return r.scope[r.id]={value:Be(o,t.operator,"="!==t.operator?ce(r.var).value:null,t,e)},M}async function Ge(e,t){const n=await xe(e,t.expression);return n===M?M:new F(n)}async function ze(e,t){const n=await xe(e,t.test);if(!0===n)return Se(e,t.consequent);if(!1===n)return null!==t.alternate?Se(e,t.alternate):M;throw new h(e,"BooleanConditionRequired",t)}async function Le(e,t){return Ze(e,t,0)}async function Ze(e,t,n){if(n>=t.body.length)return M;const r=await Se(e,t.body[n]);return r instanceof k||r===R||r===I||n===t.body.length-1?r:Ze(e,t,n+1)}async function De(e,t){if(null===t.argument)return new k(M);const n=await xe(e,t.argument);return new k(n)}async function _e(t,n){if(null!=t.localScope)throw ae().error("Function declarations are only valid in global scope."),new h(t,"NeverReach",n);const r=e(n.id);if(!(r in t.globalScope))throw ae().error(`Function "${r}" not declared.`),new h(t,"NeverReach",n);const o=s(n),a=n.params.map(t=>e(t)),i=Array.from(o).filter(e=>!a.includes(e));return t.globalScope[r]={value:new de(n,t,a,i)},M}async function qe(e,t){const n=le(e,t.specifiers[0].local),r=e.libraryResolver;if(null==r)throw ae().error("Internal error: module loader not initialized"),new h(e,"NeverReach",t);const o=r.loadLibrary(n.id);let a;return r._moduleSingletons?.has(o.uri)?a=r._moduleSingletons.get(o.uri):(a=await he.load(e,o.syntax),r._moduleSingletons?.set(o.uri,a)),n.scope[n.id]={value:a},M}async function Pe(e,t){return await Se(e,t.declaration),M}async function We(e,t){for(const n of t.declarations)await Te(e,n);return M}async function Te(e,t){t.breakpoint&&await ve(e,t.breakpoint);let n=null;n=null===t.init?null:await xe(e,t.init),n===M&&(n=null);const r=le(e,t.id);r.scope[r.id]={value:n}}async function Ve(e,t){return Ke(e,await xe(e,t.object),t)}async function Ke(e,t,n){const r=n.computed?await xe(e,n.property):n.property.name;return f(t,r)}async function $e(e,t,n){for(const r of n)switch(r.type){case"MemberExpression":t=await Ke(e,t,r);break;case"CallExpression":t=await rt(e,t,r);break;default:throw new h(null,"Unrecognized",r)}return t}async function Ye(e,t,n){const r=n.computed?await xe(e,n.property):n.property.name;return u(t,r)}async function He(e,t){const n=i(t);let r=await xe(e,n.root);for(const o of n.sections){const t=await Ye(e,r,o.checked);if(null==t)return null;r=await $e(e,t,o.unchecked)}return r}async function Je(e,t){const n=await xe(e,t.argument);if(te(n)){if("!"===t.operator)return!n;if("-"===t.operator)return-1*E(n);if("+"===t.operator)return 1*E(n);if("~"===t.operator)return~E(n);throw new h(e,"UnsupportUnaryOperator",t)}if("-"===t.operator)return-1*E(n);if("+"===t.operator)return 1*E(n);if("~"===t.operator)return~E(n);throw new h(e,"UnsupportUnaryOperator",t)}async function Qe(e,t){const n=[];for(let r=0;r<t.elements.length;r++)n.push(await xe(e,t.elements[r]));for(let r=0;r<n.length;r++){if(O(n[r]))throw new h(e,"NoFunctionInArray",t);n[r]===M&&(n[r]=null)}return n}async function Xe(e,t){const n=await xe(e,t.left),r=await xe(e,t.right);switch(t.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":return U(E(n),E(r),t.operator);case"==":return B(n,r);case"!=":return!B(n,r);case"<":case">":case"<=":case">=":return A(n,r,t.operator);case"+":return ne(n)||ne(r)?N(n)+N(r):E(n)+E(r);case"-":return E(n)-E(r);case"*":return E(n)*E(r);case"/":return E(n)/E(r);case"%":return E(n)%E(r);default:throw t.operator,new h(e,"UnsupportedOperator",t)}}async function et(e,t){const n=await xe(e,t.left);if(!te(n))throw new h(e,"LogicalExpressionOnlyBoolean",t);switch(t.operator){case"||":{if(!0===n)return n;const r=await xe(e,t.right);if(te(r))return r;throw new h(e,"LogicExpressionOrAnd",t)}case"&&":{if(!1===n)return n;const r=await xe(e,t.right);if(te(r))return r;throw new h(e,"LogicExpressionOrAnd",t)}default:throw t.operator,new h(e,"LogicExpressionOrAnd",t)}}function tt(e,t){return ue(e,t)}async function nt(e,t){let n;if("Identifier"===t.callee.type){const r=t.callee;r.breakpoint&&await ve(e,r.breakpoint),n=ue(e,t.callee,"FunctionNotFound")}else n=await xe(e,t.callee);return rt(e,n,t)}async function rt(e,t,n){if(O(t))return t.call(e,n);throw new h(e,"CallNonFunction",n)}async function ot(e,t){let n="",r=0;for(const o of t.quasis)if(n+=o.value?o.value.cooked:"",!1===o.tail){if(t.expressions[r]){const o=await xe(e,t.expressions[r]);if(O(o))throw new h(e,"NoFunctionInTemplateLiteral",t);n+=N(o)}r++}return n}async function at(e,t){C(null===t.arguments?[]:t.arguments,3,3,e,t);const n=await xe(e,t.arguments[0]);if(!1===te(n))throw new h(e,"BooleanConditionRequired",t);return xe(e,n?t.arguments[1]:t.arguments[2])}async function it(e,t){C(null===t.arguments?[]:t.arguments,2,3,e,t);const n=await xe(e,t.arguments[0]);if(3===t.arguments.length){const r=await xe(e,t.arguments[1]),o=c(n,r);return null!=o&&""!==o?o:xe(e,t.arguments[2])}return null==n||""===n?xe(e,t.arguments[1]):n}async function st(e,t){if(t.arguments.length<2)throw new h(e,"WrongNumberOfParameters",t);if(2===t.arguments.length)return xe(e,t.arguments[1]);if((t.arguments.length-1)%2==0)throw new h(e,"WrongNumberOfParameters",t);return ct(e,t,1,await xe(e,t.arguments[0]))}async function ct(e,t,n,r){const o=await xe(e,t.arguments[n]);if(B(o,r))return xe(e,t.arguments[n+1]);const a=t.arguments.length-n;return 1===a?xe(e,t.arguments[n]):2===a?null:3===a?xe(e,t.arguments[n+2]):ct(e,t,n+2,r)}async function lt(e,t){if(t.arguments.length<3)throw new h(e,"WrongNumberOfParameters",t);if(t.arguments.length%2==0)throw new h(e,"WrongNumberOfParameters",t);const n=await xe(e,t.arguments[0]);if(!1===te(n))throw new h(e,"BooleanConditionRequired",t.arguments[0]);return ut(e,t,0,n)}async function ut(e,t,n,r){if(!0===r)return xe(e,t.arguments[n+1]);if(3===t.arguments.length-n)return xe(e,t.arguments[n+2]);const o=await xe(e,t.arguments[n+2]);if(!1===te(o))throw new h(e,"ModuleExportNotFound",t.arguments[n+2]);return ut(e,t,n+2,o)}function ft(){const e=Object.create(null);W(e,we),H(e,we),T(e,we,tt),$(e,we),K(e,we),Y(e,we),J(e,we),V({functions:e,compiled:!1,signatures:null,evaluateIdentifier:null,mode:"async",standardFunction:we,standardFunctionAsync:ge}),e.iif=at,e.defaultvalue=it,e.decode=st,e.when=lt;const t=function(){this.textformatting={value:m.textFormatting()}};t.prototype=Object.create(null),t.prototype.infinity=Object.freeze({value:Number.POSITIVE_INFINITY}),t.prototype.nan=Object.freeze({value:Number.NaN}),t.prototype.pi=Object.freeze({value:Math.PI});for(const[n,r]of Object.entries(e))t.prototype[n]=Object.freeze({value:new b(r,n)});return t}const pt=ft();function wt(e){const t={mode:"async",compiled:!1,functions:Object.create(null),signatures:[],standardFunction:we,standardFunctionAsync:ge,evaluateIdentifier:tt};for(let n=0;n<e.length;n++)e[n].registerFunctions(t);for(const[n,r]of Object.entries(t.functions))pt.prototype[n]=Object.freeze({value:new b(r,n)});for(let n=0;n<t.signatures.length;n++)_(t.signatures[n],"async")}function dt(e){console.log(e)}function mt(n,i){const s=new Set(Object.keys(i?.vars||{}).map(t=>e(t))),c=new Set(Object.keys(i?.customfunctions||{}).map(t=>e(t)));if(i?.breakpoints)for(const[e,t]of o(i.breakpoints,n))e.breakpoint=t;const{globals:l,exports:u}=a(n);return async e=>{const o=e.spatialReference??X.WebMercator;let a=null;n.usesModules&&(a=new r(new Map,n.loadedModules));const i=new pt;for(const t of c)null!=e.customfunctions&&t in e.customfunctions?i[t]={value:new b(e.customfunctions[t],t)}:i[t]=ie;for(const t of s){if(null==e.vars||!(t in e.vars)){t in i||(i[t]=ie);continue}const n=e.vars[t]??null;ee(n)?i[t]={value:y.createFromGraphic(n,e.timeZone??null)}:i[t]={value:n}}for(const t of l)t in i||(i[t]=ie);const f={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??dt,abortSignal:e.abortSignal??t,timeZone:e.timeZone??null,spatialReference:o,track:e.track,depthCounter:{depth:1},libraryResolver:a,exports:u,localScope:null,globalScope:i},p=await Le(f,n);if(p instanceof k||p instanceof F){const e=p.value;if(j(e))return null;if(O(e))throw new h(f,"IllegalResult",null);return e}if(j(p))return null;if(p===R)throw new h(f,"IllegalResult",null);if(p===I)throw new h(f,"IllegalResult",null);throw new h(f,"NeverReach",null)}}function ht(e,t){return mt(e,t)(t)}wt([P]),wt([q]);export{ht as executeScript,wt as extend,mt as prepareScript};
|
package/arcade/arcadeCompiler.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{toSymbolId as e,neverAbortedSignal as n}from"./arcadeEnvironment.js";import{ArcadeModule as t}from"./ArcadeModule.js";import{ArcadeModuleLoader as r}from"./ArcadeModuleLoader.js";import{collectDeclaredGlobalNames as o,collectDeclaredLocalNames as l,flattenAccessChain as a}from"./compilerUtils.js";import{getNestedOptionalValue as s,tryGetMember as i,getMember as u,getGeometryMember as c,getGeometryKeys as m}from"./containerUtils.js";import p from"./Dictionary.js";import{ArcadeExecutionError as f,ArcadeCompilationError as d,ArcadeUncompilableError as g}from"./executionError.js";import{Feature as h}from"./Feature.js";import{NativeFunction as y,ArcadeFunction as w,ScopeMarshalledFunction as b,wrapModuleScopedResponse as $}from"./FunctionWrapper.js";import{p as v,q as S,i as x,k as I,j as C,r as F,s as M,v as O,u as j,w as A,x as k,h as E,n as N,y as B}from"../chunks/languageUtils.js";import{addFunctionDeclaration as _}from"./treeAnalysis.js";import{A as V}from"../chunks/aiServices.js";import{A as T}from"../chunks/array.js";import{registerFunctions as L}from"./functions/date.js";import{registerFunctions as R}from"./functions/feature.js";import{registerFunctions as U}from"./functions/geometry.js";import{registerFunctions as D}from"./functions/geomsync.js";import{registerFunctions as G}from"./functions/maths.js";import{registerFunctions as q}from"./functions/stats.js";import{registerFunctions as z}from"./functions/string.js";import{registerFunctions as P}from"./functions/track.js";import W from"../core/Logger.js";import{isPromiseLike as K}from"../core/promiseUtils.js";import{addMany as Z}from"../core/SetUtils.js";import J from"../geometry/SpatialReference.js";import{isGraphic as Y}from"../support/graphicInstanceUtils.js";import{isArray as H,isNumber as Q,isString as X,isBoolean as ee}from"../support/guards.js";const ne=()=>W.getLogger("esri.arcade.arcadeCompiler");class te{constructor(){this._symbolCounter=0,this.safeAccessTempVarId="_Tsat"}nextVarId(){return this._symbolCounter+=1,`_T${this._symbolCounter}`}nextTempVarId(){return this._symbolCounter+=1,`_Tvar${this._symbolCounter}`}nextLocalsSymbolMapId(){return this._symbolCounter+=1,`_Locals${this._symbolCounter}`}}function re(e,n){const t=e.localScope?.get(n);if(null!=t)return{scope:"local",name:n,var:t};const r=e.globalScope.get(n);return null!=r?{scope:"global",name:n,var:r}:e.standardGlobals.has(n)?{scope:"global",name:n,var:n}:null}function oe(n,t,r="InvalidIdentifier"){const o=re(n,e(t));if(null!=o)return o;throw new d(null,r,t)}function le(n,t,r){const o=re(n,e(t));if(null==o)throw ne().error(`Internal error: Symbol "${t.name}" not declared.`),new d(null,"NeverReach",t);if(null!=r&&o.scope!==r)throw ne().error(`Internal error: Expected to resolve "${t.name}" in the ${r} scope but is in the ${o.scope} scope.`),new d(null,"NeverReach",t);return o}function ae(n,t){const r=e(t),o=n.symbolMetadata;if(n.localStack.length>0){const e=n.localStack[n.localStack.length-1],t=o.locals.get(e._SymbolsMapId);if(null==t)return void ne().error(`Internal error: no reflection metadata for ${e._SymbolsMapId}`);const l=t.get(r);if(null!=l)return on.requireInitialized(e[l])}const l=o.globals.get(r);if(null!=l)return on.requireInitialized(n.globalScope[l]);if(o.standardGlobals.has(r))return on.requireInitialized(n.globalScope[r]);throw new f(null,"InvalidIdentifier",null)}class se extends w{constructor(e,n){super(),this.paramCount=n,this.fn=e}get debugName(){return null}createFunction(e){return(...n)=>{if(n.length!==this.paramCount)throw new f(e,"WrongNumberOfParameters",null);return this.fn(...n)}}call(e,n){return this.fn(...n.arguments)}marshalledCall(e,n,t,r){return r(e,n,(n,o,l)=>{l=l.map(n=>!x(n)||n instanceof b?n:$(n,e,r));const a=this.call(t,{arguments:l});return K(a)?a.then(e=>$(e,t,r)):a})}}function ie(e,n,t){try{return t(e,null,n.arguments)}catch(r){throw r}}function ue(e,n,t,r,l,a){const{globals:s,exports:i}=o(e);Z(s,t);const u=new te,c=[],m=new Map;for(const o of s)if(t.has(o)||n.has(o))m.set(o,o);else{const e=u.nextVarId();m.set(o,e),c.push(`gscope[${JSON.stringify(e)}] = ${tn};`)}const p=new Map,f=Object.create(null),d={isAsync:r,symbols:u,standardGlobals:n,globalScope:m,exports:i,localScope:null,allLocalSymbolMetadata:p,moduleFactory:a,moduleFactoryMap:f,libraryResolver:l};return{body:[...c,`var ${u.safeAccessTempVarId};`,"var lastStatement = lc.voidOperation;",Ce(d,e),"return lastStatement;"].join("\n"),symbolMetadata:{standardGlobals:n,exports:i,globals:m,locals:p},moduleFactoryMap:f}}function ce(e,n){switch(n.type){case"AssignmentExpression":return ve(e,n);case"UpdateExpression":return be(e,n);case"TemplateLiteral":return Re(e,n);case"Identifier":return Ge(e,n);case"MemberExpression":return Ee(e,n);case"Literal":return null===n.value||void 0===n.value?"null":JSON.stringify(n.value);case"CallExpression":return qe(e,n);case"UnaryExpression":return Te(e,n);case"BinaryExpression":return Ue(e,n);case"LogicalExpression":return De(e,n);case"ArrayExpression":return Le(e,n);case"ObjectExpression":return pe(e,n);case"MemberAccessChainExpression":return Ve(e,n);case"SafeMemberExpression":throw ne().error("SafeMemberExpression outside of MemberAccessChainExpression"),new d(null,"Unrecognized",n);default:throw new d(null,"Unrecognized",n)}}function me(e,n){switch(n.type){case"EmptyStatement":return"lc.voidOperation";case"VariableDeclaration":return Ae(e,n);case"BlockStatement":return Ce(e,n);case"FunctionDeclaration":return je(e,n);case"ImportDeclaration":return Me(e,n);case"ExportNamedDeclaration":return me(e,n.declaration);case"ReturnStatement":return Fe(e,n);case"IfStatement":return Ie(e,n);case"ExpressionStatement":return Se(e,n);case"BreakStatement":return"break";case"ContinueStatement":return"continue";case"ForStatement":return we(e,n);case"ForInStatement":return he(e,n);case"ForOfStatement":return ye(e,n);case"WhileStatement":return $e(e,n);default:throw new d(null,"Unrecognized",n)}}function pe(e,n){let t="lang.dictionary([";for(let r=0;r<n.properties.length;r++){const o=n.properties[r];let l;l="Identifier"===o.key.type?"'"+o.key.name+"'":ce(e,o.key);r>0&&(t+=","),t+="lang.strCheck("+l+",'ObjectExpression'),lang.aCheck("+ce(e,o.value)+", 'ObjectExpression')"}return t+="])",t}function fe(e,n,t,r,o=(e,n)=>`${e} = ${n}`){const l=e.symbols.nextTempVarId(),a=e.symbols.nextTempVarId();return[`var ${l} = ${t};`,`for (var ${a} = 0; ${a} < ${l}; ${a}++) {`,` ${o(n,a)}`,` ${me(e,r)}`,"}","lastStatement = lc.voidOperation;"].join("\n")}function de(e,n,t,r,o=e=>e){const l=e.symbols.nextTempVarId(),a=e.symbols.nextTempVarId();return[`var ${l} = ${t};`,`for (var ${a} of ${l}) {`,` ${n} = ${o(a)};`,` ${me(e,r)}`,"}","lastStatement = lc.voidOperation;"].join("\n")}function ge(e,n,t,r){const o=e.symbols.nextTempVarId(),l=e.symbols.nextTempVarId(),a=e.symbols.nextTempVarId(),s=e.symbols.nextTempVarId();return[`var ${o} = yield ${t}.queryAll(runtimeCtx.abortSignal);`,`var ${l} = { done: false, value: [] };`,`for (var ${a} = 0; ${a} < ${l}.value.length || ((${a} = 0), !(${l} = yield ${o}.next()).done); ${a}++) {`,` if (${l}.value.length === 0) continue;`,` var ${s} = ${l}.value[${a}];`,` ${n} = lang.createFeature(${s}, ${t}, runtimeCtx);`,` ${me(e,r)}`,"}"].join("\n")}function he(e,n){const t=e.symbols.nextTempVarId();let r,o,l="var "+t+" = "+ce(e,n.right)+";\n";switch("VariableDeclaration"===n.left.type?(r=le(e,n.left.declarations[0].id),l+=me(e,n.left)):r=oe(e,n.left),r.scope){case"local":o=`lscope['${r.var}']`;break;case"global":o=`gscope['${r.var}']`;break;default:throw r.scope,new d(null,"NeverReach",n.left)}return l+="if ("+t+"===null) { lastStatement = lc.voidOperation; }\n ",l+="else if (lc.isArray("+t+") || lc.isString("+t+")) {\n",l+=fe(e,o,`${t}.length`,n.body),l+="}\n",l+="else if (lc.isImmutableArray("+t+")) {\n",l+=fe(e,o,`${t}.length()`,n.body),l+="}\n",l+="else if (( "+t+" instanceof lang.Dictionary) || lc.isDictionaryLike("+t+")) {\n",l+=de(e,o,`${t}.keys()`,n.body),l+="}\n",e.isAsync&&(l+="else if (lc.isFeatureSet("+t+")) {\n",l+=ge(e,o,t,n.body),l+="}\n"),l+=`else if (lc.isGeometry(${t})) {\n`,l+=de(e,o,`lang.getGeometryKeys(${t})`,n.body),l+="}\n",l+="else { lastStatement = lc.voidOperation; } \n",l}function ye(e,n){const t=e.symbols.nextTempVarId();let r,o,l="var "+t+" = "+ce(e,n.right)+";\n";switch("VariableDeclaration"===n.left.type?(r=le(e,n.left.declarations[0].id),l+=me(e,n.left)):r=oe(e,n.left),r.scope){case"local":o=`lscope['${r.var}']`;break;case"global":o=`gscope['${r.var}']`;break;default:throw r.scope,new d(null,"NeverReach",n.left)}return l+="if ("+t+"===null) { lastStatement = lc.voidOperation; }\n ",l+="else if (lc.isArray("+t+") || lc.isString("+t+")) {\n",l+=fe(e,o,`${t}.length`,n.body,(e,n)=>[`if (${n} >= ${t}.length) {`," lang.error('OutOfBounds');","}",`${e} = ${t}[${n}];`].join("\n")),l+="}\n",l+="else if (lc.isImmutableArray("+t+")) {\n",l+=fe(e,o,`${t}.length()`,n.body,(e,n)=>`${e} = ${t}.get(${n});`),l+="}\n",l+="else if (( "+t+" instanceof lang.Dictionary) || lc.isDictionaryLike("+t+")) {\n",l+=de(e,o,`${t}.keys()`,n.body,e=>`lang.entry(${e}, ${t}.field(${e}))`),l+="}\n",e.isAsync&&(l+="else if (lc.isFeatureSet("+t+")) {\n",l+=ge(e,o,t,n.body),l+="}\n"),l+=`else if (lc.isGeometry(${t})) {\n`,l+=de(e,o,`lang.getGeometryKeys(${t})`,n.body,e=>`lang.entry(${e}, lang.getGeometryMember(${t}, ${e}, runtimeCtx))`),l+="}\n",l+="else { lastStatement = lc.voidOperation; } \n",l}function we(e,n){let t="lastStatement = lc.voidOperation; \n";null!==n.init&&("VariableDeclaration"===n.init.type?t+=me(e,n.init):t+=ce(e,n.init)+"; ");const r=e.symbols.nextTempVarId(),o=e.symbols.nextTempVarId();return t+="var "+r+" = true; ",t+="\n do { ",null!==n.update&&(t+=" if ("+r+"===false) {\n "+ce(e,n.update)+" \n}\n "+r+"=false; \n"),null!==n.test&&(t+="var "+o+" = "+ce(e,n.test)+"; ",t+="if ("+o+"===false) { break; } else if ("+o+"!==true) { lang.error('BooleanConditionRequired'); }\n"),t+=me(e,n.body),null!==n.update&&(t+="\n "+ce(e,n.update)),t+="\n"+r+" = true; \n} while(true); lastStatement = lc.voidOperation; ",t}function be(e,n){if("CallExpression"===n.argument.type)throw new d(null,"NeverReach",n);let t;if("MemberExpression"===n.argument.type){const r=ce(e,n.argument.object);return t=!0===n.argument.computed?ce(e,n.argument.property):"'"+n.argument.property.name+"'","lang.memberupdate("+r+","+t+",'"+n.operator+"',"+n.prefix+")"}const r=oe(e,n.argument);switch(Oe(r),r.scope){case"local":return`lang.update(lscope, '${r.var}', '${n.operator}', ${n.prefix})`;case"global":return`lang.update(gscope, '${r.var}', '${n.operator}', ${n.prefix})`;default:throw r.scope,new d(null,"NeverReach",n.argument)}}function $e(e,n){let t="lastStatement = lc.voidOperation; \n";const r=e.symbols.nextTempVarId();return t+=`\n var ${r} = true;\n do {\n ${r} = ${ce(e,n.test)};\n if (${r}==false) {\n break;\n }\n if (${r}!==true) {\n lang.error('BooleanConditionRequired');\n }\n ${me(e,n.body)}\n }\n while (${r} !== false);\n lastStatement = lc.voidOperation;\n `,t}function ve(e,n){const t=ce(e,n.right);if("MemberExpression"===n.left.type){let r;const o=ce(e,n.left.object);return r=!0===n.left.computed?ce(e,n.left.property):"'"+n.left.property.name+"'","lang.assignmember("+o+","+r+",'"+n.operator+"',"+t+")"}const r=oe(e,n.left);switch(Oe(r),r.scope){case"local":return`lscope['${r.var}']=lang.assign(${t},'${n.operator}', ${"="===n.operator?"null":rn(`lscope['${r.var}']`)})`;case"global":return`gscope['${r.var}']=lang.assign(${t},'${n.operator}', ${"="===n.operator?"null":rn(`gscope['${r.var}']`)})`;default:throw r.scope,new d(null,"NeverReach",n.left)}}function Se(e,n){return"AssignmentExpression"===n.expression.type?"lastStatement = lc.voidOperation; "+ce(e,n.expression)+"; \n ":"lastStatement = "+ce(e,n.expression)+"; "}function xe(e,n){return"BlockStatement"===n.type?me(e,n):"ReturnStatement"===n.type||"BreakStatement"===n.type||"ContinueStatement"===n.type?me(e,n)+"; ":"ExpressionStatement"===n.type?me(e,n):me(e,n)+"; "}function Ie(e,n){return`if (lang.mustBoolean(${ce(e,n.test)}, runtimeCtx) === true) {\n ${xe(e,n.consequent)}\n } `+(null!==n.alternate?"IfStatement"===n.alternate.type?" else "+Ie(e,n.alternate):` else {\n ${xe(e,n.alternate)}\n }\n`:" else {\n lastStatement = lc.voidOperation;\n }\n")}function Ce(e,n){let t="";for(let r=0;r<n.body.length;r++)"EmptyStatement"!==n.body[r].type&&("ReturnStatement"===n.body[r].type||"BreakStatement"===n.body[r].type||"ContinueStatement"===n.body[r].type?t+=me(e,n.body[r])+"; \n":t+=me(e,n.body[r])+" \n");return t}function Fe(e,n){if(null===n.argument)return"return lc.voidOperation";return"return "+ce(e,n.argument)}function Me(e,n){const t=le(e,n.specifiers[0].local,"global"),r=e.libraryResolver?.loadLibrary(t.name),o=e.symbols.nextVarId();void 0===e.moduleFactory[r.uri]&&(e.moduleFactory[r.uri]=cn(r.syntax,e.moduleFactory,e.isAsync)),e.moduleFactoryMap[o]=r.uri;let l="";return l=e.isAsync?"(yield lang.loadModule('"+o+"', runtimeCtx) ); ":"lang.loadModule('"+o+"', runtimeCtx); ",Oe(t),`gscope['${t.var}']=${l}`}function Oe(e){if("global"===e.scope)switch(e.name){case"iif":case"when":case"defaultvalue":case"decode":throw new g}}function je(n,t){const r=new Set(t.params.map(n=>e(n))),o=l(t);Z(o,r);const a=n.symbols,s=new Map;for(const e of o)s.set(e,a.nextVarId());const i=a.nextLocalsSymbolMapId();n.allLocalSymbolMetadata.set(i,s);const u={...n,localScope:s},c=[`lscope._SymbolsMapId = ${JSON.stringify(i)};`];for(let e=0;e<t.params.length;e++){const n=le(u,t.params[e],"local");Oe(n),c.push(`lscope['${n.var}'] = arguments[${e}];`)}for(const[e,l]of s)r.has(e)||c.push(`lscope['${l}'] = ${tn};`);const m=Ce(u,t.body),p=!0===n.isAsync?["return lang.__awaiter(this, void 0, void 0, function* () {",` ${m}`," return lastStatement;","});"]:[m,"return lastStatement;"],f=["new lang.UserDefinedCompiledFunction("," lang.functionDepthchecker("," function() {"," var lastStatement = lc.voidOperation;"," var lscope = runtimeCtx.localStack[runtimeCtx.localStack.length-1];",...c,...p," },"," runtimeCtx,"," ),",` ${t.params.length},`,")"].join("\n"),d=le(n,t.id,"global");return Oe(d),`gscope['${d.var}']=${f}; lastStatement = lc.voidOperation;`}function Ae(e,n){const t=[];for(let r=0;r<n.declarations.length;r++)t.push(ke(e,n.declarations[r]));return t.join("\n")+" \n lastStatement= lc.voidOperation; \n"}function ke(e,n){const t=null===n.init?"null":ce(e,n.init),r=le(e,n.id);switch(Oe(r),r.scope){case"local":return`lscope['${r.var}']=${t};`;case"global":return`gscope['${r.var}']=${t};`;default:throw r.scope,new d(null,"NeverReach",n.id)}}function Ee(e,n){return Ne(e,ce(e,n.object),n)}function Ne(e,n,t){return`lang.member(${n}, ${t.computed?ce(e,t.property):`'${t.property.name}'`})`}function Be(e,n,t){for(const r of t)switch(r.type){case"MemberExpression":n=Ne(e,n,r);break;case"CallExpression":n=ze(e,n,r.arguments);break;default:throw new d(null,"Unrecognized",r)}return n}function _e(e,n,t){return`lang.tryMember(${n}, ${t.computed?ce(e,t.property):`'${t.property.name}'`})`}function Ve(e,n){const t=a(n);let r="",o=ce(e,t.root);for(const l of t.sections)r+=`(${e.symbols.safeAccessTempVarId} = ${_e(e,o,l.checked)}) == null ? null : `,o=Be(e,e.symbols.safeAccessTempVarId,l.unchecked);return`(${r}${o})`}function Te(e,n){try{return"lang.unary("+ce(e,n.argument)+",'"+n.operator+"')"}catch(t){throw t}}function Le(e,n){try{const t=[];for(let r=0;r<n.elements.length;r++)"Literal"===n.elements[r].type?t.push(ce(e,n.elements[r])):t.push("lang.aCheck("+ce(e,n.elements[r])+",'ArrayExpression')");return"["+t.join(",")+"]"}catch(t){throw t}}function Re(e,n){try{const t=[];let r=0;for(const o of n.quasis)t.push(o.value?JSON.stringify(o.value.cooked):JSON.stringify("")),!1===o.tail&&(t.push(n.expressions[r]?"lang.castString(lang.aCheck("+ce(e,n.expressions[r])+", 'TemplateLiteral'))":""),r++);return"(["+t.join(",")+"]).join('')"}catch(t){throw t}}function Ue(e,n){try{return"lang.binary("+ce(e,n.left)+","+ce(e,n.right)+",'"+n.operator+"')"}catch(t){throw t}}function De(e,n){try{if("AssignmentExpression"===n.left.type||"UpdateExpression"===n.left.type)throw new d(null,"LogicalExpressionOnlyBoolean",n);if("AssignmentExpression"===n.right.type||"UpdateExpression"===n.right.type)throw new d(null,"LogicalExpressionOnlyBoolean",n);if("&&"===n.operator||"||"===n.operator)return"(lang.logicalCheck("+ce(e,n.left)+") "+n.operator+" lang.logicalCheck("+ce(e,n.right)+"))";throw new d(null,"LogicExpressionOrAnd",null)}catch(t){throw t}}function Ge(e,n){const t=oe(e,n);switch(Oe(t),t.scope){case"local":return rn(`lscope['${t.var}']`);case"global":return rn(`gscope['${t.var}']`);default:throw t.scope,new d(null,"NeverReach",n)}}function qe(e,n){if("Identifier"===n.callee.type){const t=oe(e,n.callee,"FunctionNotFound");if("global"===t.scope)switch(t.name){case"iif":return Pe(e,n);case"when":return Ke(e,n);case"defaultvalue":return We(e,n);case"decode":return Ze(e,n)}}return ze(e,ce(e,n.callee),n.arguments)}function ze(e,n,t){const r=`lang.callfunc(${n}, [${t.map(n=>ce(e,n)).join(", ")}], runtimeCtx)`;return e.isAsync?`(yield ${r})`:r}function Pe(e,n){try{if(3!==n.arguments.length)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId();return`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n\n if (${t} === true) {\n return ${ce(e,n.arguments[1])};\n }\n else if (${t} === false) {\n return ${ce(e,n.arguments[2])};\n }\n else {\n lang.error('ExecutionErrorCodes.BooleanConditionRequired');\n }\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function We(e,n){try{if(n.arguments.length<2||n.arguments.length>3)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId(),r=e.symbols.nextTempVarId();return 3===n.arguments.length?`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n var ${r} = ${ce(e,n.arguments[1])};\n ${t} = lang.getNestedOptionalValue(${t}, ${r});\n return ${t} != null && ${t} !== "" ? ${t} : ${ce(e,n.arguments[2])};\n ${e.isAsync?"})}()))":"}()"}`:`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n if (${t} === null) {\n return ${ce(e,n.arguments[1])};\n }\n if (${t} === "") {\n return ${ce(e,n.arguments[1])};\n }\n if (${t} === undefined) {\n return ${ce(e,n.arguments[1])};\n }\n return ${t};\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function Ke(e,n){try{if(n.arguments.length<3)throw new d(null,"WrongNumberOfParameters",n);if(n.arguments.length%2==0)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId();let r="var ";for(let o=0;o<n.arguments.length-1;o+=2)r+=`${t} = lang.mustBoolean(${ce(e,n.arguments[o])}, runtimeCtx);\n if (${t} === true ) {\n return ${ce(e,n.arguments[o+1])}\n }\n`;return`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n ${r}\n return ${ce(e,n.arguments[n.arguments.length-1])}\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function Ze(e,n){try{if(n.arguments.length<2)throw new d(null,"WrongNumberOfParameters",n);if(2===n.arguments.length)return`(${ce(e,n.arguments[1])})`;if((n.arguments.length-1)%2==0)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId();let r;if(n.arguments.every((e,n)=>n%2==0||"Literal"===e.type)){r=`switch (${t}) {`;for(let t=1;t<n.arguments.length-1;t+=2){const o=n.arguments[t],l=n.arguments[t+1];null==o.value?r+="\n case null:\n case lc.voidOperation:\n ":r+=`\n case ${JSON.stringify(o.value)}:\n `,r+=`return ${ce(e,l)}`}r+="}"}else{const o=e.symbols.nextTempVarId();r="var ";for(let l=1;l<n.arguments.length-1;l+=2){const a=n.arguments[l],s=n.arguments[l+1];r+=`${o} = ${ce(e,a)};\n if (lang.binary(${o}, ${t}, "==") === true ) {\n return ${ce(e,s)}\n }\n `}}return`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n ${r}\n return ${ce(e,n.arguments[n.arguments.length-1])}\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function Je(e,n){try{return ie(e,n,(e,n)=>{throw new f(e,"Unrecognized",n)})}catch(t){throw t}}function Ye(e){const n=function(){this.textformatting=p.textFormatting()};n.prototype=Object.create(null),n.provided=new Set(["textformatting","infinity","pi"]),n.prototype.infinity=Number.POSITIVE_INFINITY,n.prototype.pi=Math.PI;for(const[t,r]of Object.entries(e))n.prototype[t]=new y(r),n.provided.add(t);return n}function He(){const e=Object.create(null);L(e,ie),z(e,ie),R(e,ie,ae),G(e,ie),U(e,ie),q(e,ie),P(e,ie),e.iif=Je,e.decode=Je,e.when=Je,e.defaultvalue=Je;const n=Ye(e);D(e,ie);return{ScopeSync:Ye(e),ScopeAsync:n}}const{ScopeSync:Qe,ScopeAsync:Xe}=He();function en(e,n){const t={mode:n,compiled:!0,functions:Object.create(null),signatures:[],standardFunction:ie,standardFunctionAsync:ie,evaluateIdentifier:ae};for(const r of e)r.registerFunctions(t);if("sync"===n)for(const[r,o]of Object.entries(t.functions))Qe.prototype[r]=new y(o),Qe.provided.add(r);else for(const[r,o]of Object.entries(t.functions))Xe.prototype[r]=new y(o),Xe.provided.add(r);for(const r of t.signatures)_(r,n)}en([T],"sync"),en([T],"async"),en([V],"async");const nn=Symbol("uninitialized"),tn="lang.uninitialized";function rn(e){return`lang.requireInitialized(${e})`}const on={uninitialized:nn,requireInitialized(e){if(e===nn)throw new f(null,"InvalidIdentifier",null);return e},isNumber:e=>Q(e),isArray:e=>H(e),isImmutableArray:e=>C(e),isDictionaryLike:e=>B(e),isString:e=>X(e),isDictionary:e=>N(e),isGeometry:e=>E(e),getGeometryKeys:e=>m(e),getGeometryMember:(e,n,t)=>c(e,n,t,null),error(e){throw new f(null,e,null)},__awaiter(e,n,t,r){const o=r.apply(e,n||[]);let l=o.next();for(;!l.done&&!K(l.value);)l=o.next(l.value);return l.done?l.value:new Promise((e,n)=>{function t(r){for(;!r.done;){if(K(r.value))return void Promise.resolve(r.value).then(e=>{try{t(o.next(e))}catch(r){n(r)}},e=>{try{t(o.throw(e))}catch(r){n(r)}});try{r=o.next(r.value)}catch(l){return void n(l)}}e(r.value)}t(l)})},functionDepthchecker:(e,n)=>function(){if(n.depthCounter.depth++,n.localStack.push({}),n.depthCounter.depth>64)throw new f(null,"MaximumCallDepth",null);const t=e.apply(this,arguments);return K(t)?t.then(e=>(n.depthCounter.depth--,n.localStack.length=n.localStack.length-1,e)):(n.depthCounter.depth--,n.localStack.length=n.localStack.length-1,t)},mustBoolean(e,n){if(!0===e||!1===e)return e;throw new f(n,"BooleanConditionRequired",null)},castString:e=>M(e),aCheck(e,n){if(x(e)){if("ArrayExpression"===n)throw new f(null,"NoFunctionInArray",null);if("ObjectExpression"===n)throw new f(null,"NoFunctionInDictionary",null);throw new f(null,"NoFunctionInTemplateLiteral",null)}return e===O?null:e},Dictionary:p,Feature:h,UserDefinedCompiledFunction:se,dictionary(e){const n=Object.create(null),t=new Map;for(let o=0;o<e.length;o+=2){if(x(e[o+1]))throw new f(null,"NoFunctionInDictionary",null);if(!1===X(e[o]))throw new f(null,"KeyMustBeString",null);let r=e[o].toString();const l=r.toLowerCase();t.has(l)?r=t.get(l):t.set(l,r),e[o+1]===O?n[r]=null:n[r]=e[o+1]}const r=new p(n);return r.immutable=!1,r},entry:(e,n)=>p.containerEntry(e,n),strCheck(e){if(!1===X(e))throw new f(null,"KeyMustBeString",null);return e},unary(e,n){if(ee(e)){if("!"===n)return!e;if("-"===n)return-1*F(e);if("+"===n)return 1*F(e);if("~"===n)return~F(e);throw new f(null,"UnsupportUnaryOperator",null)}if("-"===n)return-1*F(e);if("+"===n)return 1*F(e);if("~"===n)return~F(e);throw new f(null,"UnsupportUnaryOperator",null)},logicalCheck(e){if(!1===ee(e))throw new f(null,"LogicExpressionOrAnd",null);return e},logical(e,n,t){if(ee(e)&&ee(n))switch(t){case"||":return e||n;case"&&":return e&&n;default:throw new f(null,"LogicExpressionOrAnd",null)}throw new f(null,"LogicExpressionOrAnd",null)},binary(e,n,t){switch(t){case"|":case"<<":case">>":case">>>":case"^":case"&":return k(F(e),F(n),t);case"==":return A(e,n);case"!=":return!A(e,n);case"<":case">":case"<=":case">=":return j(e,n,t);case"+":return X(e)||X(n)?M(e)+M(n):F(e)+F(n);case"-":return F(e)-F(n);case"*":return F(e)*F(n);case"/":return F(e)/F(n);case"%":return F(e)%F(n);default:throw new f(null,"UnsupportedOperator",null)}},assign(e,n,t){switch(n){case"=":return e===O?null:e;case"/=":return F(t)/F(e);case"*=":return F(t)*F(e);case"-=":return F(t)-F(e);case"+=":return X(t)||X(e)?M(t)+M(e):F(t)+F(e);case"%=":return F(t)%F(e);default:throw new f(null,"UnsupportedOperator",null)}},update(e,n,t,r){const o=F(this.requireInitialized(e[n]));return e[n]="++"===t?o+1:o-1,!1===r?o:"++"===t?o+1:o-1},createFeature:(e,n,t)=>h.createFromGraphicLikeObject(e.geometry,e.attributes,n,t.timeZone),memberupdate(e,n,t,r){let o;if(H(e)){if(!Q(n))throw new f(null,"ArrayAccessMustBeNumber",null);if(n<0&&(n=e.length+n),n<0||n>=e.length)throw new f(null,"OutOfBounds",null);o=F(e[n]),e[n]="++"===t?o+1:o-1}else if(e instanceof p){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0!==e.hasField(n))throw new f(null,"FieldNotFound",null,{key:n});o=F(e.field(n)),e.setField(n,"++"===t?o+1:o-1)}else if(I(e)){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0!==e.hasField(n))throw new f(null,"FieldNotFound",null);o=F(e.field(n)),e.setField(n,"++"===t?o+1:o-1)}else{if(C(e))throw new f(null,"Immutable",null);if(!(e instanceof un))throw new f(null,"InvalidIdentifier",null);if(!1===X(n))throw new f(null,"ModuleAccessorMustBeString",null);if(!0!==e.hasGlobal(n))throw new f(null,"ModuleExportNotFound",null);o=F(e.global(n)),e.setGlobal(n,"++"===t?o+1:o-1)}return!1===r?o:"++"===t?o+1:o-1},assignmember(e,n,t,r){if(H(e)){if(!Q(n))throw new f(null,"ArrayAccessMustBeNumber",null);if(n<0&&(n=e.length+n),n<0||n>e.length)throw new f(null,"OutOfBounds",null);if(n===e.length){if("="!==t)throw new f(null,"OutOfBounds",null);e[n]=this.assign(r,t,e[n])}else e[n]=this.assign(r,t,e[n])}else if(e instanceof p){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0===e.hasField(n))e.setField(n,this.assign(r,t,e.field(n)));else{if("="!==t)throw new f(null,"FieldNotFound",null);e.setField(n,this.assign(r,t,null))}}else if(I(e)){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0===e.hasField(n))e.setField(n,this.assign(r,t,e.field(n)));else{if("="!==t)throw new f(null,"FieldNotFound",null);e.setField(n,this.assign(r,t,null))}}else{if(C(e))throw new f(null,"Immutable",null);if(!(e instanceof un))throw new f(null,"InvalidIdentifier",null);if(!1===X(n))throw new f(null,"ModuleAccessorMustBeString",null);if(!e.hasGlobal(n))throw new f(null,"ModuleExportNotFound",null);e.setGlobal(n,this.assign(r,t,e.global(n)))}},member:(e,n)=>u(e,n),tryMember:(e,n)=>i(e,n),callfunc(e,n,t){if(x(e))return e.call(t,{arguments:n,preparsed:!0});throw new f(null,"CallNonFunction",null)},loadModule(e,n){const t=n.moduleFactoryMap[e];if(n.moduleSingletons[t])return n.moduleSingletons[t];const r=n.moduleFactory[t]({moduleSingletons:n.moduleSingletons,depthCounter:n.depthCounter,lrucache:n.lrucache,interceptor:n.interceptor,services:n.services,console:n.console,abortSignal:n.abortSignal,timeZone:n.timeZone??null,spatialReference:n.spatialReference});return n.moduleSingletons[t]=r,r},getNestedOptionalValue:(e,n)=>s(e,n)};function ln(e){console.log(e)}function an(t,o,l=!1){let a=null;t.usesModules&&(a=new r(null,t.loadedModules));const s=Object.create(null),i=new Set(Object.keys(o?.vars||{}).map(n=>e(n))),u=new Set(Object.keys(o?.customfunctions||{}).map(n=>e(n))),c=ue(t,l?Xe.provided:Qe.provided,new Set([...i,...u]),l,a,s);let m;m=l?["var runtimeCtx = this.prepare(context, true);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","return lang.__awaiter(this, void 0, void 0, function* () {"," function mainBody() {"," return lang.__awaiter(this, void 0, void 0, function* () {",` ${c.body}`," });"," }"," return this.postProcess(yield mainBody());","});"].join("\n"):["var runtimeCtx = this.prepare(context, false);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","function mainBody() {",` ${c.body}`,"}","return this.postProcess(mainBody());"].join("\n");const{symbolMetadata:p,moduleFactoryMap:d}=c,g={lc:v,lang:on,postProcess(e){if(S(e))return null;if(x(e))throw new f(null,"IllegalResult",null);return e},prepare(e,t){const r=e.spatialReference??J.WebMercator,o=t?new Xe:new Qe;for(const n of u)null!=e.customfunctions&&n in e.customfunctions?o[n]=e.customfunctions[n]??null:o[n]=nn;for(const n of i){if(null==e.vars||!(n in e.vars)){n in o||(o[n]=nn);continue}const t=e.vars[n]??null;Y(t)?o[n]=h.createFromGraphic(t,e.timeZone??null):o[n]=t}return{lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??ln,abortSignal:e.abortSignal??n,timeZone:e.timeZone??null,spatialReference:r,track:e.track,globalScope:o,localStack:[],depthCounter:{depth:1},symbolMetadata:p,moduleFactory:s,moduleFactoryMap:d,moduleSingletons:Object.create(null)}}};return new Function("context",m).bind(g)}async function sn(){return en([await import("./functions/geomasync.js")],"async"),!0}class un extends t{constructor(e){super(),this.moduleContext=e}hasGlobal(n){const t=this.moduleContext.symbolMetadata.exports;return t.has(n)||t.has(e(n))}setGlobal(n,t){if(x(t))throw new f(null,"AssignModuleFunction",null);const r=this.moduleContext.symbolMetadata.globals.get(e(n));if(null==r)throw new f(null,"ModuleExportNotFound",null);this.moduleContext.globalScope[r]=t}global(n){const t=this.moduleContext.symbolMetadata.globals.get(e(n));if(null==t)throw new f(null,"ModuleExportNotFound",null);const r=this.moduleContext.globalScope,o=on.requireInitialized(r[t]);if(x(o)&&!(o instanceof b)){const e=new b;return e.fn=o,e.parameterEvaluator=ie,e.context=this.moduleContext,r[t]=e,e}return o}}function cn(e,t,o){const l=new r(null,e.loadedModules),a=ue(e,o?Xe.provided:Qe.provided,new Set,o,l,t);let s;s=o?["var runtimeCtx = this.prepare(context, true);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","return lang.__awaiter(this, void 0, void 0, function* () {"," function mainBody() {"," return lang.__awaiter(this, void 0, void 0, function* () {",` ${a.body}`," });"," }"," yield mainBody();"," return this.prepareModule(runtimeCtx);","});"].join("\n"):["var runtimeCtx = this.prepare(context, false);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","function mainBody() {",` ${a.body}`,"}","mainBody();","return this.prepareModule(runtimeCtx);"].join("\n");const{symbolMetadata:i,moduleFactoryMap:u}=a,c={lc:v,lang:on,prepareModule:e=>new un(e),prepare(e,r){const o=e.spatialReference??J.WebMercator,l=r?new Xe:new Qe;return{lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??ln,abortSignal:e.abortSignal??n,timeZone:e.timeZone??null,spatialReference:o,track:null,globalScope:l,localStack:[],depthCounter:e.depthCounter,symbolMetadata:i,moduleFactory:t,moduleFactoryMap:u,moduleSingletons:e.moduleSingletons}}};return new Function("context",s).bind(c)}export{se as UserDefinedCompiledFunction,an as compileScript,sn as enableAsyncSupport,en as extend};
|
|
2
|
+
import{toSymbolId as e,neverAbortedSignal as n}from"./arcadeEnvironment.js";import{ArcadeModule as t}from"./ArcadeModule.js";import{ArcadeModuleLoader as r}from"./ArcadeModuleLoader.js";import{collectDeclaredGlobalNames as o,collectDeclaredLocalNames as l,flattenAccessChain as a}from"./compilerUtils.js";import{getNestedOptionalValue as s,tryGetMember as i,getMember as u,getGeometryMember as c,getGeometryKeys as m}from"./containerUtils.js";import p from"./Dictionary.js";import{ArcadeExecutionError as f,ArcadeCompilationError as d,ArcadeUncompilableError as g}from"./executionError.js";import{Feature as h}from"./Feature.js";import{NativeFunction as y,ArcadeFunction as w,ScopeMarshalledFunction as b,wrapModuleScopedResponse as $}from"./FunctionWrapper.js";import{p as v,q as S,i as x,k as I,j as C,r as F,s as M,v as O,u as j,w as A,x as k,h as E,n as N,y as B}from"../chunks/languageUtils.js";import{addFunctionDeclaration as _}from"./treeAnalysis.js";import{A as V}from"../chunks/aiServices.js";import{A as T}from"../chunks/array.js";import{registerFunctions as L}from"./functions/date.js";import{registerFunctions as R}from"./functions/feature.js";import{registerFunctions as U}from"./functions/geometry.js";import{registerFunctions as D}from"./functions/geomsync.js";import{registerFunctions as G}from"./functions/maths.js";import{registerFunctions as q}from"./functions/stats.js";import{registerFunctions as z}from"./functions/string.js";import{registerFunctions as P}from"./functions/track.js";import W from"../core/Logger.js";import{isPromiseLike as K}from"../core/promiseUtils.js";import{addMany as Z}from"../core/SetUtils.js";import J from"../geometry/SpatialReference.js";import{isGraphic as Y}from"../support/graphicInstanceUtils.js";import{isArray as H,isNumber as Q,isString as X,isBoolean as ee}from"../support/guards.js";const ne=()=>W.getLogger("esri.arcade.arcadeCompiler");class te{constructor(){this._symbolCounter=0,this.safeAccessTempVarId="_Tsat"}nextVarId(){return this._symbolCounter+=1,`_T${this._symbolCounter}`}nextTempVarId(){return this._symbolCounter+=1,`_Tvar${this._symbolCounter}`}nextLocalsSymbolMapId(){return this._symbolCounter+=1,`_Locals${this._symbolCounter}`}}function re(e,n){const t=e.localScope?.get(n);if(null!=t)return{scope:"local",name:n,var:t};const r=e.globalScope.get(n);return null!=r?{scope:"global",name:n,var:r}:e.standardGlobals.has(n)?{scope:"global",name:n,var:n}:null}function oe(n,t,r="InvalidIdentifier"){const o=re(n,e(t));if(null!=o)return o;throw new d(null,r,t)}function le(n,t,r){const o=re(n,e(t));if(null==o)throw ne().error(`Internal error: Symbol "${t.name}" not declared.`),new d(null,"NeverReach",t);if(null!=r&&o.scope!==r)throw ne().error(`Internal error: Expected to resolve "${t.name}" in the ${r} scope but is in the ${o.scope} scope.`),new d(null,"NeverReach",t);return o}function ae(n,t){const r=e(t),o=n.symbolMetadata;if(n.localStack.length>0){const e=n.localStack[n.localStack.length-1],t=o.locals.get(e._SymbolsMapId);if(null==t)return void ne().error(`Internal error: no reflection metadata for ${e._SymbolsMapId}`);const l=t.get(r);if(null!=l)return on.requireInitialized(e[l])}const l=o.globals.get(r);if(null!=l)return on.requireInitialized(n.globalScope[l]);if(o.standardGlobals.has(r))return on.requireInitialized(n.globalScope[r]);throw new f(null,"InvalidIdentifier",null)}class se extends w{constructor(e,n){super(),this.paramCount=n,this.fn=e}get debugName(){return null}createFunction(e){return(...n)=>{if(n.length!==this.paramCount)throw new f(e,"WrongNumberOfParameters",null);return this.fn(...n)}}call(e,n){return this.fn(...n.arguments)}marshalledCall(e,n,t,r){return r(e,n,(n,o,l)=>{l=l.map(n=>!x(n)||n instanceof b?n:$(n,e,r));const a=this.call(t,{arguments:l});return K(a)?a.then(e=>$(e,t,r)):a})}}function ie(e,n,t){try{return t(e,null,n.arguments)}catch(r){throw r}}function ue(e,n,t,r,l,a){const{globals:s,exports:i}=o(e);Z(s,t);const u=new te,c=[],m=new Map;for(const o of s)if(t.has(o)||n.has(o))m.set(o,o);else{const e=u.nextVarId();m.set(o,e),c.push(`gscope[${JSON.stringify(e)}] = ${tn};`)}const p=new Map,f=Object.create(null),d={isAsync:r,symbols:u,standardGlobals:n,globalScope:m,exports:i,localScope:null,allLocalSymbolMetadata:p,moduleFactory:a,moduleFactoryMap:f,libraryResolver:l};return{body:[...c,`var ${u.safeAccessTempVarId};`,"var lastStatement = lc.voidOperation;",Ce(d,e),"return lastStatement;"].join("\n"),symbolMetadata:{standardGlobals:n,exports:i,globals:m,locals:p},moduleFactoryMap:f}}function ce(e,n){switch(n.type){case"AssignmentExpression":return ve(e,n);case"UpdateExpression":return be(e,n);case"TemplateLiteral":return Re(e,n);case"Identifier":return Ge(e,n);case"MemberExpression":return Ee(e,n);case"Literal":return null===n.value||void 0===n.value?"null":JSON.stringify(n.value);case"CallExpression":return qe(e,n);case"UnaryExpression":return Te(e,n);case"BinaryExpression":return Ue(e,n);case"LogicalExpression":return De(e,n);case"ArrayExpression":return Le(e,n);case"ObjectExpression":return pe(e,n);case"MemberAccessChainExpression":return Ve(e,n);case"SafeMemberExpression":throw ne().error("SafeMemberExpression outside of MemberAccessChainExpression"),new d(null,"Unrecognized",n);default:throw new d(null,"Unrecognized",n)}}function me(e,n){switch(n.type){case"EmptyStatement":return"lc.voidOperation";case"VariableDeclaration":return Ae(e,n);case"BlockStatement":return Ce(e,n);case"FunctionDeclaration":return je(e,n);case"ImportDeclaration":return Me(e,n);case"ExportNamedDeclaration":return me(e,n.declaration);case"ReturnStatement":return Fe(e,n);case"IfStatement":return Ie(e,n);case"ExpressionStatement":return Se(e,n);case"BreakStatement":return"break";case"ContinueStatement":return"continue";case"ForStatement":return we(e,n);case"ForInStatement":return he(e,n);case"ForOfStatement":return ye(e,n);case"WhileStatement":return $e(e,n);default:throw new d(null,"Unrecognized",n)}}function pe(e,n){let t="lang.dictionary([";for(let r=0;r<n.properties.length;r++){const o=n.properties[r];let l;l="Identifier"===o.key.type?"'"+o.key.name+"'":ce(e,o.key);r>0&&(t+=","),t+="lang.strCheck("+l+",'ObjectExpression'),lang.aCheck("+ce(e,o.value)+", 'ObjectExpression')"}return t+="])",t}function fe(e,n,t,r,o=(e,n)=>`${e} = ${n}`){const l=e.symbols.nextTempVarId(),a=e.symbols.nextTempVarId();return[`var ${l} = ${t};`,`for (var ${a} = 0; ${a} < ${l}; ${a}++) {`,` ${o(n,a)}`,` ${me(e,r)}`,"}","lastStatement = lc.voidOperation;"].join("\n")}function de(e,n,t,r,o=e=>e){const l=e.symbols.nextTempVarId(),a=e.symbols.nextTempVarId();return[`var ${l} = ${t};`,`for (var ${a} of ${l}) {`,` ${n} = ${o(a)};`,` ${me(e,r)}`,"}","lastStatement = lc.voidOperation;"].join("\n")}function ge(e,n,t,r){const o=e.symbols.nextTempVarId(),l=e.symbols.nextTempVarId(),a=e.symbols.nextTempVarId(),s=e.symbols.nextTempVarId();return[`var ${o} = yield ${t}.queryAll(runtimeCtx.abortSignal);`,`var ${l} = { done: false, value: [] };`,`for (var ${a} = 0; ${a} < ${l}.value.length || ((${a} = 0), !(${l} = yield ${o}.next()).done); ${a}++) {`,` if (${l}.value.length === 0) continue;`,` var ${s} = ${l}.value[${a}];`,` ${n} = lang.createFeature(${s}, ${t}, runtimeCtx);`,` ${me(e,r)}`,"}"].join("\n")}function he(e,n){const t=e.symbols.nextTempVarId();let r,o,l="var "+t+" = "+ce(e,n.right)+";\n";switch("VariableDeclaration"===n.left.type?(r=le(e,n.left.declarations[0].id),l+=me(e,n.left)):r=oe(e,n.left),r.scope){case"local":o=`lscope['${r.var}']`;break;case"global":o=`gscope['${r.var}']`;break;default:throw r.scope,new d(null,"NeverReach",n.left)}return l+="if ("+t+"===null) { lastStatement = lc.voidOperation; }\n ",l+="else if (lc.isArray("+t+") || lc.isString("+t+")) {\n",l+=fe(e,o,`${t}.length`,n.body),l+="}\n",l+="else if (lc.isImmutableArray("+t+")) {\n",l+=fe(e,o,`${t}.length()`,n.body),l+="}\n",l+="else if (( "+t+" instanceof lang.Dictionary) || lc.isDictionaryLike("+t+")) {\n",l+=de(e,o,`${t}.keys()`,n.body),l+="}\n",e.isAsync&&(l+="else if (lc.isFeatureSet("+t+")) {\n",l+=ge(e,o,t,n.body),l+="}\n"),l+=`else if (lc.isGeometry(${t})) {\n`,l+=de(e,o,`lang.getGeometryKeys(${t})`,n.body),l+="}\n",l+="else { lastStatement = lc.voidOperation; } \n",l}function ye(e,n){const t=e.symbols.nextTempVarId();let r,o,l="var "+t+" = "+ce(e,n.right)+";\n";switch("VariableDeclaration"===n.left.type?(r=le(e,n.left.declarations[0].id),l+=me(e,n.left)):r=oe(e,n.left),r.scope){case"local":o=`lscope['${r.var}']`;break;case"global":o=`gscope['${r.var}']`;break;default:throw r.scope,new d(null,"NeverReach",n.left)}return l+="if ("+t+"===null) { lastStatement = lc.voidOperation; }\n ",l+="else if (lc.isArray("+t+") || lc.isString("+t+")) {\n",l+=fe(e,o,`${t}.length`,n.body,(e,n)=>[`if (${n} >= ${t}.length) {`," lang.error('OutOfBounds');","}",`${e} = ${t}[${n}];`].join("\n")),l+="}\n",l+="else if (lc.isImmutableArray("+t+")) {\n",l+=fe(e,o,`${t}.length()`,n.body,(e,n)=>`${e} = ${t}.get(${n});`),l+="}\n",l+="else if (( "+t+" instanceof lang.Dictionary) || lc.isDictionaryLike("+t+")) {\n",l+=de(e,o,`${t}.keys()`,n.body,e=>`lang.entry(${e}, ${t}.field(${e}))`),l+="}\n",e.isAsync&&(l+="else if (lc.isFeatureSet("+t+")) {\n",l+=ge(e,o,t,n.body),l+="}\n"),l+=`else if (lc.isGeometry(${t})) {\n`,l+=de(e,o,`lang.getGeometryKeys(${t})`,n.body,e=>`lang.entry(${e}, lang.getGeometryMember(${t}, ${e}, runtimeCtx))`),l+="}\n",l+="else { lastStatement = lc.voidOperation; } \n",l}function we(e,n){let t="lastStatement = lc.voidOperation; \n";null!==n.init&&("VariableDeclaration"===n.init.type?t+=me(e,n.init):t+=ce(e,n.init)+"; ");const r=e.symbols.nextTempVarId(),o=e.symbols.nextTempVarId();return t+="var "+r+" = true; ",t+="\n do { ",null!==n.update&&(t+=" if ("+r+"===false) {\n "+ce(e,n.update)+" \n}\n "+r+"=false; \n"),null!==n.test&&(t+="var "+o+" = "+ce(e,n.test)+"; ",t+="if ("+o+"===false) { break; } else if ("+o+"!==true) { lang.error('BooleanConditionRequired'); }\n"),t+=me(e,n.body),null!==n.update&&(t+="\n "+ce(e,n.update)),t+="\n"+r+" = true; \n} while(true); lastStatement = lc.voidOperation; ",t}function be(e,n){if("CallExpression"===n.argument.type)throw new d(null,"NeverReach",n);let t;if("MemberExpression"===n.argument.type){const r=ce(e,n.argument.object);return t=!0===n.argument.computed?ce(e,n.argument.property):"'"+n.argument.property.name+"'","lang.memberupdate("+r+","+t+",'"+n.operator+"',"+n.prefix+")"}const r=oe(e,n.argument);switch(Oe(r),r.scope){case"local":return`lang.update(lscope, '${r.var}', '${n.operator}', ${n.prefix})`;case"global":return`lang.update(gscope, '${r.var}', '${n.operator}', ${n.prefix})`;default:throw r.scope,new d(null,"NeverReach",n.argument)}}function $e(e,n){let t="lastStatement = lc.voidOperation; \n";const r=e.symbols.nextTempVarId();return t+=`\n var ${r} = true;\n do {\n ${r} = ${ce(e,n.test)};\n if (${r}==false) {\n break;\n }\n if (${r}!==true) {\n lang.error('BooleanConditionRequired');\n }\n ${me(e,n.body)}\n }\n while (${r} !== false);\n lastStatement = lc.voidOperation;\n `,t}function ve(e,n){const t=ce(e,n.right);if("MemberExpression"===n.left.type){let r;const o=ce(e,n.left.object);return r=!0===n.left.computed?ce(e,n.left.property):"'"+n.left.property.name+"'","lang.assignmember("+o+","+r+",'"+n.operator+"',"+t+")"}const r=oe(e,n.left);switch(Oe(r),r.scope){case"local":return`lscope['${r.var}']=lang.assign(${t},'${n.operator}', ${"="===n.operator?"null":rn(`lscope['${r.var}']`)})`;case"global":return`gscope['${r.var}']=lang.assign(${t},'${n.operator}', ${"="===n.operator?"null":rn(`gscope['${r.var}']`)})`;default:throw r.scope,new d(null,"NeverReach",n.left)}}function Se(e,n){return"AssignmentExpression"===n.expression.type?"lastStatement = lc.voidOperation; "+ce(e,n.expression)+"; \n ":"lastStatement = "+ce(e,n.expression)+"; "}function xe(e,n){return"BlockStatement"===n.type?me(e,n):"ReturnStatement"===n.type||"BreakStatement"===n.type||"ContinueStatement"===n.type?me(e,n)+"; ":"ExpressionStatement"===n.type?me(e,n):me(e,n)+"; "}function Ie(e,n){return`if (lang.mustBoolean(${ce(e,n.test)}, runtimeCtx) === true) {\n ${xe(e,n.consequent)}\n } `+(null!==n.alternate?"IfStatement"===n.alternate.type?" else "+Ie(e,n.alternate):` else {\n ${xe(e,n.alternate)}\n }\n`:" else {\n lastStatement = lc.voidOperation;\n }\n")}function Ce(e,n){let t="";for(let r=0;r<n.body.length;r++)"EmptyStatement"!==n.body[r].type&&("ReturnStatement"===n.body[r].type||"BreakStatement"===n.body[r].type||"ContinueStatement"===n.body[r].type?t+=me(e,n.body[r])+"; \n":t+=me(e,n.body[r])+" \n");return t}function Fe(e,n){if(null===n.argument)return"return lc.voidOperation";return"return "+ce(e,n.argument)}function Me(e,n){const t=le(e,n.specifiers[0].local,"global"),r=e.libraryResolver?.loadLibrary(t.name),o=e.symbols.nextVarId();void 0===e.moduleFactory[r.uri]&&(e.moduleFactory[r.uri]=cn(r.syntax,e.moduleFactory,e.isAsync)),e.moduleFactoryMap[o]=r.uri;let l="";return l=e.isAsync?"(yield lang.loadModule('"+o+"', runtimeCtx) ); ":"lang.loadModule('"+o+"', runtimeCtx); ",Oe(t),`gscope['${t.var}']=${l}`}function Oe(e){if("global"===e.scope)switch(e.name){case"iif":case"when":case"defaultvalue":case"decode":throw new g}}function je(n,t){const r=new Set(t.params.map(n=>e(n))),o=l(t);Z(o,r);const a=n.symbols,s=new Map;for(const e of o)s.set(e,a.nextVarId());const i=a.nextLocalsSymbolMapId();n.allLocalSymbolMetadata.set(i,s);const u={...n,localScope:s},c=[`lscope._SymbolsMapId = ${JSON.stringify(i)};`];for(let e=0;e<t.params.length;e++){const n=le(u,t.params[e],"local");Oe(n),c.push(`lscope['${n.var}'] = arguments[${e}];`)}for(const[e,l]of s)r.has(e)||c.push(`lscope['${l}'] = ${tn};`);const m=Ce(u,t.body),p=!0===n.isAsync?["return lang.__awaiter(this, void 0, void 0, function* () {",` ${m}`," return lastStatement;","});"]:[m,"return lastStatement;"],f=["new lang.UserDefinedCompiledFunction("," lang.functionDepthchecker("," function() {"," var lastStatement = lc.voidOperation;"," var lscope = runtimeCtx.localStack[runtimeCtx.localStack.length-1];",...c,...p," },"," runtimeCtx,"," ),",` ${t.params.length},`,")"].join("\n"),d=le(n,t.id,"global");return Oe(d),`gscope['${d.var}']=${f}; lastStatement = lc.voidOperation;`}function Ae(e,n){const t=[];for(let r=0;r<n.declarations.length;r++)t.push(ke(e,n.declarations[r]));return t.join("\n")+" \n lastStatement= lc.voidOperation; \n"}function ke(e,n){const t=null===n.init?"null":ce(e,n.init),r=le(e,n.id);switch(Oe(r),r.scope){case"local":return`lscope['${r.var}']=${t};`;case"global":return`gscope['${r.var}']=${t};`;default:throw r.scope,new d(null,"NeverReach",n.id)}}function Ee(e,n){return Ne(e,ce(e,n.object),n)}function Ne(e,n,t){return`lang.member(${n}, ${t.computed?ce(e,t.property):`'${t.property.name}'`})`}function Be(e,n,t){for(const r of t)switch(r.type){case"MemberExpression":n=Ne(e,n,r);break;case"CallExpression":n=ze(e,n,r.arguments);break;default:throw new d(null,"Unrecognized",r)}return n}function _e(e,n,t){return`lang.tryMember(${n}, ${t.computed?ce(e,t.property):`'${t.property.name}'`})`}function Ve(e,n){const t=a(n);let r="",o=ce(e,t.root);for(const l of t.sections)r+=`(${e.symbols.safeAccessTempVarId} = ${_e(e,o,l.checked)}) == null ? null : `,o=Be(e,e.symbols.safeAccessTempVarId,l.unchecked);return`(${r}${o})`}function Te(e,n){try{return"lang.unary("+ce(e,n.argument)+",'"+n.operator+"')"}catch(t){throw t}}function Le(e,n){try{const t=[];for(let r=0;r<n.elements.length;r++)"Literal"===n.elements[r].type?t.push(ce(e,n.elements[r])):t.push("lang.aCheck("+ce(e,n.elements[r])+",'ArrayExpression')");return"["+t.join(",")+"]"}catch(t){throw t}}function Re(e,n){try{const t=[];let r=0;for(const o of n.quasis)t.push(o.value?JSON.stringify(o.value.cooked):JSON.stringify("")),!1===o.tail&&(t.push(n.expressions[r]?"lang.castString(lang.aCheck("+ce(e,n.expressions[r])+", 'TemplateLiteral'))":""),r++);return"(["+t.join(",")+"]).join('')"}catch(t){throw t}}function Ue(e,n){try{return"lang.binary("+ce(e,n.left)+","+ce(e,n.right)+",'"+n.operator+"')"}catch(t){throw t}}function De(e,n){try{if("AssignmentExpression"===n.left.type||"UpdateExpression"===n.left.type)throw new d(null,"LogicalExpressionOnlyBoolean",n);if("AssignmentExpression"===n.right.type||"UpdateExpression"===n.right.type)throw new d(null,"LogicalExpressionOnlyBoolean",n);if("&&"===n.operator||"||"===n.operator)return"(lang.logicalCheck("+ce(e,n.left)+") "+n.operator+" lang.logicalCheck("+ce(e,n.right)+"))";throw new d(null,"LogicExpressionOrAnd",null)}catch(t){throw t}}function Ge(e,n){const t=oe(e,n);switch(Oe(t),t.scope){case"local":return rn(`lscope['${t.var}']`);case"global":return rn(`gscope['${t.var}']`);default:throw t.scope,new d(null,"NeverReach",n)}}function qe(e,n){if("Identifier"===n.callee.type){const t=oe(e,n.callee,"FunctionNotFound");if("global"===t.scope)switch(t.name){case"iif":return Pe(e,n);case"when":return Ke(e,n);case"defaultvalue":return We(e,n);case"decode":return Ze(e,n)}}return ze(e,ce(e,n.callee),n.arguments)}function ze(e,n,t){const r=`lang.callfunc(${n}, [${t.map(n=>ce(e,n)).join(", ")}], runtimeCtx)`;return e.isAsync?`(yield ${r})`:r}function Pe(e,n){try{if(3!==n.arguments.length)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId();return`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n\n if (${t} === true) {\n return ${ce(e,n.arguments[1])};\n }\n else if (${t} === false) {\n return ${ce(e,n.arguments[2])};\n }\n else {\n lang.error('ExecutionErrorCodes.BooleanConditionRequired');\n }\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function We(e,n){try{if(n.arguments.length<2||n.arguments.length>3)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId(),r=e.symbols.nextTempVarId();return 3===n.arguments.length?`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n var ${r} = ${ce(e,n.arguments[1])};\n ${t} = lang.getNestedOptionalValue(${t}, ${r});\n return ${t} != null && ${t} !== "" ? ${t} : ${ce(e,n.arguments[2])};\n ${e.isAsync?"})}()))":"}()"}`:`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n if (${t} === null) {\n return ${ce(e,n.arguments[1])};\n }\n if (${t} === "") {\n return ${ce(e,n.arguments[1])};\n }\n if (${t} === undefined) {\n return ${ce(e,n.arguments[1])};\n }\n return ${t};\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function Ke(e,n){try{if(n.arguments.length<3)throw new d(null,"WrongNumberOfParameters",n);if(n.arguments.length%2==0)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId();let r="var ";for(let o=0;o<n.arguments.length-1;o+=2)r+=`${t} = lang.mustBoolean(${ce(e,n.arguments[o])}, runtimeCtx);\n if (${t} === true ) {\n return ${ce(e,n.arguments[o+1])}\n }\n`;return`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n ${r}\n return ${ce(e,n.arguments[n.arguments.length-1])}\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function Ze(e,n){try{if(n.arguments.length<2)throw new d(null,"WrongNumberOfParameters",n);if(2===n.arguments.length)return`(${ce(e,n.arguments[1])})`;if((n.arguments.length-1)%2==0)throw new d(null,"WrongNumberOfParameters",n);const t=e.symbols.nextTempVarId();let r;if(n.arguments.every((e,n)=>n%2==0||"Literal"===e.type)){r=`switch (${t}) {`;for(let t=1;t<n.arguments.length-1;t+=2){const o=n.arguments[t],l=n.arguments[t+1];null==o.value?r+="\n case null:\n case lc.voidOperation:\n ":r+=`\n case ${JSON.stringify(o.value)}:\n `,r+=`return ${ce(e,l)}`}r+="}"}else{const o=e.symbols.nextTempVarId();r="var ";for(let l=1;l<n.arguments.length-1;l+=2){const a=n.arguments[l],s=n.arguments[l+1];r+=`${o} = ${ce(e,a)};\n if (lang.binary(${o}, ${t}, "==") === true ) {\n return ${ce(e,s)}\n }\n `}}return`${e.isAsync?"(yield (function() { \n return lang.__awaiter(this, void 0, void 0, function* () {":"function() {"}\n var ${t} = ${ce(e,n.arguments[0])};\n ${r}\n return ${ce(e,n.arguments[n.arguments.length-1])}\n ${e.isAsync?"})}()))":"}()"}`}catch(t){throw t}}function Je(e,n){try{return ie(e,n,(e,n)=>{throw new f(e,"Unrecognized",n)})}catch(t){throw t}}function Ye(e){const n=function(){this.textformatting=p.textFormatting()};n.prototype=Object.create(null),n.provided=new Set(["textformatting","infinity","nan","pi"]),n.prototype.infinity=Number.POSITIVE_INFINITY,n.prototype.nan=Number.NaN,n.prototype.pi=Math.PI;for(const[t,r]of Object.entries(e))n.prototype[t]=new y(r),n.provided.add(t);return n}function He(){const e=Object.create(null);L(e,ie),z(e,ie),R(e,ie,ae),G(e,ie),U(e,ie),q(e,ie),P(e,ie),e.iif=Je,e.decode=Je,e.when=Je,e.defaultvalue=Je;const n=Ye(e);D(e,ie);return{ScopeSync:Ye(e),ScopeAsync:n}}const{ScopeSync:Qe,ScopeAsync:Xe}=He();function en(e,n){const t={mode:n,compiled:!0,functions:Object.create(null),signatures:[],standardFunction:ie,standardFunctionAsync:ie,evaluateIdentifier:ae};for(const r of e)r.registerFunctions(t);if("sync"===n)for(const[r,o]of Object.entries(t.functions))Qe.prototype[r]=new y(o),Qe.provided.add(r);else for(const[r,o]of Object.entries(t.functions))Xe.prototype[r]=new y(o),Xe.provided.add(r);for(const r of t.signatures)_(r,n)}en([T],"sync"),en([T],"async"),en([V],"async");const nn=Symbol("uninitialized"),tn="lang.uninitialized";function rn(e){return`lang.requireInitialized(${e})`}const on={uninitialized:nn,requireInitialized(e){if(e===nn)throw new f(null,"InvalidIdentifier",null);return e},isNumber:e=>Q(e),isArray:e=>H(e),isImmutableArray:e=>C(e),isDictionaryLike:e=>B(e),isString:e=>X(e),isDictionary:e=>N(e),isGeometry:e=>E(e),getGeometryKeys:e=>m(e),getGeometryMember:(e,n,t)=>c(e,n,t,null),error(e){throw new f(null,e,null)},__awaiter(e,n,t,r){const o=r.apply(e,n||[]);let l=o.next();for(;!l.done&&!K(l.value);)l=o.next(l.value);return l.done?l.value:new Promise((e,n)=>{function t(r){for(;!r.done;){if(K(r.value))return void Promise.resolve(r.value).then(e=>{try{t(o.next(e))}catch(r){n(r)}},e=>{try{t(o.throw(e))}catch(r){n(r)}});try{r=o.next(r.value)}catch(l){return void n(l)}}e(r.value)}t(l)})},functionDepthchecker:(e,n)=>function(){if(n.depthCounter.depth++,n.localStack.push({}),n.depthCounter.depth>64)throw new f(null,"MaximumCallDepth",null);const t=e.apply(this,arguments);return K(t)?t.then(e=>(n.depthCounter.depth--,n.localStack.length=n.localStack.length-1,e)):(n.depthCounter.depth--,n.localStack.length=n.localStack.length-1,t)},mustBoolean(e,n){if(!0===e||!1===e)return e;throw new f(n,"BooleanConditionRequired",null)},castString:e=>M(e),aCheck(e,n){if(x(e)){if("ArrayExpression"===n)throw new f(null,"NoFunctionInArray",null);if("ObjectExpression"===n)throw new f(null,"NoFunctionInDictionary",null);throw new f(null,"NoFunctionInTemplateLiteral",null)}return e===O?null:e},Dictionary:p,Feature:h,UserDefinedCompiledFunction:se,dictionary(e){const n=Object.create(null),t=new Map;for(let o=0;o<e.length;o+=2){if(x(e[o+1]))throw new f(null,"NoFunctionInDictionary",null);if(!1===X(e[o]))throw new f(null,"KeyMustBeString",null);let r=e[o].toString();const l=r.toLowerCase();t.has(l)?r=t.get(l):t.set(l,r),e[o+1]===O?n[r]=null:n[r]=e[o+1]}const r=new p(n);return r.immutable=!1,r},entry:(e,n)=>p.containerEntry(e,n),strCheck(e){if(!1===X(e))throw new f(null,"KeyMustBeString",null);return e},unary(e,n){if(ee(e)){if("!"===n)return!e;if("-"===n)return-1*F(e);if("+"===n)return 1*F(e);if("~"===n)return~F(e);throw new f(null,"UnsupportUnaryOperator",null)}if("-"===n)return-1*F(e);if("+"===n)return 1*F(e);if("~"===n)return~F(e);throw new f(null,"UnsupportUnaryOperator",null)},logicalCheck(e){if(!1===ee(e))throw new f(null,"LogicExpressionOrAnd",null);return e},logical(e,n,t){if(ee(e)&&ee(n))switch(t){case"||":return e||n;case"&&":return e&&n;default:throw new f(null,"LogicExpressionOrAnd",null)}throw new f(null,"LogicExpressionOrAnd",null)},binary(e,n,t){switch(t){case"|":case"<<":case">>":case">>>":case"^":case"&":return k(F(e),F(n),t);case"==":return A(e,n);case"!=":return!A(e,n);case"<":case">":case"<=":case">=":return j(e,n,t);case"+":return X(e)||X(n)?M(e)+M(n):F(e)+F(n);case"-":return F(e)-F(n);case"*":return F(e)*F(n);case"/":return F(e)/F(n);case"%":return F(e)%F(n);default:throw new f(null,"UnsupportedOperator",null)}},assign(e,n,t){switch(n){case"=":return e===O?null:e;case"/=":return F(t)/F(e);case"*=":return F(t)*F(e);case"-=":return F(t)-F(e);case"+=":return X(t)||X(e)?M(t)+M(e):F(t)+F(e);case"%=":return F(t)%F(e);default:throw new f(null,"UnsupportedOperator",null)}},update(e,n,t,r){const o=F(this.requireInitialized(e[n]));return e[n]="++"===t?o+1:o-1,!1===r?o:"++"===t?o+1:o-1},createFeature:(e,n,t)=>h.createFromGraphicLikeObject(e.geometry,e.attributes,n,t.timeZone),memberupdate(e,n,t,r){let o;if(H(e)){if(!Q(n))throw new f(null,"ArrayAccessMustBeNumber",null);if(n<0&&(n=e.length+n),n<0||n>=e.length)throw new f(null,"OutOfBounds",null);o=F(e[n]),e[n]="++"===t?o+1:o-1}else if(e instanceof p){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0!==e.hasField(n))throw new f(null,"FieldNotFound",null,{key:n});o=F(e.field(n)),e.setField(n,"++"===t?o+1:o-1)}else if(I(e)){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0!==e.hasField(n))throw new f(null,"FieldNotFound",null);o=F(e.field(n)),e.setField(n,"++"===t?o+1:o-1)}else{if(C(e))throw new f(null,"Immutable",null);if(!(e instanceof un))throw new f(null,"InvalidIdentifier",null);if(!1===X(n))throw new f(null,"ModuleAccessorMustBeString",null);if(!0!==e.hasGlobal(n))throw new f(null,"ModuleExportNotFound",null);o=F(e.global(n)),e.setGlobal(n,"++"===t?o+1:o-1)}return!1===r?o:"++"===t?o+1:o-1},assignmember(e,n,t,r){if(H(e)){if(!Q(n))throw new f(null,"ArrayAccessMustBeNumber",null);if(n<0&&(n=e.length+n),n<0||n>e.length)throw new f(null,"OutOfBounds",null);if(n===e.length){if("="!==t)throw new f(null,"OutOfBounds",null);e[n]=this.assign(r,t,e[n])}else e[n]=this.assign(r,t,e[n])}else if(e instanceof p){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0===e.hasField(n))e.setField(n,this.assign(r,t,e.field(n)));else{if("="!==t)throw new f(null,"FieldNotFound",null);e.setField(n,this.assign(r,t,null))}}else if(I(e)){if(!1===X(n))throw new f(null,"KeyAccessorMustBeString",null);if(!0===e.hasField(n))e.setField(n,this.assign(r,t,e.field(n)));else{if("="!==t)throw new f(null,"FieldNotFound",null);e.setField(n,this.assign(r,t,null))}}else{if(C(e))throw new f(null,"Immutable",null);if(!(e instanceof un))throw new f(null,"InvalidIdentifier",null);if(!1===X(n))throw new f(null,"ModuleAccessorMustBeString",null);if(!e.hasGlobal(n))throw new f(null,"ModuleExportNotFound",null);e.setGlobal(n,this.assign(r,t,e.global(n)))}},member:(e,n)=>u(e,n),tryMember:(e,n)=>i(e,n),callfunc(e,n,t){if(x(e))return e.call(t,{arguments:n,preparsed:!0});throw new f(null,"CallNonFunction",null)},loadModule(e,n){const t=n.moduleFactoryMap[e];if(n.moduleSingletons[t])return n.moduleSingletons[t];const r=n.moduleFactory[t]({moduleSingletons:n.moduleSingletons,depthCounter:n.depthCounter,lrucache:n.lrucache,interceptor:n.interceptor,services:n.services,console:n.console,abortSignal:n.abortSignal,timeZone:n.timeZone??null,spatialReference:n.spatialReference});return n.moduleSingletons[t]=r,r},getNestedOptionalValue:(e,n)=>s(e,n)};function ln(e){console.log(e)}function an(t,o,l=!1){let a=null;t.usesModules&&(a=new r(null,t.loadedModules));const s=Object.create(null),i=new Set(Object.keys(o?.vars||{}).map(n=>e(n))),u=new Set(Object.keys(o?.customfunctions||{}).map(n=>e(n))),c=ue(t,l?Xe.provided:Qe.provided,new Set([...i,...u]),l,a,s);let m;m=l?["var runtimeCtx = this.prepare(context, true);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","return lang.__awaiter(this, void 0, void 0, function* () {"," function mainBody() {"," return lang.__awaiter(this, void 0, void 0, function* () {",` ${c.body}`," });"," }"," return this.postProcess(yield mainBody());","});"].join("\n"):["var runtimeCtx = this.prepare(context, false);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","function mainBody() {",` ${c.body}`,"}","return this.postProcess(mainBody());"].join("\n");const{symbolMetadata:p,moduleFactoryMap:d}=c,g={lc:v,lang:on,postProcess(e){if(S(e))return null;if(x(e))throw new f(null,"IllegalResult",null);return e},prepare(e,t){const r=e.spatialReference??J.WebMercator,o=t?new Xe:new Qe;for(const n of u)null!=e.customfunctions&&n in e.customfunctions?o[n]=e.customfunctions[n]??null:o[n]=nn;for(const n of i){if(null==e.vars||!(n in e.vars)){n in o||(o[n]=nn);continue}const t=e.vars[n]??null;Y(t)?o[n]=h.createFromGraphic(t,e.timeZone??null):o[n]=t}return{lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??ln,abortSignal:e.abortSignal??n,timeZone:e.timeZone??null,spatialReference:r,track:e.track,globalScope:o,localStack:[],depthCounter:{depth:1},symbolMetadata:p,moduleFactory:s,moduleFactoryMap:d,moduleSingletons:Object.create(null)}}};return new Function("context",m).bind(g)}async function sn(){return en([await import("./functions/geomasync.js")],"async"),!0}class un extends t{constructor(e){super(),this.moduleContext=e}hasGlobal(n){const t=this.moduleContext.symbolMetadata.exports;return t.has(n)||t.has(e(n))}setGlobal(n,t){if(x(t))throw new f(null,"AssignModuleFunction",null);const r=this.moduleContext.symbolMetadata.globals.get(e(n));if(null==r)throw new f(null,"ModuleExportNotFound",null);this.moduleContext.globalScope[r]=t}global(n){const t=this.moduleContext.symbolMetadata.globals.get(e(n));if(null==t)throw new f(null,"ModuleExportNotFound",null);const r=this.moduleContext.globalScope,o=on.requireInitialized(r[t]);if(x(o)&&!(o instanceof b)){const e=new b;return e.fn=o,e.parameterEvaluator=ie,e.context=this.moduleContext,r[t]=e,e}return o}}function cn(e,t,o){const l=new r(null,e.loadedModules),a=ue(e,o?Xe.provided:Qe.provided,new Set,o,l,t);let s;s=o?["var runtimeCtx = this.prepare(context, true);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","return lang.__awaiter(this, void 0, void 0, function* () {"," function mainBody() {"," return lang.__awaiter(this, void 0, void 0, function* () {",` ${a.body}`," });"," }"," yield mainBody();"," return this.prepareModule(runtimeCtx);","});"].join("\n"):["var runtimeCtx = this.prepare(context, false);","var lc = this.lc;","var lang = this.lang;","var gscope = runtimeCtx.globalScope;","function mainBody() {",` ${a.body}`,"}","mainBody();","return this.prepareModule(runtimeCtx);"].join("\n");const{symbolMetadata:i,moduleFactoryMap:u}=a,c={lc:v,lang:on,prepareModule:e=>new un(e),prepare(e,r){const o=e.spatialReference??J.WebMercator,l=r?new Xe:new Qe;return{lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??ln,abortSignal:e.abortSignal??n,timeZone:e.timeZone??null,spatialReference:o,track:null,globalScope:l,localStack:[],depthCounter:e.depthCounter,symbolMetadata:i,moduleFactory:t,moduleFactoryMap:u,moduleSingletons:e.moduleSingletons}}};return new Function("context",s).bind(c)}export{se as UserDefinedCompiledFunction,an as compileScript,sn as enableAsyncSupport,en as extend};
|
package/arcade/arcadeRuntime.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import{toSymbolId as e,neverAbortedSignal as t}from"./arcadeEnvironment.js";import{ArcadeModule as r}from"./ArcadeModule.js";import{ArcadeModuleLoader as n}from"./ArcadeModuleLoader.js";import{collectDeclaredGlobalNames as o,collectDeclaredLocalNames as s,flattenAccessChain as i}from"./compilerUtils.js";import{getNestedOptionalValue as a,getGeometryKeys as l,getGeometryMember as c,tryGetMember as u,getMember as f}from"./containerUtils.js";import p from"./Dictionary.js";import{ArcadeExecutionError as h,ensureArcadeExecutionError as d}from"./executionError.js";import{Feature as w}from"./Feature.js";import{NativeFunction as m,ArcadeFunction as g,ScopeMarshalledFunction as b,wrapModuleScopedResponse as y}from"./FunctionWrapper.js";import{R as v,I as x,q as S,i as R,z as F,A as j,v as k,B as I,j as O,y as A,h as C,w as M,r as E,s as N,u as B,x as U,k as G}from"../chunks/languageUtils.js";import{addFunctionDeclaration as z}from"./treeAnalysis.js";import{A as D}from"../chunks/array.js";import{registerFunctions as L}from"./functions/date.js";import{registerFunctions as _}from"./functions/feature.js";import{registerFunctions as Z}from"./functions/geometry.js";import{registerFunctions as q}from"./functions/geomsync.js";import{registerFunctions as W}from"./functions/maths.js";import{registerFunctions as P}from"./functions/stats.js";import{registerFunctions as V}from"./functions/string.js";import{registerFunctions as T}from"./functions/track.js";import K from"../core/Logger.js";import Y from"../geometry/SpatialReference.js";import{isGraphic as $}from"../support/graphicInstanceUtils.js";import{isBoolean as H,isArray as J,isString as Q,isNumber as X}from"../support/guards.js";const ee=()=>K.getLogger("esri.arcade.arcadeRuntime"),te=Symbol("uninitialized");function re(e){if(e===te)throw new h(null,"InvalidIdentifier",null)}function ne(e){return re(e),e}function oe(t,r){const n=e(r);if(null!==t.localScope){const e=t.localScope[n];if(void 0!==e)return{scope:t.localScope,id:n,var:e}}const o=t.globalScope[n];if(void 0!==o)return{scope:t.globalScope,id:n,var:o};throw new h(t,"InvalidIdentifier",r)}function se(t,r,n="InvalidIdentifier"){const o=e(r);if(null!==t.localScope){const e=t.localScope[o];if(void 0!==e)return re(e),e.value}const s=t.globalScope[o];if(void 0!==s)return re(s),s.value;throw new h(t,n,r)}const ie=function(){};ie.prototype=Object.freeze(Object.create(null));class ae extends g{constructor(e,t,r,n){super(),this.definition=e,this.context=t,this._params=r,this._locals=n}get debugName(){return null}createFunction(e){return(...t)=>{const r={spatialReference:this.context.spatialReference,console:this.context.console,services:this.context.services,timeZone:this.context.timeZone??null,lrucache:this.context.lrucache,exports:this.context.exports,libraryResolver:this.context.libraryResolver,interceptor:this.context.interceptor,abortSignal:this.context.abortSignal,localScope:new ie,depthCounter:{depth:e.depthCounter.depth+1},globalScope:this.context.globalScope,track:this.context.track};if(r.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",null);return le(r,this.definition.body,this._params,this._locals,t,null)}}call(e,t){return fe(e,t,(r,n,o)=>{const s={spatialReference:e.spatialReference,services:e.services,globalScope:e.globalScope,depthCounter:{depth:e.depthCounter.depth+1},libraryResolver:e.libraryResolver,exports:e.exports,timeZone:e.timeZone??null,console:e.console,lrucache:e.lrucache,interceptor:e.interceptor,abortSignal:e.abortSignal,localScope:new ie,track:e.track};if(s.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",t);return le(s,this.definition.body,this._params,this._locals,o,t)})}marshalledCall(e,t,r,n){return n(e,t,(o,s,i)=>{const a={spatialReference:e.spatialReference,globalScope:r.globalScope,services:e.services,depthCounter:{depth:e.depthCounter.depth+1},libraryResolver:e.libraryResolver,exports:e.exports,console:e.console,timeZone:e.timeZone??null,lrucache:e.lrucache,interceptor:e.interceptor,abortSignal:e.abortSignal,localScope:new ie,track:e.track};return i=i.map(t=>!R(t)||t instanceof b?t:y(t,e,n)),y(le(a,this.definition.body,this._params,this._locals,i,t),r,n)})}}function le(e,t,r,n,o,s){try{if(r.length!==o.length)throw new h(e,"WrongNumberOfParameters",s);if(null!=e.localScope){for(let t=0;t<r.length;t++)e.localScope[r[t]]={value:o[t]};for(const t of n)e.localScope[t]=te}const i=he(e,t);if(i instanceof v)return i.value;if(i===F)throw new h(e,"UnexpectedToken",s);if(i===j)throw new h(e,"UnexpectedToken",s);return i instanceof x?i.value:i}catch(i){throw i}}class ce extends r{constructor(e){super(),this.moduleGlobalContext=e}global(t){const r=e(t);if(!this.moduleGlobalContext.exports.has(r))throw new h(null,"ModuleExportNotFound",null);const n=this.moduleGlobalContext.globalScope[r];if(re(n),R(n.value)&&!(n.value instanceof b)){const e=new b;return e.fn=n.value,e.parameterEvaluator=fe,e.context=this.moduleGlobalContext,this.moduleGlobalContext.globalScope[r]={value:e},e}return n.value}setGlobal(t,r){if(R(r))throw new h(null,"AssignModuleFunction",null);const n=e(t);if(!this.moduleGlobalContext.exports.has(n))throw new h(null,"ModuleExportNotFound",null);this.moduleGlobalContext.globalScope[n]={value:r}}hasGlobal(t){return this.moduleGlobalContext.exports.has(e(t))}static load(e,r){const{globals:s,exports:i}=o(r),a=new Xe;for(const t of s)t in a||(a[t]=te);const l=e.spatialReference??Y.WebMercator,c={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??tt,abortSignal:t,timeZone:e.timeZone??null,spatialReference:l,track:e.track,depthCounter:{depth:1},libraryResolver:new n(e.libraryResolver._moduleSingletons,r.loadedModules),exports:i,localScope:null,globalScope:a};return je(c,r),new ce(c)}}function ue(e,t){const r=[];for(let n=0;n<t.arguments.length;n++)r.push(pe(e,t.arguments[n]));return r}function fe(e,t,r){try{return!0===t.preparsed?r(e,null,t.arguments):r(e,t,ue(e,t))}catch(n){throw n}}function pe(e,t){try{switch(t.type){case"AssignmentExpression":return Se(e,t);case"UpdateExpression":return ve(e,t);case"TemplateLiteral":return qe(e,t);case"Identifier":return We(e,t);case"MemberExpression":return Ee(e,t);case"Literal":return t.value;case"CallExpression":return Pe(e,t);case"UnaryExpression":return ze(e,t);case"BinaryExpression":return Le(e,t);case"LogicalExpression":return _e(e,t);case"ArrayExpression":return De(e,t);case"ObjectExpression":return de(e,t);case"MemberAccessChainExpression":return Ge(e,t);case"SafeMemberExpression":throw ee().error("SafeMemberExpression outside of MemberAccessChainExpression"),new h(null,"Unrecognized",t);default:throw new h(e,"Unrecognized",t)}}catch(r){throw d(e,t,r)}}function he(e,t){switch(t.type){case"EmptyStatement":return k;case"VariableDeclaration":return Ce(e,t);case"ImportDeclaration":return Oe(e,t);case"ExportNamedDeclaration":return Ae(e,t);case"BlockStatement":return je(e,t);case"FunctionDeclaration":return Ie(e,t);case"ReturnStatement":return ke(e,t);case"IfStatement":return Fe(e,t);case"ExpressionStatement":return Re(e,t);case"BreakStatement":return F;case"ContinueStatement":return j;case"ForStatement":return ge(e,t);case"ForInStatement":return we(e,t);case"ForOfStatement":return me(e,t);case"WhileStatement":return be(e,t);default:throw new h(e,"Unrecognized",t)}}function de(e,t){const r=Object.create(null),n=new Map;for(let s=0;s<t.properties.length;s++){const o=t.properties[s],i="Identifier"===o.key.type?o.key.name:pe(e,o.key),a=pe(e,o.value);if(R(a))throw new h(e,"NoFunctionInDictionary",t);if(!1===Q(i))throw new h(e,"KeyMustBeString",t);let l=i.toString();const c=l.toLowerCase();n.has(c)?l=n.get(c):n.set(c,l),r[l]=a===k?null:a}const o=new p(r);return o.immutable=!1,o}function we(e,t){const r=pe(e,t.right);"VariableDeclaration"===t.left.type&&Ce(e,t.left);const n=oe(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);if(J(r)||Q(r)){const o=r.length;for(let r=0;r<o;r++){n.scope[n.id]={value:r};const o=he(e,t.body);if(o===F)break;if(o instanceof v)return o}return k}if(O(r)){for(let o=0;o<r.length();o++){n.scope[n.id]={value:o};const r=he(e,t.body);if(r===F)break;if(r instanceof v)return r}return k}if(r instanceof p||A(r)){const o=r.keys();for(let r=0;r<o.length;r++){n.scope[n.id]={value:o[r]};const s=he(e,t.body);if(s===F)break;if(s instanceof v)return s}return k}if(C(r)){for(const o of l(r)){n.scope[n.id]={value:o};const r=he(e,t.body);if(r===F)break;if(r instanceof v)return r}return k}return k}function me(e,t){const r=pe(e,t.right);"VariableDeclaration"===t.left.type&&he(e,t.left);const n=oe(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);if(J(r)||Q(r)){const o=r.length;for(let s=0;s<o;s++){if(s>=r.length)throw new h(e,"OutOfBounds",t);n.scope[n.id]={value:r[s]};const o=he(e,t.body);if(o===F)break;if(o instanceof v)return o}return k}if(O(r)){for(let o=0;o<r.length();o++){n.scope[n.id]={value:r.get(o)};const s=he(e,t.body);if(s===F)break;if(s instanceof v)return s}return k}if(r instanceof p||A(r)){for(const o of r.keys()){const s=r.field(o);n.scope[n.id]={value:p.containerEntry(o,s)};const i=he(e,t.body);if(i===F)break;if(i instanceof v)return i}return k}if(C(r)){for(const o of l(r)){const s=c(r,o,e,t);n.scope[n.id]={value:p.containerEntry(o,s)};const i=he(e,t.body);if(i===F)break;if(i instanceof v)return i}return k}return k}function ge(e,t){null!==t.init&&("VariableDeclaration"===t.init.type?he(e,t.init):pe(e,t.init));const r={testResult:!0,lastAction:k};do{ye(e,t,r)}while(!0===r.testResult);return r.lastAction instanceof v?r.lastAction:k}function be(e,t){const r={testResult:!0,lastAction:k};if(r.testResult=pe(e,t.test),!1===r.testResult)return k;if(!0!==r.testResult)throw new h(e,"BooleanConditionRequired",t);for(;!0===r.testResult&&(r.lastAction=he(e,t.body),r.lastAction!==F)&&!(r.lastAction instanceof v);)if(r.testResult=pe(e,t.test),!0!==r.testResult&&!1!==r.testResult)throw new h(e,"BooleanConditionRequired",t);return r.lastAction instanceof v?r.lastAction:k}function ye(e,t,r){if(null!==t.test){if(r.testResult=pe(e,t.test),!1===r.testResult)return;if(!0!==r.testResult)throw new h(e,"BooleanConditionRequired",t)}r.lastAction=he(e,t.body),r.lastAction!==F?r.lastAction instanceof v?r.testResult=!1:null!==t.update&&pe(e,t.update):r.testResult=!1}function ve(e,t){if("CallExpression"===t.argument.type)throw new h(e,"NeverReach",t);let r;if("MemberExpression"===t.argument.type){const n=pe(e,t.argument.object);let o;if(!0===t.argument.computed)o=pe(e,t.argument.property);else{if("Identifier"!==t.argument.property.type)throw new h(e,"Unrecognized",t);o=t.argument.property.name}if(J(n)){if(!X(o))throw new h(e,"ArrayAccessMustBeNumber",t);if(o<0&&(o=n.length+o),o<0||o>=n.length)throw new h(e,"OutOfBounds",t);r=E(n[o]),n[o]="++"===t.operator?r+1:r-1}else if(n instanceof p){if(!1===Q(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==n.hasField(o))throw new h(e,"FieldNotFound",t);r=E(n.field(o)),n.setField(o,"++"===t.operator?r+1:r-1)}else if(G(n)){if(!1===Q(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==n.hasField(o))throw new h(e,"FieldNotFound",t);r=E(n.field(o)),n.setField(o,"++"===t.operator?r+1:r-1)}else{if(O(n))throw new h(e,"Immutable",t);if(!(n instanceof ce))throw new h(e,"InvalidParameter",t);if(!1===Q(o))throw new h(e,"ModuleAccessorMustBeString",t);if(!0!==n.hasGlobal(o))throw new h(e,"ModuleExportNotFound",t);r=E(n.global(o)),n.setGlobal(o,"++"===t.operator?r+1:r-1)}return!1===t.prefix?r:"++"===t.operator?r+1:r-1}const n=oe(e,t.argument);r=E(ne(n.var).value);const o="++"===t.operator?r+1:r-1;return n.scope[n.id]={value:o},!1===t.prefix?r:"++"===t.operator?r+1:r-1}function xe(e,t,r,n,o){switch(t){case"=":return e===k?null:e;case"/=":return E(r)/E(e);case"*=":return E(r)*E(e);case"-=":return E(r)-E(e);case"+=":return Q(r)||Q(e)?N(r)+N(e):E(r)+E(e);case"%=":return E(r)%E(e);default:throw new h(o,"UnsupportedOperator",n)}}function Se(e,t){if("MemberExpression"===t.left.type){const r=pe(e,t.left.object);let n;if(!0===t.left.computed)n=pe(e,t.left.property);else{if("Identifier"!==t.left.property.type)throw new h(e,"InvalidIdentifier",t);n=t.left.property.name}const o=pe(e,t.right);if(J(r)){if(!X(n))throw new h(e,"ArrayAccessMustBeNumber",t);if(n<0&&(n=r.length+n),n<0||n>r.length)throw new h(e,"OutOfBounds",t);if(n===r.length){if("="!==t.operator)throw new h(e,"OutOfBounds",t);r[n]=xe(o,t.operator,r[n],t,e)}else r[n]=xe(o,t.operator,r[n],t,e)}else if(r instanceof p){if(!1===Q(n))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(n))r.setField(n,xe(o,t.operator,r.field(n),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:n});r.setField(n,xe(o,t.operator,null,t,e))}}else if(G(r)){if(!1===Q(n))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(n))r.setField(n,xe(o,t.operator,r.field(n),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:n});r.setField(n,xe(o,t.operator,null,t,e))}}else{if(O(r))throw new h(e,"Immutable",t);if(!(r instanceof ce))throw new h(e,"InvalidIdentifier",t);if(!1===Q(n))throw new h(e,"ModuleAccessorMustBeString",t);if(!0!==r.hasGlobal(n))throw new h(e,"ModuleExportNotFound",t);r.setGlobal(n,xe(o,t.operator,r.global(n),t,e))}return k}const r=oe(e,t.left),n=pe(e,t.right);return r.scope[r.id]={value:xe(n,t.operator,"="!==t.operator?ne(r.var).value:null,t,e)},k}function Re(e,t){const r=pe(e,t.expression);return r===k?k:new x(r)}function Fe(e,t){const r=pe(e,t.test);if(!0===r)return he(e,t.consequent);if(!1===r)return null!==t.alternate?he(e,t.alternate):k;throw new h(e,"BooleanConditionRequired",t)}function je(e,t){let r=k;for(let n=0;n<t.body.length;n++)if(r=he(e,t.body[n]),r instanceof v||r===F||r===j)return r;return r}function ke(e,t){if(null===t.argument)return new v(k);const r=pe(e,t.argument);return new v(r)}function Ie(t,r){if(null!=t.localScope)throw ee().error("Function declarations are only valid in global scope."),new h(t,"NeverReach",r);const n=e(r.id);if(!(n in t.globalScope))throw ee().error(`Function "${n}" not declared.`),new h(t,"NeverReach",r);const o=s(r),i=r.params.map(t=>e(t)),a=Array.from(o).filter(e=>!i.includes(e));return t.globalScope[n]={value:new ae(r,t,i,a)},k}function Oe(e,t){const r=oe(e,t.specifiers[0].local),n=e.libraryResolver;if(null==n)throw ee().error("Internal error: module loader not initialized"),new h(e,"NeverReach",t);const o=n.loadLibrary(r.id);let s;return n._moduleSingletons?.has(o.uri)?s=n._moduleSingletons.get(o.uri):(s=ce.load(e,o.syntax),n._moduleSingletons?.set(o.uri,s)),r.scope[r.id]={value:s},k}function Ae(e,t){return he(e,t.declaration),k}function Ce(e,t){for(let r=0;r<t.declarations.length;r++)Me(e,t.declarations[r]);return k}function Me(e,t){let r=null===t.init?null:pe(e,t.init);if(r===k&&(r=null),"Identifier"!==t.id.type)throw new h(e,"InvalidIdentifier",t);const n=oe(e,t.id);n.scope[n.id]={value:r}}function Ee(e,t){return Ne(e,pe(e,t.object),t)}function Ne(e,t,r){const n=r.computed?pe(e,r.property):r.property.name;return f(t,n)}function Be(e,t,r){for(const n of r)switch(n.type){case"MemberExpression":t=Ne(e,t,n);break;case"CallExpression":t=Ve(e,t,n);break;default:throw new h(null,"Unrecognized",n)}return t}function Ue(e,t,r){const n=r.computed?pe(e,r.property):r.property.name;return u(t,n)}function Ge(e,t){const r=i(t);let n=pe(e,r.root);for(const o of r.sections){const t=Ue(e,n,o.checked);if(null==t)return null;n=Be(e,t,o.unchecked)}return n}function ze(e,t){try{const r=pe(e,t.argument);if(H(r)){if("!"===t.operator)return!r;if("-"===t.operator)return-1*E(r);if("+"===t.operator)return 1*E(r);if("~"===t.operator)return~E(r);throw new h(e,"UnsupportUnaryOperator",t)}if("~"===t.operator)return~E(r);if("-"===t.operator)return-1*E(r);if("+"===t.operator)return 1*E(r);throw new h(e,"UnsupportUnaryOperator",t)}catch(r){throw r}}function De(e,t){try{const r=[];for(let n=0;n<t.elements.length;n++){const o=pe(e,t.elements[n]);if(R(o))throw new h(e,"NoFunctionInArray",t);o===k?r.push(null):r.push(o)}return r}catch(r){throw r}}function Le(e,t){try{const r=pe(e,t.left),n=pe(e,t.right);switch(t.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":return U(E(r),E(n),t.operator);case"==":return M(r,n);case"!=":return!M(r,n);case"<":case">":case"<=":case">=":return B(r,n,t.operator);case"+":return Q(r)||Q(n)?N(r)+N(n):E(r)+E(n);case"-":return E(r)-E(n);case"*":return E(r)*E(n);case"/":return E(r)/E(n);case"%":return E(r)%E(n);default:throw t.operator,new h(e,"UnsupportedOperator",t)}}catch(r){throw r}}function _e(e,t){try{const r=pe(e,t.left);if(H(r))switch(t.operator){case"||":{if(!0===r)return r;const n=pe(e,t.right);if(H(n))return n;throw new h(e,"LogicExpressionOrAnd",t)}case"&&":{if(!1===r)return r;const n=pe(e,t.right);if(H(n))return n;throw new h(e,"LogicExpressionOrAnd",t)}default:throw t.operator,new h(e,"LogicExpressionOrAnd",t)}throw new h(e,"LogicalExpressionOnlyBoolean",t)}catch(r){throw r}}function Ze(e,t,r){if(R(e))throw new h(t,"NoFunctionInTemplateLiteral",r);return e}function qe(e,t){let r="",n=0;for(const o of t.quasis)if(r+=o.value?o.value.cooked:"",!1===o.tail){r+=t.expressions[n]?N(Ze(pe(e,t.expressions[n]),e,t)):"",n++}return r}function We(e,t){return se(e,t)}function Pe(e,t){return Ve(e,"Identifier"===t.callee.type?se(e,t.callee,"FunctionNotFound"):pe(e,t.callee),t)}function Ve(e,t,r){if(R(t))return t.call(e,r);throw new h(e,"CallNonFunction",r)}function Te(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;I(null===r?[]:r,3,3,e,t);const n=pe(e,r[0]);if(!1===H(n))throw new h(e,"BooleanConditionRequired",t);return pe(e,!0===n?r[1]:r[2])}catch(r){throw r}}function Ke(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;I(null===r?[]:r,2,3,e,t);const n=pe(e,r[0]);if(3===r.length){const t=pe(e,r[1]),o=a(n,t);return null!=o&&""!==o?o:pe(e,r[2])}return null===n||""===n||void 0===n?pe(e,r[1]):n}catch(r){throw r}}function Ye(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;if(r.length<2)throw new h(e,"WrongNumberOfParameters",t);if(2===r.length)return pe(e,r[1]);{if((r.length-1)%2==0)throw new h(e,"WrongNumberOfParameters",t);const n=pe(e,r[0]);return $e(e,t,1,n)}}catch(r){throw r}}function $e(e,t,r,n){try{const o=t.arguments,s=pe(e,o[r]);if(M(s,n))return pe(e,o[r+1]);{const s=o.length-r;return 1===s?pe(e,o[r]):2===s?null:3===s?pe(e,o[r+2]):$e(e,t,r+2,n)}}catch(o){throw o}}function He(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;if(r.length<3)throw new h(e,"WrongNumberOfParameters",t);if(r.length%2==0)throw new h(e,"WrongNumberOfParameters",t);const n=pe(e,r[0]);if(!1===H(n))throw new h(e,"BooleanConditionRequired",r[0]);return Je(e,t,0,n)}catch(r){throw r}}function Je(e,t,r,n){try{const o=t.arguments;if(!0===n)return pe(e,o[r+1]);if(3===o.length-r)return pe(e,o[r+2]);{const n=pe(e,o[r+2]);if(!1===H(n))throw new h(e,"BooleanConditionRequired",o[r+2]);return Je(e,t,r+2,n)}}catch(o){throw o}}function Qe(){const e=Object.create(null);L(e,fe),V(e,fe),_(e,fe,We),W(e,fe),Z(e,fe),P(e,fe),q(e,fe),T(e,fe),e.iif=Te,e.defaultvalue=Ke,e.decode=Ye,e.when=He;const t=function(){this.textformatting={value:p.textFormatting()}};t.prototype=Object.create(null),t.prototype.infinity=Object.freeze({value:Number.POSITIVE_INFINITY}),t.prototype.pi=Object.freeze({value:Math.PI});for(const[r,n]of Object.entries(e))t.prototype[r]=Object.freeze({value:new m(n)});return t}const Xe=Qe();function et(e){const t={mode:"sync",compiled:!1,functions:Object.create(null),signatures:[],standardFunction:fe,evaluateIdentifier:We};for(let r=0;r<e.length;r++)e[r].registerFunctions(t);for(const[r,n]of Object.entries(t.functions))Xe.prototype[r]=Object.freeze({value:new m(n)});for(let r=0;r<t.signatures.length;r++)z(t.signatures[r],"sync")}function tt(e){console.log(e)}function rt(r,s){const i=new Set(Object.keys(s?.vars||{}).map(t=>e(t))),a=new Set(Object.keys(s?.customfunctions||{}).map(t=>e(t))),{globals:l,exports:c}=o(r);return e=>{const o=e.spatialReference??Y.WebMercator;let s=null;r.usesModules&&(s=new n(new Map,r.loadedModules));const u=new Xe;for(const t of a)null!=e.customfunctions&&t in e.customfunctions?u[t]={value:new m(e.customfunctions[t])}:u[t]=te;for(const t of i){if(null==e.vars||!(t in e.vars)){t in u||(u[t]=te);continue}const r=e.vars[t]??null;$(r)?u[t]={value:w.createFromGraphic(r,e.timeZone??null)}:u[t]={value:r}}for(const t of l)t in u||(u[t]=te);const f={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??tt,abortSignal:t,timeZone:e.timeZone??null,spatialReference:o,track:e.track,depthCounter:{depth:1},libraryResolver:s,exports:c,localScope:null,globalScope:u},p=je(f,r);if(p instanceof v||p instanceof x){const e=p.value;if(S(e))return null;if(R(e))throw new h(f,"IllegalResult",null);return e}if(S(p))return null;if(p===F)throw new h(f,"IllegalResult",null);if(p===j)throw new h(f,"IllegalResult",null);throw new h(f,"NeverReach",null)}}function nt(e,t){return rt(e,t)(t)}et([D]);export{nt as executeScript,et as extend,rt as prepareScript};
|
|
2
|
+
import{toSymbolId as e,neverAbortedSignal as t}from"./arcadeEnvironment.js";import{ArcadeModule as r}from"./ArcadeModule.js";import{ArcadeModuleLoader as n}from"./ArcadeModuleLoader.js";import{collectDeclaredGlobalNames as o,collectDeclaredLocalNames as s,flattenAccessChain as i}from"./compilerUtils.js";import{getNestedOptionalValue as a,getGeometryKeys as l,getGeometryMember as c,tryGetMember as u,getMember as f}from"./containerUtils.js";import p from"./Dictionary.js";import{ArcadeExecutionError as h,ensureArcadeExecutionError as d}from"./executionError.js";import{Feature as w}from"./Feature.js";import{NativeFunction as m,ArcadeFunction as g,ScopeMarshalledFunction as b,wrapModuleScopedResponse as y}from"./FunctionWrapper.js";import{R as v,I as x,q as S,i as R,z as F,A as j,v as k,B as I,j as O,y as A,h as N,w as C,r as M,s as E,u as B,x as U,k as G}from"../chunks/languageUtils.js";import{addFunctionDeclaration as z}from"./treeAnalysis.js";import{A as D}from"../chunks/array.js";import{registerFunctions as L}from"./functions/date.js";import{registerFunctions as _}from"./functions/feature.js";import{registerFunctions as Z}from"./functions/geometry.js";import{registerFunctions as q}from"./functions/geomsync.js";import{registerFunctions as W}from"./functions/maths.js";import{registerFunctions as P}from"./functions/stats.js";import{registerFunctions as V}from"./functions/string.js";import{registerFunctions as T}from"./functions/track.js";import K from"../core/Logger.js";import Y from"../geometry/SpatialReference.js";import{isGraphic as $}from"../support/graphicInstanceUtils.js";import{isBoolean as H,isArray as J,isString as Q,isNumber as X}from"../support/guards.js";const ee=()=>K.getLogger("esri.arcade.arcadeRuntime"),te=Symbol("uninitialized");function re(e){if(e===te)throw new h(null,"InvalidIdentifier",null)}function ne(e){return re(e),e}function oe(t,r){const n=e(r);if(null!==t.localScope){const e=t.localScope[n];if(void 0!==e)return{scope:t.localScope,id:n,var:e}}const o=t.globalScope[n];if(void 0!==o)return{scope:t.globalScope,id:n,var:o};throw new h(t,"InvalidIdentifier",r)}function se(t,r,n="InvalidIdentifier"){const o=e(r);if(null!==t.localScope){const e=t.localScope[o];if(void 0!==e)return re(e),e.value}const s=t.globalScope[o];if(void 0!==s)return re(s),s.value;throw new h(t,n,r)}const ie=function(){};ie.prototype=Object.freeze(Object.create(null));class ae extends g{constructor(e,t,r,n){super(),this.definition=e,this.context=t,this._params=r,this._locals=n}get debugName(){return null}createFunction(e){return(...t)=>{const r={spatialReference:this.context.spatialReference,console:this.context.console,services:this.context.services,timeZone:this.context.timeZone??null,lrucache:this.context.lrucache,exports:this.context.exports,libraryResolver:this.context.libraryResolver,interceptor:this.context.interceptor,abortSignal:this.context.abortSignal,localScope:new ie,depthCounter:{depth:e.depthCounter.depth+1},globalScope:this.context.globalScope,track:this.context.track};if(r.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",null);return le(r,this.definition.body,this._params,this._locals,t,null)}}call(e,t){return fe(e,t,(r,n,o)=>{const s={spatialReference:e.spatialReference,services:e.services,globalScope:e.globalScope,depthCounter:{depth:e.depthCounter.depth+1},libraryResolver:e.libraryResolver,exports:e.exports,timeZone:e.timeZone??null,console:e.console,lrucache:e.lrucache,interceptor:e.interceptor,abortSignal:e.abortSignal,localScope:new ie,track:e.track};if(s.depthCounter.depth>64)throw new h(e,"MaximumCallDepth",t);return le(s,this.definition.body,this._params,this._locals,o,t)})}marshalledCall(e,t,r,n){return n(e,t,(o,s,i)=>{const a={spatialReference:e.spatialReference,globalScope:r.globalScope,services:e.services,depthCounter:{depth:e.depthCounter.depth+1},libraryResolver:e.libraryResolver,exports:e.exports,console:e.console,timeZone:e.timeZone??null,lrucache:e.lrucache,interceptor:e.interceptor,abortSignal:e.abortSignal,localScope:new ie,track:e.track};return i=i.map(t=>!R(t)||t instanceof b?t:y(t,e,n)),y(le(a,this.definition.body,this._params,this._locals,i,t),r,n)})}}function le(e,t,r,n,o,s){try{if(r.length!==o.length)throw new h(e,"WrongNumberOfParameters",s);if(null!=e.localScope){for(let t=0;t<r.length;t++)e.localScope[r[t]]={value:o[t]};for(const t of n)e.localScope[t]=te}const i=he(e,t);if(i instanceof v)return i.value;if(i===F)throw new h(e,"UnexpectedToken",s);if(i===j)throw new h(e,"UnexpectedToken",s);return i instanceof x?i.value:i}catch(i){throw i}}class ce extends r{constructor(e){super(),this.moduleGlobalContext=e}global(t){const r=e(t);if(!this.moduleGlobalContext.exports.has(r))throw new h(null,"ModuleExportNotFound",null);const n=this.moduleGlobalContext.globalScope[r];if(re(n),R(n.value)&&!(n.value instanceof b)){const e=new b;return e.fn=n.value,e.parameterEvaluator=fe,e.context=this.moduleGlobalContext,this.moduleGlobalContext.globalScope[r]={value:e},e}return n.value}setGlobal(t,r){if(R(r))throw new h(null,"AssignModuleFunction",null);const n=e(t);if(!this.moduleGlobalContext.exports.has(n))throw new h(null,"ModuleExportNotFound",null);this.moduleGlobalContext.globalScope[n]={value:r}}hasGlobal(t){return this.moduleGlobalContext.exports.has(e(t))}static load(e,r){const{globals:s,exports:i}=o(r),a=new Xe;for(const t of s)t in a||(a[t]=te);const l=e.spatialReference??Y.WebMercator,c={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??tt,abortSignal:t,timeZone:e.timeZone??null,spatialReference:l,track:e.track,depthCounter:{depth:1},libraryResolver:new n(e.libraryResolver._moduleSingletons,r.loadedModules),exports:i,localScope:null,globalScope:a};return je(c,r),new ce(c)}}function ue(e,t){const r=[];for(let n=0;n<t.arguments.length;n++)r.push(pe(e,t.arguments[n]));return r}function fe(e,t,r){try{return!0===t.preparsed?r(e,null,t.arguments):r(e,t,ue(e,t))}catch(n){throw n}}function pe(e,t){try{switch(t.type){case"AssignmentExpression":return Se(e,t);case"UpdateExpression":return ve(e,t);case"TemplateLiteral":return qe(e,t);case"Identifier":return We(e,t);case"MemberExpression":return Me(e,t);case"Literal":return t.value;case"CallExpression":return Pe(e,t);case"UnaryExpression":return ze(e,t);case"BinaryExpression":return Le(e,t);case"LogicalExpression":return _e(e,t);case"ArrayExpression":return De(e,t);case"ObjectExpression":return de(e,t);case"MemberAccessChainExpression":return Ge(e,t);case"SafeMemberExpression":throw ee().error("SafeMemberExpression outside of MemberAccessChainExpression"),new h(null,"Unrecognized",t);default:throw new h(e,"Unrecognized",t)}}catch(r){throw d(e,t,r)}}function he(e,t){switch(t.type){case"EmptyStatement":return k;case"VariableDeclaration":return Ne(e,t);case"ImportDeclaration":return Oe(e,t);case"ExportNamedDeclaration":return Ae(e,t);case"BlockStatement":return je(e,t);case"FunctionDeclaration":return Ie(e,t);case"ReturnStatement":return ke(e,t);case"IfStatement":return Fe(e,t);case"ExpressionStatement":return Re(e,t);case"BreakStatement":return F;case"ContinueStatement":return j;case"ForStatement":return ge(e,t);case"ForInStatement":return we(e,t);case"ForOfStatement":return me(e,t);case"WhileStatement":return be(e,t);default:throw new h(e,"Unrecognized",t)}}function de(e,t){const r=Object.create(null),n=new Map;for(let s=0;s<t.properties.length;s++){const o=t.properties[s],i="Identifier"===o.key.type?o.key.name:pe(e,o.key),a=pe(e,o.value);if(R(a))throw new h(e,"NoFunctionInDictionary",t);if(!1===Q(i))throw new h(e,"KeyMustBeString",t);let l=i.toString();const c=l.toLowerCase();n.has(c)?l=n.get(c):n.set(c,l),r[l]=a===k?null:a}const o=new p(r);return o.immutable=!1,o}function we(e,t){const r=pe(e,t.right);"VariableDeclaration"===t.left.type&&Ne(e,t.left);const n=oe(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);if(J(r)||Q(r)){const o=r.length;for(let r=0;r<o;r++){n.scope[n.id]={value:r};const o=he(e,t.body);if(o===F)break;if(o instanceof v)return o}return k}if(O(r)){for(let o=0;o<r.length();o++){n.scope[n.id]={value:o};const r=he(e,t.body);if(r===F)break;if(r instanceof v)return r}return k}if(r instanceof p||A(r)){const o=r.keys();for(let r=0;r<o.length;r++){n.scope[n.id]={value:o[r]};const s=he(e,t.body);if(s===F)break;if(s instanceof v)return s}return k}if(N(r)){for(const o of l(r)){n.scope[n.id]={value:o};const r=he(e,t.body);if(r===F)break;if(r instanceof v)return r}return k}return k}function me(e,t){const r=pe(e,t.right);"VariableDeclaration"===t.left.type&&he(e,t.left);const n=oe(e,"VariableDeclaration"===t.left.type?t.left.declarations[0].id:t.left);if(J(r)||Q(r)){const o=r.length;for(let s=0;s<o;s++){if(s>=r.length)throw new h(e,"OutOfBounds",t);n.scope[n.id]={value:r[s]};const o=he(e,t.body);if(o===F)break;if(o instanceof v)return o}return k}if(O(r)){for(let o=0;o<r.length();o++){n.scope[n.id]={value:r.get(o)};const s=he(e,t.body);if(s===F)break;if(s instanceof v)return s}return k}if(r instanceof p||A(r)){for(const o of r.keys()){const s=r.field(o);n.scope[n.id]={value:p.containerEntry(o,s)};const i=he(e,t.body);if(i===F)break;if(i instanceof v)return i}return k}if(N(r)){for(const o of l(r)){const s=c(r,o,e,t);n.scope[n.id]={value:p.containerEntry(o,s)};const i=he(e,t.body);if(i===F)break;if(i instanceof v)return i}return k}return k}function ge(e,t){null!==t.init&&("VariableDeclaration"===t.init.type?he(e,t.init):pe(e,t.init));const r={testResult:!0,lastAction:k};do{ye(e,t,r)}while(!0===r.testResult);return r.lastAction instanceof v?r.lastAction:k}function be(e,t){const r={testResult:!0,lastAction:k};if(r.testResult=pe(e,t.test),!1===r.testResult)return k;if(!0!==r.testResult)throw new h(e,"BooleanConditionRequired",t);for(;!0===r.testResult&&(r.lastAction=he(e,t.body),r.lastAction!==F)&&!(r.lastAction instanceof v);)if(r.testResult=pe(e,t.test),!0!==r.testResult&&!1!==r.testResult)throw new h(e,"BooleanConditionRequired",t);return r.lastAction instanceof v?r.lastAction:k}function ye(e,t,r){if(null!==t.test){if(r.testResult=pe(e,t.test),!1===r.testResult)return;if(!0!==r.testResult)throw new h(e,"BooleanConditionRequired",t)}r.lastAction=he(e,t.body),r.lastAction!==F?r.lastAction instanceof v?r.testResult=!1:null!==t.update&&pe(e,t.update):r.testResult=!1}function ve(e,t){if("CallExpression"===t.argument.type)throw new h(e,"NeverReach",t);let r;if("MemberExpression"===t.argument.type){const n=pe(e,t.argument.object);let o;if(!0===t.argument.computed)o=pe(e,t.argument.property);else{if("Identifier"!==t.argument.property.type)throw new h(e,"Unrecognized",t);o=t.argument.property.name}if(J(n)){if(!X(o))throw new h(e,"ArrayAccessMustBeNumber",t);if(o<0&&(o=n.length+o),o<0||o>=n.length)throw new h(e,"OutOfBounds",t);r=M(n[o]),n[o]="++"===t.operator?r+1:r-1}else if(n instanceof p){if(!1===Q(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==n.hasField(o))throw new h(e,"FieldNotFound",t);r=M(n.field(o)),n.setField(o,"++"===t.operator?r+1:r-1)}else if(G(n)){if(!1===Q(o))throw new h(e,"KeyAccessorMustBeString",t);if(!0!==n.hasField(o))throw new h(e,"FieldNotFound",t);r=M(n.field(o)),n.setField(o,"++"===t.operator?r+1:r-1)}else{if(O(n))throw new h(e,"Immutable",t);if(!(n instanceof ce))throw new h(e,"InvalidParameter",t);if(!1===Q(o))throw new h(e,"ModuleAccessorMustBeString",t);if(!0!==n.hasGlobal(o))throw new h(e,"ModuleExportNotFound",t);r=M(n.global(o)),n.setGlobal(o,"++"===t.operator?r+1:r-1)}return!1===t.prefix?r:"++"===t.operator?r+1:r-1}const n=oe(e,t.argument);r=M(ne(n.var).value);const o="++"===t.operator?r+1:r-1;return n.scope[n.id]={value:o},!1===t.prefix?r:"++"===t.operator?r+1:r-1}function xe(e,t,r,n,o){switch(t){case"=":return e===k?null:e;case"/=":return M(r)/M(e);case"*=":return M(r)*M(e);case"-=":return M(r)-M(e);case"+=":return Q(r)||Q(e)?E(r)+E(e):M(r)+M(e);case"%=":return M(r)%M(e);default:throw new h(o,"UnsupportedOperator",n)}}function Se(e,t){if("MemberExpression"===t.left.type){const r=pe(e,t.left.object);let n;if(!0===t.left.computed)n=pe(e,t.left.property);else{if("Identifier"!==t.left.property.type)throw new h(e,"InvalidIdentifier",t);n=t.left.property.name}const o=pe(e,t.right);if(J(r)){if(!X(n))throw new h(e,"ArrayAccessMustBeNumber",t);if(n<0&&(n=r.length+n),n<0||n>r.length)throw new h(e,"OutOfBounds",t);if(n===r.length){if("="!==t.operator)throw new h(e,"OutOfBounds",t);r[n]=xe(o,t.operator,r[n],t,e)}else r[n]=xe(o,t.operator,r[n],t,e)}else if(r instanceof p){if(!1===Q(n))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(n))r.setField(n,xe(o,t.operator,r.field(n),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:n});r.setField(n,xe(o,t.operator,null,t,e))}}else if(G(r)){if(!1===Q(n))throw new h(e,"KeyAccessorMustBeString",t);if(!0===r.hasField(n))r.setField(n,xe(o,t.operator,r.field(n),t,e));else{if("="!==t.operator)throw new h(e,"FieldNotFound",t,{key:n});r.setField(n,xe(o,t.operator,null,t,e))}}else{if(O(r))throw new h(e,"Immutable",t);if(!(r instanceof ce))throw new h(e,"InvalidIdentifier",t);if(!1===Q(n))throw new h(e,"ModuleAccessorMustBeString",t);if(!0!==r.hasGlobal(n))throw new h(e,"ModuleExportNotFound",t);r.setGlobal(n,xe(o,t.operator,r.global(n),t,e))}return k}const r=oe(e,t.left),n=pe(e,t.right);return r.scope[r.id]={value:xe(n,t.operator,"="!==t.operator?ne(r.var).value:null,t,e)},k}function Re(e,t){const r=pe(e,t.expression);return r===k?k:new x(r)}function Fe(e,t){const r=pe(e,t.test);if(!0===r)return he(e,t.consequent);if(!1===r)return null!==t.alternate?he(e,t.alternate):k;throw new h(e,"BooleanConditionRequired",t)}function je(e,t){let r=k;for(let n=0;n<t.body.length;n++)if(r=he(e,t.body[n]),r instanceof v||r===F||r===j)return r;return r}function ke(e,t){if(null===t.argument)return new v(k);const r=pe(e,t.argument);return new v(r)}function Ie(t,r){if(null!=t.localScope)throw ee().error("Function declarations are only valid in global scope."),new h(t,"NeverReach",r);const n=e(r.id);if(!(n in t.globalScope))throw ee().error(`Function "${n}" not declared.`),new h(t,"NeverReach",r);const o=s(r),i=r.params.map(t=>e(t)),a=Array.from(o).filter(e=>!i.includes(e));return t.globalScope[n]={value:new ae(r,t,i,a)},k}function Oe(e,t){const r=oe(e,t.specifiers[0].local),n=e.libraryResolver;if(null==n)throw ee().error("Internal error: module loader not initialized"),new h(e,"NeverReach",t);const o=n.loadLibrary(r.id);let s;return n._moduleSingletons?.has(o.uri)?s=n._moduleSingletons.get(o.uri):(s=ce.load(e,o.syntax),n._moduleSingletons?.set(o.uri,s)),r.scope[r.id]={value:s},k}function Ae(e,t){return he(e,t.declaration),k}function Ne(e,t){for(let r=0;r<t.declarations.length;r++)Ce(e,t.declarations[r]);return k}function Ce(e,t){let r=null===t.init?null:pe(e,t.init);if(r===k&&(r=null),"Identifier"!==t.id.type)throw new h(e,"InvalidIdentifier",t);const n=oe(e,t.id);n.scope[n.id]={value:r}}function Me(e,t){return Ee(e,pe(e,t.object),t)}function Ee(e,t,r){const n=r.computed?pe(e,r.property):r.property.name;return f(t,n)}function Be(e,t,r){for(const n of r)switch(n.type){case"MemberExpression":t=Ee(e,t,n);break;case"CallExpression":t=Ve(e,t,n);break;default:throw new h(null,"Unrecognized",n)}return t}function Ue(e,t,r){const n=r.computed?pe(e,r.property):r.property.name;return u(t,n)}function Ge(e,t){const r=i(t);let n=pe(e,r.root);for(const o of r.sections){const t=Ue(e,n,o.checked);if(null==t)return null;n=Be(e,t,o.unchecked)}return n}function ze(e,t){try{const r=pe(e,t.argument);if(H(r)){if("!"===t.operator)return!r;if("-"===t.operator)return-1*M(r);if("+"===t.operator)return 1*M(r);if("~"===t.operator)return~M(r);throw new h(e,"UnsupportUnaryOperator",t)}if("~"===t.operator)return~M(r);if("-"===t.operator)return-1*M(r);if("+"===t.operator)return 1*M(r);throw new h(e,"UnsupportUnaryOperator",t)}catch(r){throw r}}function De(e,t){try{const r=[];for(let n=0;n<t.elements.length;n++){const o=pe(e,t.elements[n]);if(R(o))throw new h(e,"NoFunctionInArray",t);o===k?r.push(null):r.push(o)}return r}catch(r){throw r}}function Le(e,t){try{const r=pe(e,t.left),n=pe(e,t.right);switch(t.operator){case"|":case"<<":case">>":case">>>":case"^":case"&":return U(M(r),M(n),t.operator);case"==":return C(r,n);case"!=":return!C(r,n);case"<":case">":case"<=":case">=":return B(r,n,t.operator);case"+":return Q(r)||Q(n)?E(r)+E(n):M(r)+M(n);case"-":return M(r)-M(n);case"*":return M(r)*M(n);case"/":return M(r)/M(n);case"%":return M(r)%M(n);default:throw t.operator,new h(e,"UnsupportedOperator",t)}}catch(r){throw r}}function _e(e,t){try{const r=pe(e,t.left);if(H(r))switch(t.operator){case"||":{if(!0===r)return r;const n=pe(e,t.right);if(H(n))return n;throw new h(e,"LogicExpressionOrAnd",t)}case"&&":{if(!1===r)return r;const n=pe(e,t.right);if(H(n))return n;throw new h(e,"LogicExpressionOrAnd",t)}default:throw t.operator,new h(e,"LogicExpressionOrAnd",t)}throw new h(e,"LogicalExpressionOnlyBoolean",t)}catch(r){throw r}}function Ze(e,t,r){if(R(e))throw new h(t,"NoFunctionInTemplateLiteral",r);return e}function qe(e,t){let r="",n=0;for(const o of t.quasis)if(r+=o.value?o.value.cooked:"",!1===o.tail){r+=t.expressions[n]?E(Ze(pe(e,t.expressions[n]),e,t)):"",n++}return r}function We(e,t){return se(e,t)}function Pe(e,t){return Ve(e,"Identifier"===t.callee.type?se(e,t.callee,"FunctionNotFound"):pe(e,t.callee),t)}function Ve(e,t,r){if(R(t))return t.call(e,r);throw new h(e,"CallNonFunction",r)}function Te(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;I(null===r?[]:r,3,3,e,t);const n=pe(e,r[0]);if(!1===H(n))throw new h(e,"BooleanConditionRequired",t);return pe(e,!0===n?r[1]:r[2])}catch(r){throw r}}function Ke(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;I(null===r?[]:r,2,3,e,t);const n=pe(e,r[0]);if(3===r.length){const t=pe(e,r[1]),o=a(n,t);return null!=o&&""!==o?o:pe(e,r[2])}return null===n||""===n||void 0===n?pe(e,r[1]):n}catch(r){throw r}}function Ye(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;if(r.length<2)throw new h(e,"WrongNumberOfParameters",t);if(2===r.length)return pe(e,r[1]);{if((r.length-1)%2==0)throw new h(e,"WrongNumberOfParameters",t);const n=pe(e,r[0]);return $e(e,t,1,n)}}catch(r){throw r}}function $e(e,t,r,n){try{const o=t.arguments,s=pe(e,o[r]);if(C(s,n))return pe(e,o[r+1]);{const s=o.length-r;return 1===s?pe(e,o[r]):2===s?null:3===s?pe(e,o[r+2]):$e(e,t,r+2,n)}}catch(o){throw o}}function He(e,t){try{if(!0===t.preparsed)throw new h(e,"NeverReach",t);const r=t.arguments;if(r.length<3)throw new h(e,"WrongNumberOfParameters",t);if(r.length%2==0)throw new h(e,"WrongNumberOfParameters",t);const n=pe(e,r[0]);if(!1===H(n))throw new h(e,"BooleanConditionRequired",r[0]);return Je(e,t,0,n)}catch(r){throw r}}function Je(e,t,r,n){try{const o=t.arguments;if(!0===n)return pe(e,o[r+1]);if(3===o.length-r)return pe(e,o[r+2]);{const n=pe(e,o[r+2]);if(!1===H(n))throw new h(e,"BooleanConditionRequired",o[r+2]);return Je(e,t,r+2,n)}}catch(o){throw o}}function Qe(){const e=Object.create(null);L(e,fe),V(e,fe),_(e,fe,We),W(e,fe),Z(e,fe),P(e,fe),q(e,fe),T(e,fe),e.iif=Te,e.defaultvalue=Ke,e.decode=Ye,e.when=He;const t=function(){this.textformatting={value:p.textFormatting()}};t.prototype=Object.create(null),t.prototype.infinity=Object.freeze({value:Number.POSITIVE_INFINITY}),t.prototype.nan=Object.freeze({value:Number.NaN}),t.prototype.pi=Object.freeze({value:Math.PI});for(const[r,n]of Object.entries(e))t.prototype[r]=Object.freeze({value:new m(n)});return t}const Xe=Qe();function et(e){const t={mode:"sync",compiled:!1,functions:Object.create(null),signatures:[],standardFunction:fe,evaluateIdentifier:We};for(let r=0;r<e.length;r++)e[r].registerFunctions(t);for(const[r,n]of Object.entries(t.functions))Xe.prototype[r]=Object.freeze({value:new m(n)});for(let r=0;r<t.signatures.length;r++)z(t.signatures[r],"sync")}function tt(e){console.log(e)}function rt(r,s){const i=new Set(Object.keys(s?.vars||{}).map(t=>e(t))),a=new Set(Object.keys(s?.customfunctions||{}).map(t=>e(t))),{globals:l,exports:c}=o(r);return e=>{const o=e.spatialReference??Y.WebMercator;let s=null;r.usesModules&&(s=new n(new Map,r.loadedModules));const u=new Xe;for(const t of a)null!=e.customfunctions&&t in e.customfunctions?u[t]={value:new m(e.customfunctions[t])}:u[t]=te;for(const t of i){if(null==e.vars||!(t in e.vars)){t in u||(u[t]=te);continue}const r=e.vars[t]??null;$(r)?u[t]={value:w.createFromGraphic(r,e.timeZone??null)}:u[t]={value:r}}for(const t of l)t in u||(u[t]=te);const f={lrucache:e.lrucache,interceptor:e.interceptor,services:e.services,console:e.console??tt,abortSignal:t,timeZone:e.timeZone??null,spatialReference:o,track:e.track,depthCounter:{depth:1},libraryResolver:s,exports:c,localScope:null,globalScope:u},p=je(f,r);if(p instanceof v||p instanceof x){const e=p.value;if(S(e))return null;if(R(e))throw new h(f,"IllegalResult",null);return e}if(S(p))return null;if(p===F)throw new h(f,"IllegalResult",null);if(p===j)throw new h(f,"IllegalResult",null);throw new h(f,"NeverReach",null)}}function nt(e,t){return rt(e,t)(t)}et([D]);export{nt as executeScript,et as extend,rt as prepareScript};
|