jsxpression 0.1.5 → 0.1.11
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/lib/analyze/analysis-error.js +5 -1
- package/lib/analyze/analysis-error.js.map +1 -1
- package/lib/analyze/analysis-report.js +5 -1
- package/lib/analyze/analysis-report.js.map +1 -1
- package/lib/analyze/analyze.js +9 -6
- package/lib/analyze/analyze.js.map +1 -1
- package/lib/analyze/analyze.test.d.ts +2 -0
- package/lib/analyze/analyze.test.js +314 -312
- package/lib/analyze/analyze.test.js.map +1 -1
- package/lib/analyze/data/analyze.js +10 -7
- package/lib/analyze/data/analyze.js.map +1 -1
- package/lib/analyze/data/data-access.js +24 -20
- package/lib/analyze/data/data-access.js.map +1 -1
- package/lib/analyze/data/index.js +5 -1
- package/lib/analyze/data/index.js.map +1 -1
- package/lib/analyze/data/method-calls.js +20 -17
- package/lib/analyze/data/method-calls.js.map +1 -1
- package/lib/analyze/data/utils.js +29 -22
- package/lib/analyze/data/utils.js.map +1 -1
- package/lib/analyze/index.js +9 -3
- package/lib/analyze/index.js.map +1 -1
- package/lib/analyze/jsx/analyze.js +11 -8
- package/lib/analyze/jsx/analyze.js.map +1 -1
- package/lib/analyze/jsx/element-attributes.js +24 -21
- package/lib/analyze/jsx/element-attributes.js.map +1 -1
- package/lib/analyze/jsx/element-children.js +23 -20
- package/lib/analyze/jsx/element-children.js.map +1 -1
- package/lib/analyze/jsx/element-tags.js +15 -12
- package/lib/analyze/jsx/element-tags.js.map +1 -1
- package/lib/analyze/jsx/index.js +5 -1
- package/lib/analyze/jsx/index.js.map +1 -1
- package/lib/analyze/security/analyze.js +13 -10
- package/lib/analyze/security/analyze.js.map +1 -1
- package/lib/analyze/security/call-expressions.js +11 -8
- package/lib/analyze/security/call-expressions.js.map +1 -1
- package/lib/analyze/security/declarations.js +15 -12
- package/lib/analyze/security/declarations.js.map +1 -1
- package/lib/analyze/security/expressions.js +17 -14
- package/lib/analyze/security/expressions.js.map +1 -1
- package/lib/analyze/security/identifiers.js +13 -10
- package/lib/analyze/security/identifiers.js.map +1 -1
- package/lib/analyze/security/index.js +5 -1
- package/lib/analyze/security/index.js.map +1 -1
- package/lib/analyze/security/member-access.js +10 -7
- package/lib/analyze/security/member-access.js.map +1 -1
- package/lib/analyze/utils.d.ts +20 -0
- package/lib/analyze/utils.js +10 -4
- package/lib/analyze/utils.js.map +1 -1
- package/lib/analyze/validation-context.d.ts +13 -0
- package/lib/analyze/validation-context.js +5 -1
- package/lib/analyze/validation-context.js.map +1 -1
- package/lib/builtins.js +20 -9
- package/lib/builtins.js.map +1 -1
- package/lib/codegen/builtins/builtin-types.js +6 -3
- package/lib/codegen/builtins/builtin-types.js.map +1 -1
- package/lib/codegen/builtins/index.js +5 -1
- package/lib/codegen/builtins/index.js.map +1 -1
- package/lib/codegen/generate-typescript-definitions.js +7 -4
- package/lib/codegen/generate-typescript-definitions.js.map +1 -1
- package/lib/codegen/generate-typescript-definitions.test.js +192 -190
- package/lib/codegen/generate-typescript-definitions.test.js.map +1 -1
- package/lib/codegen/index.js +5 -1
- package/lib/codegen/index.js.map +1 -1
- package/lib/codegen/schema/component-types.js +6 -3
- package/lib/codegen/schema/component-types.js.map +1 -1
- package/lib/codegen/schema/data-types.js +6 -3
- package/lib/codegen/schema/data-types.js.map +1 -1
- package/lib/codegen/schema/index.js +7 -2
- package/lib/codegen/schema/index.js.map +1 -1
- package/lib/codegen/schema/utils.js +8 -3
- package/lib/codegen/schema/utils.js.map +1 -1
- package/lib/compile/compilation-error.d.ts +17 -0
- package/lib/compile/compilation-error.js +5 -1
- package/lib/compile/compilation-error.js.map +1 -1
- package/lib/compile/compile.js +21 -18
- package/lib/compile/compile.js.map +1 -1
- package/lib/compile/compile.test.d.ts +2 -0
- package/lib/compile/compile.test.js +112 -110
- package/lib/compile/compile.test.js.map +1 -1
- package/lib/compile/index.js +7 -2
- package/lib/compile/index.js.map +1 -1
- package/lib/evaluate/evaluate.d.ts +2 -1
- package/lib/evaluate/evaluate.d.ts.map +1 -1
- package/lib/evaluate/evaluate.js +17 -12
- package/lib/evaluate/evaluate.js.map +1 -1
- package/lib/evaluate/evaluate.test.d.ts +2 -0
- package/lib/evaluate/evaluate.test.js +86 -74
- package/lib/evaluate/evaluate.test.js.map +1 -1
- package/lib/evaluate/evaluation-error.js +5 -1
- package/lib/evaluate/evaluation-error.js.map +1 -1
- package/lib/evaluate/index.js +7 -2
- package/lib/evaluate/index.js.map +1 -1
- package/lib/index.js +15 -6
- package/lib/index.js.map +1 -1
- package/lib/jsx.js +22 -10
- package/lib/jsx.js.map +1 -1
- package/lib/parse/index.js +7 -2
- package/lib/parse/index.js.map +1 -1
- package/lib/parse/parse-error.d.ts +10 -0
- package/lib/parse/parse-error.js +5 -1
- package/lib/parse/parse-error.js.map +1 -1
- package/lib/parse/parse.js +13 -7
- package/lib/parse/parse.js.map +1 -1
- package/lib/parse/parse.test.d.ts +2 -0
- package/lib/parse/parse.test.js +58 -56
- package/lib/parse/parse.test.js.map +1 -1
- package/lib/render.js +12 -9
- package/lib/render.js.map +1 -1
- package/lib/render.test.d.ts +2 -0
- package/lib/render.test.js +64 -62
- package/lib/render.test.js.map +1 -1
- package/lib/schema.js +38 -18
- package/lib/schema.js.map +1 -1
- package/lib/traverse.js +11 -8
- package/lib/traverse.js.map +1 -1
- package/lib/traverse.test.d.ts +2 -0
- package/lib/traverse.test.js +36 -34
- package/lib/traverse.test.js.map +1 -1
- package/lib/types.d.ts +12 -0
- package/lib/types.js +2 -1
- package/lib/validate.js +10 -7
- package/lib/validate.js.map +1 -1
- package/package.json +7 -7
- package/src/evaluate/evaluate.test.ts +39 -25
- package/src/evaluate/evaluate.ts +11 -8
- package/src/render.ts +1 -1
- package/lib/codegen/builtin-types.d.ts +0 -11
- package/lib/codegen/builtin-types.d.ts.map +0 -1
- package/lib/codegen/builtin-types.js +0 -151
- package/lib/codegen/builtin-types.js.map +0 -1
- package/lib/codegen/declare-types.d.ts +0 -20
- package/lib/codegen/declare-types.d.ts.map +0 -1
- package/lib/codegen/declare-types.js +0 -299
- package/lib/codegen/declare-types.js.map +0 -1
- package/lib/codegen/schema-to-types.d.ts +0 -14
- package/lib/codegen/schema-to-types.d.ts.map +0 -1
- package/lib/codegen/schema-to-types.js +0 -203
- package/lib/codegen/schema-to-types.js.map +0 -1
package/lib/analyze/index.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AnalysisReport = exports.AnalysisError = exports.analyze = void 0;
|
|
4
|
+
var analyze_js_1 = require("./analyze.js");
|
|
5
|
+
Object.defineProperty(exports, "analyze", { enumerable: true, get: function () { return analyze_js_1.analyze; } });
|
|
6
|
+
var analysis_error_js_1 = require("./analysis-error.js");
|
|
7
|
+
Object.defineProperty(exports, "AnalysisError", { enumerable: true, get: function () { return analysis_error_js_1.AnalysisError; } });
|
|
8
|
+
var analysis_report_js_1 = require("./analysis-report.js");
|
|
9
|
+
Object.defineProperty(exports, "AnalysisReport", { enumerable: true, get: function () { return analysis_report_js_1.AnalysisReport; } });
|
|
4
10
|
//# sourceMappingURL=index.js.map
|
package/lib/analyze/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyze/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analyze/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAChB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AACtB,2DAAsD;AAA7C,oHAAA,cAAc,OAAA"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeJsx = analyzeJsx;
|
|
4
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
5
|
+
const validation_context_js_1 = require("../validation-context.js");
|
|
6
|
+
const element_attributes_js_1 = require("./element-attributes.js");
|
|
7
|
+
const element_children_js_1 = require("./element-children.js");
|
|
8
|
+
const element_tags_js_1 = require("./element-tags.js");
|
|
9
|
+
function analyzeJsx(ast, schema) {
|
|
10
|
+
const validationContext = new validation_context_js_1.ValidationContext();
|
|
11
|
+
return new analysis_report_js_1.AnalysisReport().merge((0, element_tags_js_1.analyzeElementTags)(ast, schema, validationContext), (0, element_attributes_js_1.analyzeElementAttributes)(ast, schema, validationContext), (0, element_children_js_1.analyzeElementChildren)(ast, schema, validationContext));
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=analyze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/analyze/jsx/analyze.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/analyze/jsx/analyze.ts"],"names":[],"mappings":";;AAQA,gCAQC;AAdD,8DAAuD;AACvD,oEAA6D;AAC7D,mEAAmE;AACnE,+DAA+D;AAC/D,uDAAuD;AAEvD,SAAgB,UAAU,CAAC,GAAY,EAAE,MAAc;IACrD,MAAM,iBAAiB,GAAG,IAAI,yCAAiB,EAAE,CAAC;IAElD,OAAO,IAAI,mCAAc,EAAE,CAAC,KAAK,CAC/B,IAAA,oCAAkB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAClD,IAAA,gDAAwB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EACxD,IAAA,4CAAsB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CACvD,CAAC;AACJ,CAAC"}
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeElementAttributes = analyzeElementAttributes;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const schema_js_1 = require("../../schema.js");
|
|
6
|
+
const jsx_js_1 = require("../../jsx.js");
|
|
7
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
8
|
+
const utils_js_1 = require("../utils.js");
|
|
9
|
+
function analyzeElementAttributes(ast, schema, validationContext) {
|
|
10
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
11
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
9
12
|
JSXElement(node) {
|
|
10
13
|
const tagName = node.openingElement.name.name;
|
|
11
14
|
validationContext.enterElement(tagName);
|
|
12
15
|
const currentContext = validationContext.getSnapshot();
|
|
13
|
-
const allowedAttributes = getAllowedAttributes(schema, tagName);
|
|
14
|
-
const requiredAttributes = getRequiredAttributes(schema, tagName);
|
|
16
|
+
const allowedAttributes = (0, schema_js_1.getAllowedAttributes)(schema, tagName);
|
|
17
|
+
const requiredAttributes = (0, schema_js_1.getRequiredAttributes)(schema, tagName);
|
|
15
18
|
for (const attribute of node.openingElement.attributes) {
|
|
16
|
-
if (!isJsxAttribute(attribute)) {
|
|
19
|
+
if (!(0, jsx_js_1.isJsxAttribute)(attribute)) {
|
|
17
20
|
continue;
|
|
18
21
|
}
|
|
19
22
|
const attributeName = attribute.name.name;
|
|
20
|
-
const range = getNodeRange(attribute);
|
|
21
|
-
if (!isAttributeAllowed(schema, tagName, attributeName)) {
|
|
22
|
-
const suggestions = getAttributeSimilarityMatchers(attributeName, allowedAttributes);
|
|
23
|
-
const suggestionMatch = getBestSimilarityMatcherSuggestion(attributeName, allowedAttributes);
|
|
23
|
+
const range = (0, utils_js_1.getNodeRange)(attribute);
|
|
24
|
+
if (!(0, schema_js_1.isAttributeAllowed)(schema, tagName, attributeName)) {
|
|
25
|
+
const suggestions = (0, utils_js_1.getAttributeSimilarityMatchers)(attributeName, allowedAttributes);
|
|
26
|
+
const suggestionMatch = (0, utils_js_1.getBestSimilarityMatcherSuggestion)(attributeName, allowedAttributes);
|
|
24
27
|
let message = `Attribute "${attributeName}" not allowed on <${tagName}>`;
|
|
25
28
|
if (suggestionMatch) {
|
|
26
29
|
message += `. Did you mean "${suggestionMatch}"?`;
|
|
@@ -35,13 +38,13 @@ export function analyzeElementAttributes(ast, schema, validationContext) {
|
|
|
35
38
|
analysisReport.addIssue("INVALID_ATTRIBUTE", message, range, currentContext, suggestions.map((suggestion) => suggestion.suggestion));
|
|
36
39
|
continue;
|
|
37
40
|
}
|
|
38
|
-
const attributeSchema = getAttributeSchema(schema, tagName, attributeName);
|
|
39
|
-
const enumValues = attributeSchema ? getEnumValues(attributeSchema) : undefined;
|
|
41
|
+
const attributeSchema = (0, schema_js_1.getAttributeSchema)(schema, tagName, attributeName);
|
|
42
|
+
const enumValues = attributeSchema ? (0, schema_js_1.getEnumValues)(attributeSchema) : undefined;
|
|
40
43
|
if (enumValues && enumValues.length > 0) {
|
|
41
44
|
const literalValue = getAttributeLiteralValue(attribute);
|
|
42
45
|
if (isEnumComparableValue(literalValue) && !enumValues.includes(literalValue)) {
|
|
43
46
|
const stringEnumValues = enumValues.map((value) => String(value));
|
|
44
|
-
const suggestionMatch = getBestSimilarityMatcherSuggestion(String(literalValue), stringEnumValues);
|
|
47
|
+
const suggestionMatch = (0, utils_js_1.getBestSimilarityMatcherSuggestion)(String(literalValue), stringEnumValues);
|
|
45
48
|
let message = `Value ${JSON.stringify(literalValue)} is not allowed for attribute "${attributeName}" on <${tagName}>`;
|
|
46
49
|
if (suggestionMatch) {
|
|
47
50
|
message += `. Did you mean "${suggestionMatch}"?`;
|
|
@@ -54,10 +57,10 @@ export function analyzeElementAttributes(ast, schema, validationContext) {
|
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
// Check for missing required attributes
|
|
57
|
-
const providedAttributes = node.openingElement.attributes.filter(isJsxAttribute).map((attr) => attr.name.name);
|
|
60
|
+
const providedAttributes = node.openingElement.attributes.filter(jsx_js_1.isJsxAttribute).map((attr) => attr.name.name);
|
|
58
61
|
for (const requiredAttribute of requiredAttributes) {
|
|
59
62
|
if (!providedAttributes.includes(requiredAttribute)) {
|
|
60
|
-
analysisReport.addIssue("MISSING_REQUIRED_ATTRIBUTE", `Required attribute "${requiredAttribute}" missing on <${tagName}>`, getNodeRange(node.openingElement), currentContext, [requiredAttribute]);
|
|
63
|
+
analysisReport.addIssue("MISSING_REQUIRED_ATTRIBUTE", `Required attribute "${requiredAttribute}" missing on <${tagName}>`, (0, utils_js_1.getNodeRange)(node.openingElement), currentContext, [requiredAttribute]);
|
|
61
64
|
}
|
|
62
65
|
}
|
|
63
66
|
validationContext.exitElement();
|
|
@@ -75,7 +78,7 @@ function getAttributeLiteralValue(attribute) {
|
|
|
75
78
|
if (attribute.value.type === "Literal") {
|
|
76
79
|
return attribute.value.value;
|
|
77
80
|
}
|
|
78
|
-
if (isJsxExpressionContainer(attribute.value)) {
|
|
81
|
+
if ((0, jsx_js_1.isJsxExpressionContainer)(attribute.value)) {
|
|
79
82
|
const expression = attribute.value.expression;
|
|
80
83
|
if (expression?.type === "Literal") {
|
|
81
84
|
return expression.value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-attributes.js","sourceRoot":"","sources":["../../../src/analyze/jsx/element-attributes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"element-attributes.js","sourceRoot":"","sources":["../../../src/analyze/jsx/element-attributes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeElementChildren = analyzeElementChildren;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const schema_js_1 = require("../../schema.js");
|
|
6
|
+
const jsx_js_1 = require("../../jsx.js");
|
|
7
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
8
|
+
const utils_js_1 = require("../utils.js");
|
|
9
|
+
function analyzeElementChildren(ast, schema, validationContext) {
|
|
10
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
11
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
9
12
|
JSXElement(node) {
|
|
10
13
|
const parentTag = node.openingElement.name.name;
|
|
11
14
|
validationContext.enterElement(parentTag);
|
|
12
15
|
const currentContext = validationContext.getSnapshot();
|
|
13
|
-
const allowedChildren = getAllowedChildren(schema, parentTag);
|
|
16
|
+
const allowedChildren = (0, schema_js_1.getAllowedChildren)(schema, parentTag);
|
|
14
17
|
if (!allowedChildren) {
|
|
15
18
|
validationContext.exitElement();
|
|
16
19
|
return;
|
|
17
20
|
}
|
|
18
|
-
if (isSelfClosing(schema, parentTag) && node.children.length > 0) {
|
|
21
|
+
if ((0, schema_js_1.isSelfClosing)(schema, parentTag) && node.children.length > 0) {
|
|
19
22
|
const hasNonWhitespaceContent = node.children.some((child) => {
|
|
20
|
-
if (isJsxText(child)) {
|
|
23
|
+
if ((0, jsx_js_1.isJsxText)(child)) {
|
|
21
24
|
return child.value.trim().length > 0;
|
|
22
25
|
}
|
|
23
|
-
return !isJsxLeafNode(child) || !isJsxText(child);
|
|
26
|
+
return !(0, jsx_js_1.isJsxLeafNode)(child) || !(0, jsx_js_1.isJsxText)(child);
|
|
24
27
|
});
|
|
25
28
|
if (hasNonWhitespaceContent) {
|
|
26
29
|
const firstMeaningfulChild = node.children.find((child) => {
|
|
27
|
-
if (isJsxText(child)) {
|
|
30
|
+
if ((0, jsx_js_1.isJsxText)(child)) {
|
|
28
31
|
return child.value.trim().length > 0;
|
|
29
32
|
}
|
|
30
33
|
return true;
|
|
31
34
|
});
|
|
32
|
-
analysisReport.addIssue("SELF_CLOSING_WITH_CHILDREN", `Element <${parentTag}> cannot have children. It is self-closing.`, getNodeRange(firstMeaningfulChild || node.children[0]), currentContext);
|
|
35
|
+
analysisReport.addIssue("SELF_CLOSING_WITH_CHILDREN", `Element <${parentTag}> cannot have children. It is self-closing.`, (0, utils_js_1.getNodeRange)(firstMeaningfulChild || node.children[0]), currentContext);
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
for (const child of node.children) {
|
|
36
|
-
if (isJsxElement(child)) {
|
|
39
|
+
if ((0, jsx_js_1.isJsxElement)(child)) {
|
|
37
40
|
const childTag = child.openingElement.name.name;
|
|
38
41
|
if (!allowedChildren.includes(childTag)) {
|
|
39
|
-
const elementSimilarityMatchers = getElementSimilarityMatchers(childTag, allowedChildren);
|
|
40
|
-
const bestSimilarityMatcherSuggestion = getBestSimilarityMatcherSuggestion(childTag, allowedChildren);
|
|
42
|
+
const elementSimilarityMatchers = (0, utils_js_1.getElementSimilarityMatchers)(childTag, allowedChildren);
|
|
43
|
+
const bestSimilarityMatcherSuggestion = (0, utils_js_1.getBestSimilarityMatcherSuggestion)(childTag, allowedChildren);
|
|
41
44
|
let message = `Element <${childTag}> not allowed in <${parentTag}>`;
|
|
42
45
|
if (bestSimilarityMatcherSuggestion) {
|
|
43
46
|
message += `. Did you mean <${bestSimilarityMatcherSuggestion}>?`;
|
|
44
47
|
}
|
|
45
48
|
message += `. Allowed children: ${allowedChildren.join(", ")}`;
|
|
46
|
-
analysisReport.addIssue("INVALID_CHILD_ELEMENT", message, getNodeRange(child), currentContext, elementSimilarityMatchers.map((similarityMatcher) => similarityMatcher.suggestion));
|
|
49
|
+
analysisReport.addIssue("INVALID_CHILD_ELEMENT", message, (0, utils_js_1.getNodeRange)(child), currentContext, elementSimilarityMatchers.map((similarityMatcher) => similarityMatcher.suggestion));
|
|
47
50
|
}
|
|
48
51
|
}
|
|
49
|
-
else if (isJsxFragment(child)) {
|
|
52
|
+
else if ((0, jsx_js_1.isJsxFragment)(child)) {
|
|
50
53
|
// TODO: Recursively validate fragment children
|
|
51
54
|
// For now, we allow fragments but should add more specific validation in the future
|
|
52
55
|
}
|
|
53
|
-
else if (isJsxText(child)) {
|
|
56
|
+
else if ((0, jsx_js_1.isJsxText)(child)) {
|
|
54
57
|
const hasContent = child.value.trim().length > 0;
|
|
55
58
|
if (!hasContent) {
|
|
56
59
|
// Allow whitespace-only text nodes (very common in JSX formatting)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-children.js","sourceRoot":"","sources":["../../../src/analyze/jsx/element-children.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"element-children.js","sourceRoot":"","sources":["../../../src/analyze/jsx/element-children.ts"],"names":[],"mappings":";;AAQA,wDAwFC;AA/FD,mDAA6C;AAC7C,+CAAiF;AACjF,yCAAqF;AAErF,8DAAuD;AACvD,0CAA6G;AAE7G,SAAgB,sBAAsB,CACpC,GAAY,EACZ,MAAc,EACd,iBAAoC;IAEpC,MAAM,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;IAE5C,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,UAAU,CAAC,IAAI;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAEhD,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAE1C,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC;YAEvD,MAAM,eAAe,GAAG,IAAA,8BAAkB,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAE9D,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,IAAI,IAAA,yBAAa,EAAC,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjE,MAAM,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC3D,IAAI,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;wBACrB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;oBACvC,CAAC;oBACD,OAAO,CAAC,IAAA,sBAAa,EAAC,KAAK,CAAC,IAAI,CAAC,IAAA,kBAAS,EAAC,KAAK,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;gBAEH,IAAI,uBAAuB,EAAE,CAAC;oBAC5B,MAAM,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;wBACxD,IAAI,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;4BACrB,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;wBACvC,CAAC;wBACD,OAAO,IAAI,CAAC;oBACd,CAAC,CAAC,CAAC;oBAEH,cAAc,CAAC,QAAQ,CACrB,4BAA4B,EAC5B,YAAY,SAAS,6CAA6C,EAClE,IAAA,uBAAY,EAAC,oBAAoB,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EACtD,cAAc,CACf,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClC,IAAI,IAAA,qBAAY,EAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;oBAEhD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACxC,MAAM,yBAAyB,GAAG,IAAA,uCAA4B,EAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;wBAC1F,MAAM,+BAA+B,GAAG,IAAA,6CAAkC,EAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;wBAEtG,IAAI,OAAO,GAAG,YAAY,QAAQ,qBAAqB,SAAS,GAAG,CAAC;wBAEpE,IAAI,+BAA+B,EAAE,CAAC;4BACpC,OAAO,IAAI,mBAAmB,+BAA+B,IAAI,CAAC;wBACpE,CAAC;wBAED,OAAO,IAAI,uBAAuB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAE/D,cAAc,CAAC,QAAQ,CACrB,uBAAuB,EACvB,OAAO,EACP,IAAA,uBAAY,EAAC,KAAK,CAAC,EACnB,cAAc,EACd,yBAAyB,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CACnF,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAA,sBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;oBAChC,+CAA+C;oBAC/C,oFAAoF;gBACtF,CAAC;qBAAM,IAAI,IAAA,kBAAS,EAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;oBACjD,IAAI,CAAC,UAAU,EAAE,CAAC;wBAChB,mEAAmE;wBACnE,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeElementTags = analyzeElementTags;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const schema_js_1 = require("../../schema.js");
|
|
6
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
7
|
+
const utils_js_1 = require("../utils.js");
|
|
8
|
+
function analyzeElementTags(ast, schema, validationContext) {
|
|
9
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
10
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
8
11
|
JSXElement(node) {
|
|
9
12
|
const tagName = node.openingElement.name.name;
|
|
10
13
|
validationContext.enterElement(tagName);
|
|
11
14
|
const snapshot = validationContext.getSnapshot();
|
|
12
|
-
const range = getNodeRange(node);
|
|
13
|
-
if (!isElementAllowed(schema, tagName)) {
|
|
14
|
-
const availableElements = getAllElements(schema);
|
|
15
|
-
const elementSimilarityMatchers = getElementSimilarityMatchers(tagName, availableElements);
|
|
16
|
-
const bestSuggestionMatch = getBestSimilarityMatcherSuggestion(tagName, availableElements);
|
|
15
|
+
const range = (0, utils_js_1.getNodeRange)(node);
|
|
16
|
+
if (!(0, schema_js_1.isElementAllowed)(schema, tagName)) {
|
|
17
|
+
const availableElements = (0, schema_js_1.getAllElements)(schema);
|
|
18
|
+
const elementSimilarityMatchers = (0, utils_js_1.getElementSimilarityMatchers)(tagName, availableElements);
|
|
19
|
+
const bestSuggestionMatch = (0, utils_js_1.getBestSimilarityMatcherSuggestion)(tagName, availableElements);
|
|
17
20
|
let message = `Element <${tagName}> not allowed`;
|
|
18
21
|
if (snapshot.elements.length > 1) {
|
|
19
22
|
message += ` in ${validationContext.currentPath}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element-tags.js","sourceRoot":"","sources":["../../../src/analyze/jsx/element-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"element-tags.js","sourceRoot":"","sources":["../../../src/analyze/jsx/element-tags.ts"],"names":[],"mappings":";;AAOA,gDA+CC;AArDD,mDAA6C;AAC7C,+CAAgF;AAEhF,8DAAuD;AACvD,0CAA6G;AAE7G,SAAgB,kBAAkB,CAAC,GAAY,EAAE,MAAc,EAAE,iBAAoC;IACnG,MAAM,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;IAE5C,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,UAAU,CAAC,IAAI;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YAE9C,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC;YAEjC,IAAI,CAAC,IAAA,4BAAgB,EAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;gBACvC,MAAM,iBAAiB,GAAG,IAAA,0BAAc,EAAC,MAAM,CAAC,CAAC;gBACjD,MAAM,yBAAyB,GAAG,IAAA,uCAA4B,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBAC3F,MAAM,mBAAmB,GAAG,IAAA,6CAAkC,EAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBAE3F,IAAI,OAAO,GAAG,YAAY,OAAO,eAAe,CAAC;gBAEjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,OAAO,IAAI,OAAO,iBAAiB,CAAC,WAAW,EAAE,CAAC;gBACpD,CAAC;gBAED,IAAI,mBAAmB,EAAE,CAAC;oBACxB,OAAO,IAAI,mBAAmB,mBAAmB,IAAI,CAAC;gBACxD,CAAC;qBAAM,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,eAAe,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBACtD,OAAO,IAAI,yBAAyB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjE,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACjC,OAAO,IAAI,SAAS,iBAAiB,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC;oBAC3D,CAAC;gBACH,CAAC;gBAED,cAAc,CAAC,QAAQ,CACrB,iBAAiB,EACjB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,yBAAyB,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CACnF,CAAC;YACJ,CAAC;YAED,iBAAiB,CAAC,WAAW,EAAE,CAAC;QAClC,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
package/lib/analyze/jsx/index.js
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeJsx = void 0;
|
|
4
|
+
var analyze_js_1 = require("./analyze.js");
|
|
5
|
+
Object.defineProperty(exports, "analyzeJsx", { enumerable: true, get: function () { return analyze_js_1.analyzeJsx; } });
|
|
2
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyze/jsx/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyze/jsx/index.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeSecurity = analyzeSecurity;
|
|
4
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
5
|
+
const validation_context_js_1 = require("../validation-context.js");
|
|
6
|
+
const call_expressions_js_1 = require("./call-expressions.js");
|
|
7
|
+
const declarations_js_1 = require("./declarations.js");
|
|
8
|
+
const expressions_js_1 = require("./expressions.js");
|
|
9
|
+
const identifiers_js_1 = require("./identifiers.js");
|
|
10
|
+
const member_access_js_1 = require("./member-access.js");
|
|
11
|
+
function analyzeSecurity(ast, schema) {
|
|
12
|
+
const validationContext = new validation_context_js_1.ValidationContext();
|
|
13
|
+
return new analysis_report_js_1.AnalysisReport().merge((0, declarations_js_1.analyzeDeclarations)(ast, schema, validationContext), (0, identifiers_js_1.analyzeIdentifiers)(ast, schema, validationContext), (0, expressions_js_1.analyzeExpressions)(ast, schema, validationContext), (0, member_access_js_1.analyzeMemberAccess)(ast, schema, validationContext), (0, call_expressions_js_1.analyzeCallExpressions)(ast, schema, validationContext));
|
|
11
14
|
}
|
|
12
15
|
//# sourceMappingURL=analyze.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/analyze/security/analyze.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/analyze/security/analyze.ts"],"names":[],"mappings":";;AAUA,0CAUC;AAlBD,8DAAuD;AACvD,oEAA6D;AAC7D,+DAA+D;AAC/D,uDAAwD;AACxD,qDAAsD;AACtD,qDAAsD;AACtD,yDAAyD;AAEzD,SAAgB,eAAe,CAAC,GAAY,EAAE,MAAc;IAC1D,MAAM,iBAAiB,GAAG,IAAI,yCAAiB,EAAE,CAAC;IAElD,OAAO,IAAI,mCAAc,EAAE,CAAC,KAAK,CAC/B,IAAA,qCAAmB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EACnD,IAAA,mCAAkB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAClD,IAAA,mCAAkB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAClD,IAAA,sCAAmB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,EACnD,IAAA,4CAAsB,EAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CACvD,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeCallExpressions = analyzeCallExpressions;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
6
|
+
const utils_js_1 = require("../utils.js");
|
|
7
|
+
function analyzeCallExpressions(ast, _schema, validationContext) {
|
|
8
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
9
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
7
10
|
CallExpression(node) {
|
|
8
11
|
const { callee } = node;
|
|
9
12
|
if (callee.type !== "MemberExpression") {
|
|
10
|
-
analysisReport.addIssue("DIRECT_CALL_NOT_ALLOWED", "only member calls allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
13
|
+
analysisReport.addIssue("DIRECT_CALL_NOT_ALLOWED", "only member calls allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
11
14
|
return;
|
|
12
15
|
}
|
|
13
16
|
if (callee.property.type !== "Identifier" || callee.computed) {
|
|
14
|
-
analysisReport.addIssue("DYNAMIC_METHOD_NOT_ALLOWED", "only explicitly allowed methods are permitted", getNodeRange(callee), validationContext.getSnapshot());
|
|
17
|
+
analysisReport.addIssue("DYNAMIC_METHOD_NOT_ALLOWED", "only explicitly allowed methods are permitted", (0, utils_js_1.getNodeRange)(callee), validationContext.getSnapshot());
|
|
15
18
|
}
|
|
16
19
|
},
|
|
17
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-expressions.js","sourceRoot":"","sources":["../../../src/analyze/security/call-expressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"call-expressions.js","sourceRoot":"","sources":["../../../src/analyze/security/call-expressions.ts"],"names":[],"mappings":";;AAOA,wDAiCC;AAvCD,mDAA6C;AAG7C,8DAAuD;AACvD,0CAA2C;AAE3C,SAAgB,sBAAsB,CACpC,GAAY,EACZ,OAAe,EACf,iBAAoC;IAEpC,MAAM,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;IAE5C,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,cAAc,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YAExB,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACvC,cAAc,CAAC,QAAQ,CACrB,yBAAyB,EACzB,2BAA2B,EAC3B,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;gBACF,OAAO;YACT,CAAC;YAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC7D,cAAc,CAAC,QAAQ,CACrB,4BAA4B,EAC5B,+CAA+C,EAC/C,IAAA,uBAAY,EAAC,MAAM,CAAC,EACpB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,26 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeDeclarations = analyzeDeclarations;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
6
|
+
const utils_js_1 = require("../utils.js");
|
|
7
|
+
function analyzeDeclarations(ast, _schema, validationContext) {
|
|
8
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
9
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
7
10
|
ImportDeclaration(node) {
|
|
8
|
-
analysisReport.addIssue("IMPORT_NOT_ALLOWED", "import not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
11
|
+
analysisReport.addIssue("IMPORT_NOT_ALLOWED", "import not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
9
12
|
},
|
|
10
13
|
ExportNamedDeclaration(node) {
|
|
11
|
-
analysisReport.addIssue("EXPORT_NOT_ALLOWED", "export not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
14
|
+
analysisReport.addIssue("EXPORT_NOT_ALLOWED", "export not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
12
15
|
},
|
|
13
16
|
ExportDefaultDeclaration(node) {
|
|
14
|
-
analysisReport.addIssue("EXPORT_NOT_ALLOWED", "export not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
17
|
+
analysisReport.addIssue("EXPORT_NOT_ALLOWED", "export not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
15
18
|
},
|
|
16
19
|
FunctionDeclaration(node) {
|
|
17
|
-
analysisReport.addIssue("FUNCTION_NOT_ALLOWED", "function declarations not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
20
|
+
analysisReport.addIssue("FUNCTION_NOT_ALLOWED", "function declarations not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
18
21
|
},
|
|
19
22
|
ClassDeclaration(node) {
|
|
20
|
-
analysisReport.addIssue("CLASS_NOT_ALLOWED", "classes not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
23
|
+
analysisReport.addIssue("CLASS_NOT_ALLOWED", "classes not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
21
24
|
},
|
|
22
25
|
VariableDeclaration(node) {
|
|
23
|
-
analysisReport.addIssue("VARIABLE_NOT_ALLOWED", "variables not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
26
|
+
analysisReport.addIssue("VARIABLE_NOT_ALLOWED", "variables not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
24
27
|
},
|
|
25
28
|
});
|
|
26
29
|
return analysisReport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/analyze/security/declarations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/analyze/security/declarations.ts"],"names":[],"mappings":";;AAOA,kDA2DC;AAjED,mDAA6C;AAG7C,8DAAuD;AACvD,0CAA2C;AAE3C,SAAgB,mBAAmB,CACjC,GAAY,EACZ,OAAe,EACf,iBAAoC;IAEpC,MAAM,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;IAE5C,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,iBAAiB,CAAC,IAAI;YACpB,cAAc,CAAC,QAAQ,CACrB,oBAAoB,EACpB,oBAAoB,EACpB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,sBAAsB,CAAC,IAAI;YACzB,cAAc,CAAC,QAAQ,CACrB,oBAAoB,EACpB,oBAAoB,EACpB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,wBAAwB,CAAC,IAAI;YAC3B,cAAc,CAAC,QAAQ,CACrB,oBAAoB,EACpB,oBAAoB,EACpB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,IAAI;YACtB,cAAc,CAAC,QAAQ,CACrB,sBAAsB,EACtB,mCAAmC,EACnC,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,gBAAgB,CAAC,IAAI;YACnB,cAAc,CAAC,QAAQ,CACrB,mBAAmB,EACnB,qBAAqB,EACrB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,mBAAmB,CAAC,IAAI;YACtB,cAAc,CAAC,QAAQ,CACrB,sBAAsB,EACtB,uBAAuB,EACvB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,33 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeExpressions = analyzeExpressions;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
6
|
+
const utils_js_1 = require("../utils.js");
|
|
7
|
+
function analyzeExpressions(ast, _schema, validationContext) {
|
|
8
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
9
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
7
10
|
NewExpression(node) {
|
|
8
|
-
analysisReport.addIssue("NEW_NOT_ALLOWED", "new not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
11
|
+
analysisReport.addIssue("NEW_NOT_ALLOWED", "new not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
9
12
|
},
|
|
10
13
|
ThisExpression(node) {
|
|
11
|
-
analysisReport.addIssue("THIS_NOT_ALLOWED", "this not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
14
|
+
analysisReport.addIssue("THIS_NOT_ALLOWED", "this not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
12
15
|
},
|
|
13
16
|
WithStatement(node) {
|
|
14
|
-
analysisReport.addIssue("WITH_NOT_ALLOWED", "with not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
17
|
+
analysisReport.addIssue("WITH_NOT_ALLOWED", "with not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
15
18
|
},
|
|
16
19
|
AwaitExpression(node) {
|
|
17
|
-
analysisReport.addIssue("AWAIT_NOT_ALLOWED", "await not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
20
|
+
analysisReport.addIssue("AWAIT_NOT_ALLOWED", "await not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
18
21
|
},
|
|
19
22
|
YieldExpression(node) {
|
|
20
|
-
analysisReport.addIssue("YIELD_NOT_ALLOWED", "yield not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
23
|
+
analysisReport.addIssue("YIELD_NOT_ALLOWED", "yield not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
21
24
|
},
|
|
22
25
|
ArrowFunctionExpression(node) {
|
|
23
26
|
if (node.body.type === "BlockStatement") {
|
|
24
|
-
analysisReport.addIssue("ARROW_FUNCTION_BLOCK_BODY_NOT_ALLOWED", "arrow functions with block body not allowed", getNodeRange(node), validationContext.getSnapshot());
|
|
27
|
+
analysisReport.addIssue("ARROW_FUNCTION_BLOCK_BODY_NOT_ALLOWED", "arrow functions with block body not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot());
|
|
25
28
|
}
|
|
26
29
|
},
|
|
27
30
|
ObjectExpression(node) {
|
|
28
31
|
for (const property of node.properties) {
|
|
29
32
|
if (property.type === "Property" && property.computed) {
|
|
30
|
-
analysisReport.addIssue("COMPUTED_PROPERTY_NOT_ALLOWED", "computed object properties not allowed", getNodeRange(property), validationContext.getSnapshot());
|
|
33
|
+
analysisReport.addIssue("COMPUTED_PROPERTY_NOT_ALLOWED", "computed object properties not allowed", (0, utils_js_1.getNodeRange)(property), validationContext.getSnapshot());
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
},
|
|
@@ -37,7 +40,7 @@ export function analyzeExpressions(ast, _schema, validationContext) {
|
|
|
37
40
|
if (node.property.type === "Literal" && typeof node.property.value === "number") {
|
|
38
41
|
return; // Allow numeric array indices
|
|
39
42
|
}
|
|
40
|
-
analysisReport.addIssue("COMPUTED_ACCESS_NOT_ALLOWED", "computed member access not allowed", getNodeRange(node), validationContext.getSnapshot(), [
|
|
43
|
+
analysisReport.addIssue("COMPUTED_ACCESS_NOT_ALLOWED", "computed member access not allowed", (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot(), [
|
|
41
44
|
"Use dot notation: obj.prop instead of obj[prop]",
|
|
42
45
|
"For arrays, use numeric indices: array[0] instead of array[variable]",
|
|
43
46
|
]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/analyze/security/expressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../../src/analyze/security/expressions.ts"],"names":[],"mappings":";;AAOA,gDA4FC;AAlGD,mDAA6C;AAG7C,8DAAuD;AACvD,0CAA2C;AAE3C,SAAgB,kBAAkB,CAChC,GAAY,EACZ,OAAe,EACf,iBAAoC;IAEpC,MAAM,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;IAE5C,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,aAAa,CAAC,IAAI;YAChB,cAAc,CAAC,QAAQ,CACrB,iBAAiB,EACjB,iBAAiB,EACjB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,cAAc,CAAC,IAAI;YACjB,cAAc,CAAC,QAAQ,CACrB,kBAAkB,EAClB,kBAAkB,EAClB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,aAAa,CAAC,IAAI;YAChB,cAAc,CAAC,QAAQ,CACrB,kBAAkB,EAClB,kBAAkB,EAClB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,eAAe,CAAC,IAAI;YAClB,cAAc,CAAC,QAAQ,CACrB,mBAAmB,EACnB,mBAAmB,EACnB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,eAAe,CAAC,IAAI;YAClB,cAAc,CAAC,QAAQ,CACrB,mBAAmB,EACnB,mBAAmB,EACnB,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;QACJ,CAAC;QACD,uBAAuB,CAAC,IAAI;YAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACxC,cAAc,CAAC,QAAQ,CACrB,uCAAuC,EACvC,6CAA6C,EAC7C,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,gBAAgB,CAAC,IAAI;YACnB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACtD,cAAc,CAAC,QAAQ,CACrB,+BAA+B,EAC/B,wCAAwC,EACxC,IAAA,uBAAY,EAAC,QAAQ,CAAC,EACtB,iBAAiB,CAAC,WAAW,EAAE,CAChC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,gBAAgB,CAAC,IAAI;YACnB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChF,OAAO,CAAC,8BAA8B;gBACxC,CAAC;gBAED,cAAc,CAAC,QAAQ,CACrB,6BAA6B,EAC7B,oCAAoC,EACpC,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,EAC/B;oBACE,iDAAiD;oBACjD,sEAAsE;iBACvE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.analyzeIdentifiers = analyzeIdentifiers;
|
|
4
|
+
const traverse_js_1 = require("../../traverse.js");
|
|
5
|
+
const builtins_js_1 = require("../../builtins.js");
|
|
6
|
+
const analysis_report_js_1 = require("../analysis-report.js");
|
|
7
|
+
const utils_js_1 = require("../utils.js");
|
|
8
|
+
function analyzeIdentifiers(ast, _schema, validationContext) {
|
|
9
|
+
const analysisReport = new analysis_report_js_1.AnalysisReport();
|
|
7
10
|
const arrowParamScopes = getArrowParamScopes(ast);
|
|
8
|
-
traverse(ast, {
|
|
11
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
9
12
|
Identifier(node) {
|
|
10
13
|
const { name } = node;
|
|
11
|
-
const allowedRoots = ["props", "data", ...getBuiltinGlobals()];
|
|
14
|
+
const allowedRoots = ["props", "data", ...(0, builtins_js_1.getBuiltinGlobals)()];
|
|
12
15
|
if (allowedRoots.includes(name)) {
|
|
13
16
|
return;
|
|
14
17
|
}
|
|
@@ -19,7 +22,7 @@ export function analyzeIdentifiers(ast, _schema, validationContext) {
|
|
|
19
22
|
return;
|
|
20
23
|
}
|
|
21
24
|
}
|
|
22
|
-
analysisReport.addIssue("IDENTIFIER_NOT_ALLOWED", `Identifier "${name}" not allowed`, getNodeRange(node), validationContext.getSnapshot(), allowedRoots);
|
|
25
|
+
analysisReport.addIssue("IDENTIFIER_NOT_ALLOWED", `Identifier "${name}" not allowed`, (0, utils_js_1.getNodeRange)(node), validationContext.getSnapshot(), allowedRoots);
|
|
23
26
|
},
|
|
24
27
|
});
|
|
25
28
|
return analysisReport;
|
|
@@ -30,7 +33,7 @@ export function analyzeIdentifiers(ast, _schema, validationContext) {
|
|
|
30
33
|
// main validation pass.
|
|
31
34
|
function getArrowParamScopes(ast) {
|
|
32
35
|
const arrowParamScopes = new Map();
|
|
33
|
-
traverse(ast, {
|
|
36
|
+
(0, traverse_js_1.traverse)(ast, {
|
|
34
37
|
ArrowFunctionExpression(node) {
|
|
35
38
|
const { params } = node;
|
|
36
39
|
if (Array.isArray(params)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../../src/analyze/security/identifiers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identifiers.js","sourceRoot":"","sources":["../../../src/analyze/security/identifiers.ts"],"names":[],"mappings":";;AAQA,gDAsCC;AA7CD,mDAA6C;AAE7C,mDAAsD;AAEtD,8DAAuD;AACvD,0CAA2C;AAE3C,SAAgB,kBAAkB,CAChC,GAAY,EACZ,OAAe,EACf,iBAAoC;IAEpC,MAAM,cAAc,GAAG,IAAI,mCAAc,EAAE,CAAC;IAC5C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAElD,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,UAAU,CAAC,IAAgB;YACzB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YAEtB,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAA,+BAAiB,GAAE,CAAC,CAAC;YAE/D,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAE/C,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjD,IAAI,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,OAAO;gBACT,CAAC;YACH,CAAC;YAED,cAAc,CAAC,QAAQ,CACrB,wBAAwB,EACxB,eAAe,IAAI,eAAe,EAClC,IAAA,uBAAY,EAAC,IAAI,CAAC,EAClB,iBAAiB,CAAC,WAAW,EAAE,EAC/B,YAAY,CACb,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,kFAAkF;AAClF,wBAAwB;AACxB,SAAS,mBAAmB,CAAC,GAAY;IACvC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAwC,CAAC;IACzE,IAAA,sBAAQ,EAAC,GAAG,EAAE;QACZ,uBAAuB,CAAC,IAAI;YAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACxB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBACnB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC5B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC,CAAC;gBACH,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;KACF,CAAC,CAAC;IACH,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,2EAA2E;AAC3E,kFAAkF;AAClF,SAAS,eAAe,CAAC,UAAmB,EAAE,QAAiB;IAC7D,IAAI,KAAK,GAAmC,IAAI,CAAC;IAEjD,SAAS,IAAI,CAAC,IAAa;QACzB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,yBAAyB,CAAC;QAExD,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,IAA+B,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAI,IAAY,CAAC,GAAG,CAAC,CAAC;YAEjC,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACnD,OAAO,IAAI,CAAC;wBACd,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,CAAC;IACf,OAAO,KAAK,CAAC;AACf,CAAC"}
|