npm package diff
Package: @forge/lint
Versions: 5.10.0-next.15 - 5.10.0-next.16
File: package/out/lint/linters/permission-linter/visitors/image-url-visitor.js
Index: package/out/lint/linters/permission-linter/visitors/image-url-visitor.js
===================================================================
--- package/out/lint/linters/permission-linter/visitors/image-url-visitor.js
+++ package/out/lint/linters/permission-linter/visitors/image-url-visitor.js
@@ -10,23 +10,26 @@
if (!imageUrlNode) {
return undefined;
}
if (imageUrlNode?.type === typescript_estree_1.AST_NODE_TYPES.JSXAttribute) {
- const imageUrlAttribute = imageUrlNode.value;
- if (imageUrlAttribute &&
- imageUrlAttribute.type === typescript_estree_1.AST_NODE_TYPES.Literal &&
- typeof imageUrlAttribute.value === 'string') {
- if (imageUrlAttribute.value.trim() !== '' &&
- !this.isBundledUri(imageUrlAttribute.value) &&
- this.isAbsoluteUrl(imageUrlAttribute.value)) {
- const imageUrl = {
- type: api_call_interface_1.ApiCallTypes.IMAGE,
- url: imageUrlAttribute.value,
- line: imageUrlAttribute.loc.start.line,
- column: imageUrlAttribute.loc.start.column
- };
- callback(imageUrl);
+ const imageUrlNodeAttribute = imageUrlNode.value;
+ if (!imageUrlNodeAttribute)
+ return;
+ this.addUrlToLintingList(imageUrlNodeAttribute, imageUrlNodeAttribute, callback);
+ if (imageUrlNodeAttribute.type === typescript_estree_1.AST_NODE_TYPES.JSXExpressionContainer) {
+ const imageUlrNodeAttributeExpression = imageUrlNodeAttribute.expression;
+ if (imageUlrNodeAttributeExpression.type === typescript_estree_1.AST_NODE_TYPES.ConditionalExpression) {
+ const consequentExpression = imageUlrNodeAttributeExpression.consequent;
+ this.addUrlToLintingList(consequentExpression, imageUrlNodeAttribute, callback);
+ const alternateExpression = imageUlrNodeAttributeExpression.alternate;
+ this.addUrlToLintingList(alternateExpression, imageUrlNodeAttribute, callback);
}
+ if (imageUlrNodeAttributeExpression.type === typescript_estree_1.AST_NODE_TYPES.LogicalExpression) {
+ const leftExpression = imageUlrNodeAttributeExpression.left;
+ this.addUrlToLintingList(leftExpression, imageUrlNodeAttribute, callback);
+ const rightExpression = imageUlrNodeAttributeExpression.right;
+ this.addUrlToLintingList(rightExpression, imageUrlNodeAttribute, callback);
+ }
}
}
}
getImageUrlNode(node) {
@@ -52,6 +55,20 @@
}
isAbsoluteUrl(url) {
return ImageUrlVisitor.ABSOLUTE_URL_REGEX.test(url);
}
+ addUrlToLintingList(expression, imageUrlAttribute, callback) {
+ if (expression && expression.type === typescript_estree_1.AST_NODE_TYPES.Literal && typeof expression.value === 'string') {
+ const url = expression.value;
+ if (url.trim() !== '' && !this.isBundledUri(url) && this.isAbsoluteUrl(url)) {
+ const imageUrl = {
+ type: api_call_interface_1.ApiCallTypes.IMAGE,
+ url: url,
+ line: imageUrlAttribute.loc.start.line,
+ column: imageUrlAttribute.loc.start.column
+ };
+ callback(imageUrl);
+ }
+ }
+ }
}
exports.ImageUrlVisitor = ImageUrlVisitor;