Custom Gis Application with Arcgis Javascript API with modern layouting
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

31 lines
14 KiB

// All material copyright Esri, All Rights Reserved, unless otherwise specified.
// See https://js.arcgis.com/4.30/esri/copyright.txt for details.
//>>built
define(["exports","../../chunks/index","./diagnosticMessages","./languageKeywords","./types"],function(n,e,f,u,h){function r(a,b){return b?a.replaceAll(/\${(.*?)}/g,(c,d)=>b[d]?.toString()??""):a}function q(a){return!!a&&"dictionary"!==a.type}function m(a){return e.Q(a)||e.j(a)&&!a?.body.length}function v(a,b){if(!a||void 0===b||null===b||0>b)return null;const {min:c,max:d}=a.overloads.reduce((g,k)=>{const {min:l,max:p}=k.parametersInfo;0<=g.min&&(g.min=Math.min(l,g.min));0<=g.max&&(g.max=0>p?p:Math.max(p,
g.max));return g},{min:Infinity,max:0});return b<c?0<c?{code:f.DiagnosticCodes.NotEnoughArguments,data:{min:c}}:{code:f.DiagnosticCodes.NoArgumentExpected}:0<=d&&b>d?{code:f.DiagnosticCodes.TooManyArguments,data:{max:d}}:null}function w(a){return Array.from((a??"").matchAll(x),b=>b[0].slice(1))}class t{constructor(a,b=[]){this._apiDefinitions=a;this._profileVariables=b;this._isInBlock=!1;this._identifierBeingAssigned=void 0;this._assignmentValidationMode="disabled";this._scriptScopeIdentifiers=new Map;
this._diagnostics=[];this._undeclaredIdentifiersInFunctions=new Map}validateScript(a){if(!a)return{diagnostics:[],program:null};this._isInBlock=!1;this._identifierBeingAssigned=void 0;this._assignmentValidationMode="disabled";this._diagnostics=[];this._scriptScopeIdentifiers.clear();this._undeclaredIdentifiersInFunctions.clear();this._functionScopeIdentifiers=void 0;let b=null;try{b=e.rt(a,{tolerant:!0}),this.handleErrors(b.errors),b.body.forEach(c=>this.validateStatement(c)),this.diagnoseIdentifiers(),
0<this._undeclaredIdentifiersInFunctions.size&&this._undeclaredIdentifiersInFunctions.forEach(c=>{for(const d of c)this.logDiagnostic(d.node.loc,{code:f.DiagnosticCodes.NotDefined,data:{identifier:d.node.name}})})}catch(c){this.handleException(c)}return{diagnostics:this._diagnostics,program:b}}disableRecordIdentifierAssignment(a,b){const c=this._assignmentValidationMode;this._assignmentValidationMode="disabled";a.call(this,b);this._assignmentValidationMode=c}inBlock(a,b){const c=this._isInBlock;this._isInBlock=
!0;a.call(this,b);this._isInBlock=c}get _isInFunctionScope(){return!!this._functionScopeIdentifiers}inFunctionScope(a){this._functionScopeIdentifiers=new Map;a.call(this);this.diagnoseIdentifiers();this._functionScopeIdentifiers=void 0}logDiagnostic(a,b){a={severity:h.DiagnosticSeverity.Error,...b,message:r(f.diagnosticMessages[b.code]??e.q[b.code],b.data),range:{start:{line:a.start.line-1,character:a.start.column},end:{line:a.end.line-1,character:a.end.column}}};this._diagnostics.push(a)}handleErrors(a){(a??
[]).forEach(this.handleException,this)}handleException(a){if("ParsingError"===a?.name){const {range:b,code:c,data:d}=a;this.logDiagnostic(b,{code:c,data:d})}else this.logDiagnostic({start:{line:1,column:0},end:{line:1,column:0}},{code:f.DiagnosticCodes.ExecutionError,data:{stack:a.stack}})}getIdentifierInfo(a){return this._functionScopeIdentifiers?.get(a)??this._scriptScopeIdentifiers.get(a)}setIdentiferInfo(a,b){this._functionScopeIdentifiers?this._functionScopeIdentifiers.set(a,b):((this._functionScopeIdentifiers??
this._scriptScopeIdentifiers).set(a,b),!this._functionScopeIdentifiers&&this._undeclaredIdentifiersInFunctions.has(a)&&(this._undeclaredIdentifiersInFunctions.delete(a),b.used=!0))}isProfileVariable(a){return(this._profileVariables??[]).some(b=>b.name.toLowerCase()===a)}isApiItem(a){const b=!!this._apiDefinitions?.constantDefinitions?.get(a);a=!!this._apiDefinitions?.functionDefinitions?.get(a);return b||a}validateStatement(a){if(a)switch(a.type){case e.i.BlockStatement:a.body.forEach(b=>this.validateStatement(b));
break;case e.i.VariableDeclaration:a.declarations.forEach(b=>this.validateVariableDeclarator(b));break;case e.i.FunctionDeclaration:this.validateFunctionDeclaration(a);break;case e.i.ExportNamedDeclaration:this.validateExportDeclaration(a);break;case e.i.ImportDeclaration:this.validateImportDeclaration(a);break;case e.i.WhileStatement:this.validateWhileStatement(a);break;case e.i.ForStatement:this.validateForStatement(a);break;case e.i.ForInStatement:this.validateForInStatement(a);break;case e.i.IfStatement:this.validateIfStatement(a);
break;case e.i.ReturnStatement:this.validateExpression(a.argument);break;case e.i.ExpressionStatement:this.validateExpression(a.expression)}}validateVariableDeclarator(a){this.validateExpression(a.init);this.recordVariableIdentifier(a.id,{initialized:!!a.init})}validateFunctionDeclaration(a){this.recordFunctionIdentifier(a);this.inFunctionScope(()=>{a.params.forEach(b=>this.recordParamAsIdentifier(b));m(a.body)&&this.logDiagnostic(a.body.loc,{code:f.DiagnosticCodes.UnexpectedEmptyFunction,data:{identifier:a.id.name},
severity:h.DiagnosticSeverity.Warning});this.validateStatement(a.body)})}validateExportDeclaration(a){this.validateStatement(a.declaration)}validateImportDeclaration(a){this.recordImportIdentifier(a)}validateForStatement(a){e.Ee(a.init)?this.inBlock(this.validateStatement,a.init):this.validateExpression(a.init);this.validateExpression(a.update);this.validateExpression(a.test);m(a.body)&&this.logDiagnostic(a.body.loc,{code:f.DiagnosticCodes.EmptyBlockStatement,severity:h.DiagnosticSeverity.Warning});
this.inBlock(this.validateStatement,a.body)}validateWhileStatement(a){this.validateExpression(a.test);m(a.body)&&this.logDiagnostic(a.body.loc,{code:f.DiagnosticCodes.EmptyBlockStatement,severity:h.DiagnosticSeverity.Warning});this.inBlock(this.validateStatement,a.body)}validateForInStatement(a){e.ke(a.left)?this.validateExpression(a.left):this.recordVariableIdentifier(a.left.declarations[0].id,{initialized:!0,inBlock:!0});this.validateExpression(a.right);m(a.body)&&this.logDiagnostic(a.body.loc,
{code:f.DiagnosticCodes.EmptyBlockStatement,severity:h.DiagnosticSeverity.Warning});this.validateStatement(a.body)}validateIfStatement(a){this.validateExpression(a.test);m(a.consequent)&&this.logDiagnostic(a.consequent.loc,{code:f.DiagnosticCodes.EmptyBlockStatement,severity:h.DiagnosticSeverity.Warning});a.alternate&&m(a.alternate)&&this.logDiagnostic(a.alternate.loc,{code:f.DiagnosticCodes.EmptyBlockStatement,severity:h.DiagnosticSeverity.Warning});this.inBlock(this.validateStatement,a.consequent);
this.inBlock(this.validateStatement,a.alternate)}validateExpression(a){if(a)switch(a.type){case e.i.AssignmentExpression:this.validateAssignmentExpression(a);break;case e.i.CallExpression:this.validateCallExpression(a);break;case e.i.Identifier:this.validateIdentifier(a);break;case e.i.Literal:this.validateLiteral(a);break;case e.i.ArrayExpression:a.elements.forEach(b=>this.validateExpression(b));break;case e.i.ObjectExpression:this.validateObjectExpression(a);break;case e.i.UnaryExpression:this.validateUnaryExpression(a);
break;case e.i.UpdateExpression:this.validateUpdateExpression(a);break;case e.i.BinaryExpression:case e.i.LogicalExpression:this.validateBinaryAndLogicalExpression(a);break;case e.i.MemberExpression:this.validateMemberExpression(a);break;case e.i.TemplateLiteral:a.expressions.forEach(b=>this.validateExpression(b))}}validateAssignmentExpression(a){const b=this._identifierBeingAssigned,c=this._assignmentValidationMode;e.ke(a.left)&&(this._identifierBeingAssigned=a.left.name.toLowerCase(),this._assignmentValidationMode=
"left");this.validateExpression(a.left);e.ke(a.left)&&(this._assignmentValidationMode="right");this.validateExpression(a.right);this._identifierBeingAssigned=b;this._assignmentValidationMode=c}validateCallExpression(a){this.validateExpression(a.callee);if(e.ke(a.callee)){var b=a.callee.name.toLowerCase(),c=this.getIdentifierInfo(b);b=this._apiDefinitions?.functionDefinitions?.get(b);!c&&b&&(c=v(b,a.arguments.length))&&this.logDiagnostic(a.loc,c)}a.arguments.forEach(d=>this.validateExpression(d))}validateIdentifier(a){const b=
a.name.toLowerCase();var c=this.getIdentifierInfo(b);if(c)if("left"===this._assignmentValidationMode&&this._identifierBeingAssigned===b)c.initialized=!0;else{if("right"!==this._assignmentValidationMode||this._identifierBeingAssigned!==b)c.used=!0}else this.isProfileVariable(b)||this.isApiItem(b)||(this._isInFunctionScope?(c=this._undeclaredIdentifiersInFunctions.get(b),c||(c=[],this._undeclaredIdentifiersInFunctions.set(b,c)),c.push({node:a,identifier:b})):this.logDiagnostic(a.loc,{code:f.DiagnosticCodes.NotDefined,
data:{identifier:a.name}}))}validateLiteral(a){w(a.raw).forEach(b=>{if(b=this.getIdentifierInfo(b.toLowerCase()))b.used=!0})}logProfileOrApiConflict(a){var b=a.name.toLowerCase();const c=this.isProfileVariable(b);b=this.isApiItem(b);(c||b)&&this.logDiagnostic(a.loc,{code:c?f.DiagnosticCodes.ProfileVariablesConflict:f.DiagnosticCodes.ApiConflict,severity:h.DiagnosticSeverity.Warning,data:{identifier:a.name}})}logReservedKeywordsConflict(a){const b=a.name.toLowerCase();u.arcadeReservedKeywords.includes(b)&&
this.logDiagnostic(a.loc,{code:f.DiagnosticCodes.ReservedKeyword,severity:h.DiagnosticSeverity.Warning,data:{identifier:a.name}})}validateObjectExpression(a){a.properties.forEach(b=>{this.validateExpression(b.value)})}validateUnaryExpression(a){this.validateExpression(a.argument)}validateUpdateExpression(a){this.validateExpression(a.argument)}validateBinaryAndLogicalExpression(a){this.validateExpression(a.left);this.validateExpression(a.right)}validateMemberExpression(a){a=this.flattenMemberExpressionAndValidate(a);
const b=a[0].object;this.disableRecordIdentifierAssignment(this.validateExpression,b);e.ke(b)&&(this.getIdentifierInfo(b.name.toLowerCase())||this.validateMemberExpressionWithProfile(a)||this.validateConstantMemberExpression(a))}flattenMemberExpressionAndValidate(a){switch(a.type){case e.i.MemberExpression:return e.ke(a.property)&&!a.computed||this.validateExpression(a.property),[...this.flattenMemberExpressionAndValidate(a.object),a];default:return[]}}extractAndValidatePropertyName(a){switch(a.type){case "Identifier":return a.name.toLowerCase();
case "Literal":return"string"!==typeof a.value?(this.logDiagnostic(a.loc,{code:f.DiagnosticCodes.UnexpectedPropertyIdentifier}),null):a.value.toLowerCase();default:return this.logDiagnostic(a.loc,{code:f.DiagnosticCodes.UnexpectedPropertyIdentifier}),null}}validateConstantMemberExpression(a){const b=a[0];if(!e.ke(b.object))return!1;var c=b.object.name.toLowerCase();const d=this._apiDefinitions?.constantDefinitions?.get(c);if(!d)return!1;if("namespace"!==d.type)return this.logDiagnostic(b.property.loc,
{code:f.DiagnosticCodes.NotADictionary,data:{identifier:c}}),!0;const g=this.extractAndValidatePropertyName(b.property);if(!g)return!0;d.members.some(k=>k.key===g)||(c=d.members.reduce((k,l)=>`${k}${k?" | ":""}${l.completion.label.split(".").pop()}`,""),this.logDiagnostic(b.property.loc,{code:f.DiagnosticCodes.InvalidConstantIdentifier,data:{list:c}}));1<a.length&&this.logDiagnostic(a[1].property.loc,{code:f.DiagnosticCodes.UnexpectedPropertyIdentifier});return!0}validateMemberExpressionWithProfile(a){var b=
a[0];if(b.object.type!==e.i.Identifier)return!1;const c=b.object.name.toLowerCase();var d=this._profileVariables?.find(g=>g.key===c);if(!d)return!1;if(q(d))return this.logDiagnostic(b.object.loc,{code:f.DiagnosticCodes.NotADictionary,data:{identifier:d.name}}),!0;if(this._identifierBeingAssigned===c)return this.logDiagnostic(b.loc,{code:f.DiagnosticCodes.ProfileVariablesAreImmutable}),!0;for(b=0;b<a.length&&!a[b].computed;b++){if(q(d)){this.logDiagnostic(a[b-1]?.property.loc??a[b].object.loc,{code:f.DiagnosticCodes.NotADictionary,
data:{identifier:d.name}});break}const g=this.extractAndValidatePropertyName(a[b].property);if(!g)break;if(0===d.properties.length){this.logDiagnostic(a[b].property.loc,{code:f.DiagnosticCodes.UnknownPropertyIdentifier,data:{identifier:g},severity:h.DiagnosticSeverity.Warning});break}const k=d.properties.find(l=>l.name.toLowerCase()===g);if(!k){d=d.properties.reduce((l,p)=>`${l}${l?" | ":""}${p.name.split(".").pop()}`,"");this.logDiagnostic(a[b].property.loc,{code:f.DiagnosticCodes.InvalidPropertyIdentifier,
data:{list:d}});break}d=k}return!0}recordVariableIdentifier(a,b){this.logReservedKeywordsConflict(a);this.logProfileOrApiConflict(a);const c=a.name.toLowerCase();let d=this.getIdentifierInfo(c);var g=d&&!this._isInFunctionScope&&"script"===d.scope;(d&&this._isInFunctionScope&&"function"===d.scope||g)&&this.logDiagnostic(a.loc,{code:f.DiagnosticCodes.AlreadyDefined,data:{identifier:a.name},severity:h.DiagnosticSeverity.Warning});g=b.inBlock??this._isInBlock;({initialized:b}=b);!d||this._isInFunctionScope&&
"function"!==d.scope?d={node:a,used:!1,initialized:b,scope:this._isInFunctionScope?"function":g?"block":"script"}:(d.node=a,d.used=!1,d.initialized=b);"block"!==d.scope||g||(d.scope="script",this.logDiagnostic(a.loc,{code:f.DiagnosticCodes.AlreadyDefined,data:{identifier:a.name},severity:h.DiagnosticSeverity.Warning}));this.setIdentiferInfo(c,d);return!1}recordImportIdentifier(a){var b=a.specifiers[0].local;this.logProfileOrApiConflict(b);b=b.name.toLowerCase();let c=this.getIdentifierInfo(b);c?.scope&&
this.logDiagnostic(a.specifiers[0].local.loc,{code:f.DiagnosticCodes.AlreadyDefined,data:{identifier:a.specifiers[0].local.name},severity:h.DiagnosticSeverity.Warning});c={node:a.specifiers[0].local,used:!1,...c,scope:"script",initialized:!0};this.setIdentiferInfo(b,c)}recordFunctionIdentifier(a){this.logProfileOrApiConflict(a.id);const b=a.id.name.toLowerCase();let c=this.getIdentifierInfo(b);c?.scope&&this.logDiagnostic(a.id.loc,{code:f.DiagnosticCodes.AlreadyDefined,data:{identifier:a.id.name},
severity:h.DiagnosticSeverity.Warning});c={node:a.id,used:!1,...c,scope:"script",initialized:!0};this.setIdentiferInfo(b,c)}recordParamAsIdentifier(a){return this.recordVariableIdentifier(a,{initialized:!0})}diagnoseIdentifiers(){(this._functionScopeIdentifiers??this._scriptScopeIdentifiers).forEach(a=>{a.node&&(a.used?a.initialized||this.logDiagnostic(a.node.loc,{code:f.DiagnosticCodes.DefinedNeverAssigned,data:{identifier:a.node.name},severity:h.DiagnosticSeverity.Warning}):this.logDiagnostic(a.node.loc,
{code:a.initialized?f.DiagnosticCodes.AssignedNeverUsed:f.DiagnosticCodes.DefinedNeverUsed,data:{identifier:a.node.name},severity:h.DiagnosticSeverity.Warning}))})}}const x=new RegExp(/\B@\w+/g);n.ArcadeValidationService=t;n.format=r;n.isValueVariable=q;n.validateScript=function(a,b=[],c){return a?(new t(c,b)).validateScript(a):{diagnostics:[]}};Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});