jsxpression 0.2.3 → 0.3.0
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.d.ts.map +1 -1
- package/lib/analyze/analysis-error.js +3 -1
- package/lib/analyze/analysis-error.js.map +1 -1
- package/lib/analyze/analysis-report.d.ts +146 -5
- package/lib/analyze/analysis-report.d.ts.map +1 -1
- package/lib/analyze/analysis-report.js.map +1 -1
- package/lib/analyze/data/data-access.d.ts.map +1 -1
- package/lib/analyze/data/data-access.js +22 -15
- package/lib/analyze/data/data-access.js.map +1 -1
- package/lib/analyze/data/method-calls.js +1 -1
- package/lib/analyze/data/method-calls.js.map +1 -1
- package/lib/analyze/data/utils.d.ts.map +1 -1
- package/lib/analyze/data/utils.js +27 -22
- package/lib/analyze/data/utils.js.map +1 -1
- package/lib/analyze/jsx/element-attributes.js +2 -2
- package/lib/analyze/jsx/element-attributes.js.map +1 -1
- package/lib/analyze/jsx/element-children.js +1 -1
- package/lib/analyze/jsx/element-children.js.map +1 -1
- package/lib/analyze/jsx/element-tags.js +1 -1
- package/lib/analyze/jsx/element-tags.js.map +1 -1
- package/lib/analyze/security/call-expressions.js +1 -1
- package/lib/analyze/security/call-expressions.js.map +1 -1
- package/lib/analyze/security/identifiers.js +6 -8
- package/lib/analyze/security/identifiers.js.map +1 -1
- package/lib/analyze/utils.d.ts.map +1 -1
- package/lib/analyze/utils.js +3 -2
- package/lib/analyze/utils.js.map +1 -1
- package/lib/builtins.js +1 -1
- package/lib/builtins.js.map +1 -1
- package/lib/codegen/schema/data-types.js +3 -6
- package/lib/codegen/schema/data-types.js.map +1 -1
- package/lib/codegen/schema/function-types.js +1 -1
- package/lib/codegen/schema/function-types.js.map +1 -1
- package/lib/codegen/schema/utils.d.ts.map +1 -1
- package/lib/codegen/schema/utils.js +6 -5
- package/lib/codegen/schema/utils.js.map +1 -1
- package/lib/compile/compile.js +11 -7
- package/lib/compile/compile.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/jsx.js +1 -1
- package/lib/jsx.js.map +1 -1
- package/lib/parse/parse.js.map +1 -1
- package/package.json +2 -2
- package/src/analyze/analysis-error.ts +3 -1
- package/src/analyze/analysis-report.ts +2 -2
- package/src/analyze/analyze.test.ts +9 -0
- package/src/analyze/data/data-access.ts +22 -15
- package/src/analyze/data/method-calls.ts +1 -1
- package/src/analyze/data/utils.ts +29 -32
- package/src/analyze/jsx/element-attributes.ts +2 -2
- package/src/analyze/jsx/element-children.ts +1 -1
- package/src/analyze/jsx/element-tags.ts +1 -1
- package/src/analyze/security/call-expressions.ts +1 -1
- package/src/analyze/security/identifiers.ts +6 -8
- package/src/analyze/utils.ts +8 -7
- package/src/builtins.ts +1 -1
- package/src/codegen/schema/data-types.ts +3 -6
- package/src/codegen/schema/function-types.ts +1 -1
- package/src/codegen/schema/utils.ts +6 -5
- package/src/compile/compile.ts +11 -7
- package/src/index.ts +1 -1
- package/src/jsx.ts +7 -7
- package/src/parse/parse.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-error.d.ts","sourceRoot":"","sources":["../../src/analyze/analysis-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,qBAAa,aAAc,SAAQ,KAAK;IACtC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"analysis-error.d.ts","sourceRoot":"","sources":["../../src/analyze/analysis-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,qBAAa,aAAc,SAAQ,KAAK;IACtC,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,aAAa,CAMvD;IAED,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAOlD;CACF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
// oxlint-disable-next-line functional/no-classes -- extends Error, which requires a class
|
|
2
2
|
export class AnalysisError extends Error {
|
|
3
3
|
static fromReport(report) {
|
|
4
|
-
const
|
|
4
|
+
const errors = report.errors;
|
|
5
|
+
const firstError = errors[0];
|
|
6
|
+
const message = errors.length === 1 && firstError ? firstError.message : `Analysis failed (${errors.length} issues)`;
|
|
5
7
|
return new AnalysisError(message, report);
|
|
6
8
|
}
|
|
7
9
|
report;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-error.js","sourceRoot":"","sources":["../../src/analyze/analysis-error.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,MAAM,CAAC,UAAU,CAAC,MAAsB;QACtC,MAAM,
|
|
1
|
+
{"version":3,"file":"analysis-error.js","sourceRoot":"","sources":["../../src/analyze/analysis-error.ts"],"names":[],"mappings":"AAEA,0FAA0F;AAC1F,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,MAAM,CAAC,UAAU,CAAC,MAAsB;QACtC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,MAAM,UAAU,CAAC;QAErH,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEQ,MAAM,CAAiB;IAEhC,YAAY,OAAe,EAAE,MAAsB;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,gBAAgB,GAAG,KAA+E,CAAC;QACzG,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;CACF"}
|
|
@@ -10,11 +10,152 @@ interface Issue {
|
|
|
10
10
|
suggestions: Array<string>;
|
|
11
11
|
snapshot: ValidationContextSnapshot;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
declare const ISSUES_DEFINITIONS: {
|
|
14
|
+
readonly VARIABLE_NOT_ALLOWED: {
|
|
15
|
+
readonly severity: 3;
|
|
16
|
+
readonly custom: true;
|
|
17
|
+
};
|
|
18
|
+
readonly IDENTIFIER_NOT_ALLOWED: {
|
|
19
|
+
readonly severity: 3;
|
|
20
|
+
readonly custom: true;
|
|
21
|
+
};
|
|
22
|
+
readonly IMPORT_NOT_ALLOWED: {
|
|
23
|
+
readonly severity: 3;
|
|
24
|
+
readonly custom: true;
|
|
25
|
+
};
|
|
26
|
+
readonly EXPORT_NOT_ALLOWED: {
|
|
27
|
+
readonly severity: 3;
|
|
28
|
+
readonly custom: true;
|
|
29
|
+
};
|
|
30
|
+
readonly ASSIGNMENT_NOT_ALLOWED: {
|
|
31
|
+
readonly severity: 3;
|
|
32
|
+
readonly custom: true;
|
|
33
|
+
};
|
|
34
|
+
readonly UPDATE_NOT_ALLOWED: {
|
|
35
|
+
readonly severity: 3;
|
|
36
|
+
readonly custom: true;
|
|
37
|
+
};
|
|
38
|
+
readonly DELETE_NOT_ALLOWED: {
|
|
39
|
+
readonly severity: 3;
|
|
40
|
+
readonly custom: true;
|
|
41
|
+
};
|
|
42
|
+
readonly NEW_NOT_ALLOWED: {
|
|
43
|
+
readonly severity: 3;
|
|
44
|
+
readonly custom: true;
|
|
45
|
+
};
|
|
46
|
+
readonly THIS_NOT_ALLOWED: {
|
|
47
|
+
readonly severity: 3;
|
|
48
|
+
readonly custom: true;
|
|
49
|
+
};
|
|
50
|
+
readonly SUPER_NOT_ALLOWED: {
|
|
51
|
+
readonly severity: 3;
|
|
52
|
+
readonly custom: true;
|
|
53
|
+
};
|
|
54
|
+
readonly YIELD_NOT_ALLOWED: {
|
|
55
|
+
readonly severity: 3;
|
|
56
|
+
readonly custom: true;
|
|
57
|
+
};
|
|
58
|
+
readonly AWAIT_NOT_ALLOWED: {
|
|
59
|
+
readonly severity: 3;
|
|
60
|
+
readonly custom: true;
|
|
61
|
+
};
|
|
62
|
+
readonly ARROW_FUNCTION_BLOCK_BODY_NOT_ALLOWED: {
|
|
63
|
+
readonly severity: 3;
|
|
64
|
+
readonly custom: true;
|
|
65
|
+
};
|
|
66
|
+
readonly FUNCTION_NOT_ALLOWED: {
|
|
67
|
+
readonly severity: 3;
|
|
68
|
+
readonly custom: true;
|
|
69
|
+
};
|
|
70
|
+
readonly CLASS_NOT_ALLOWED: {
|
|
71
|
+
readonly severity: 3;
|
|
72
|
+
readonly custom: true;
|
|
73
|
+
};
|
|
74
|
+
readonly TRY_NOT_ALLOWED: {
|
|
75
|
+
readonly severity: 3;
|
|
76
|
+
readonly custom: true;
|
|
77
|
+
};
|
|
78
|
+
readonly THROW_NOT_ALLOWED: {
|
|
79
|
+
readonly severity: 3;
|
|
80
|
+
readonly custom: true;
|
|
81
|
+
};
|
|
82
|
+
readonly WITH_NOT_ALLOWED: {
|
|
83
|
+
readonly severity: 3;
|
|
84
|
+
readonly custom: true;
|
|
85
|
+
};
|
|
86
|
+
readonly DEBUGGER_NOT_ALLOWED: {
|
|
87
|
+
readonly severity: 3;
|
|
88
|
+
readonly custom: true;
|
|
89
|
+
};
|
|
90
|
+
readonly COMPUTED_ACCESS_NOT_ALLOWED: {
|
|
91
|
+
readonly severity: 3;
|
|
92
|
+
readonly custom: true;
|
|
93
|
+
};
|
|
94
|
+
readonly COMPUTED_PROPERTY_NOT_ALLOWED: {
|
|
95
|
+
readonly severity: 3;
|
|
96
|
+
readonly custom: true;
|
|
97
|
+
};
|
|
98
|
+
readonly DIRECT_CALL_NOT_ALLOWED: {
|
|
99
|
+
readonly severity: 3;
|
|
100
|
+
readonly custom: true;
|
|
101
|
+
};
|
|
102
|
+
readonly DYNAMIC_METHOD_NOT_ALLOWED: {
|
|
103
|
+
readonly severity: 3;
|
|
104
|
+
readonly custom: true;
|
|
105
|
+
};
|
|
106
|
+
readonly METHOD_NOT_ALLOWED: {
|
|
107
|
+
readonly severity: 3;
|
|
108
|
+
readonly custom: false;
|
|
109
|
+
};
|
|
110
|
+
readonly INVALID_DATA_ACCESS: {
|
|
111
|
+
readonly severity: 3;
|
|
112
|
+
readonly custom: false;
|
|
113
|
+
};
|
|
114
|
+
readonly INVALID_PARAMETER_ACCESS: {
|
|
115
|
+
readonly severity: 3;
|
|
116
|
+
readonly custom: false;
|
|
117
|
+
};
|
|
118
|
+
readonly INVALID_ELEMENT: {
|
|
119
|
+
readonly severity: 3;
|
|
120
|
+
readonly custom: false;
|
|
121
|
+
};
|
|
122
|
+
readonly INVALID_ATTRIBUTE: {
|
|
123
|
+
readonly severity: 3;
|
|
124
|
+
readonly custom: false;
|
|
125
|
+
};
|
|
126
|
+
readonly MISSING_REQUIRED_ATTRIBUTE: {
|
|
127
|
+
readonly severity: 3;
|
|
128
|
+
readonly custom: false;
|
|
129
|
+
};
|
|
130
|
+
readonly INVALID_CHILD_ELEMENT: {
|
|
131
|
+
readonly severity: 3;
|
|
132
|
+
readonly custom: true;
|
|
133
|
+
};
|
|
134
|
+
readonly MEMBER_CHAIN_TOO_DEEP: {
|
|
135
|
+
readonly severity: 2;
|
|
136
|
+
readonly custom: true;
|
|
137
|
+
};
|
|
138
|
+
readonly TOO_MANY_PARAMETERS: {
|
|
139
|
+
readonly severity: 2;
|
|
140
|
+
readonly custom: false;
|
|
141
|
+
};
|
|
142
|
+
readonly INSUFFICIENT_PARAMETERS: {
|
|
143
|
+
readonly severity: 2;
|
|
144
|
+
readonly custom: false;
|
|
145
|
+
};
|
|
146
|
+
readonly INVALID_ATTRIBUTE_VALUE: {
|
|
147
|
+
readonly severity: 3;
|
|
148
|
+
readonly custom: false;
|
|
149
|
+
};
|
|
150
|
+
readonly SELF_CLOSING_WITH_CHILDREN: {
|
|
151
|
+
readonly severity: 1;
|
|
152
|
+
readonly custom: true;
|
|
153
|
+
};
|
|
154
|
+
readonly RETURN_REQUIRED: {
|
|
155
|
+
readonly severity: 3;
|
|
156
|
+
readonly custom: true;
|
|
157
|
+
};
|
|
158
|
+
};
|
|
18
159
|
export type IssueCode = keyof typeof ISSUES_DEFINITIONS;
|
|
19
160
|
export interface AnalysisReport {
|
|
20
161
|
readonly issues: Array<Issue>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-report.d.ts","sourceRoot":"","sources":["../../src/analyze/analysis-report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,KAAK,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/B,UAAU,KAAK;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,EAAE,yBAAyB,CAAC;CACrC;
|
|
1
|
+
{"version":3,"file":"analysis-report.d.ts","sourceRoot":"","sources":["../../src/analyze/analysis-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis-report.js","sourceRoot":"","sources":["../../src/analyze/analysis-report.ts"],"names":[],"mappings":"AAoBA,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"analysis-report.js","sourceRoot":"","sources":["../../src/analyze/analysis-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access.d.ts","sourceRoot":"","sources":["../../../src/analyze/data/data-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkF,OAAO,EAAE,MAAM,OAAO,CAAC;AACrH,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"data-access.d.ts","sourceRoot":"","sources":["../../../src/analyze/data/data-access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkF,OAAO,EAAE,MAAM,OAAO,CAAC;AACrH,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEnF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAElF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,cAAc,CAiIpH;AAqJD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAEtF"}
|
|
@@ -14,8 +14,7 @@ export function analyzeDataAccess(ast, schema, validationContext) {
|
|
|
14
14
|
if (callee.type === "MemberExpression" &&
|
|
15
15
|
!callee.computed &&
|
|
16
16
|
callee.property.type === "Identifier" &&
|
|
17
|
-
args
|
|
18
|
-
args[0].type === "ArrowFunctionExpression") {
|
|
17
|
+
args[0]?.type === "ArrowFunctionExpression") {
|
|
19
18
|
const method = callee.property.name;
|
|
20
19
|
// TODO: Move these into builtins so it stays in sync with the global method definitions
|
|
21
20
|
const arrayCallbackMethods = ["map", "filter", "find", "forEach", "some", "every", "reduce"];
|
|
@@ -25,11 +24,11 @@ export function analyzeDataAccess(ast, schema, validationContext) {
|
|
|
25
24
|
if (arrayElementType && arrowFunction.params.length > 0) {
|
|
26
25
|
const parameterTypes = new Map();
|
|
27
26
|
// First parameter is always the array element
|
|
28
|
-
if (arrowFunction.params[0]
|
|
27
|
+
if (arrowFunction.params[0]?.type === "Identifier") {
|
|
29
28
|
parameterTypes.set(arrowFunction.params[0].name, arrayElementType);
|
|
30
29
|
}
|
|
31
30
|
// For methods like reduce, second parameter might be index (number)
|
|
32
|
-
if (arrowFunction.params
|
|
31
|
+
if (arrowFunction.params[1]?.type === "Identifier") {
|
|
33
32
|
parameterTypes.set(arrowFunction.params[1].name, { type: "number" });
|
|
34
33
|
}
|
|
35
34
|
arrowFunctionContexts.set(arrowFunction, parameterTypes);
|
|
@@ -59,7 +58,7 @@ export function analyzeDataAccess(ast, schema, validationContext) {
|
|
|
59
58
|
MemberExpression(node) {
|
|
60
59
|
if (isSimpleDataAccess(node, dataKeys)) {
|
|
61
60
|
const path = extractPath(node);
|
|
62
|
-
if (dataKeys.has(path[0])) {
|
|
61
|
+
if (path[0] !== undefined && dataKeys.has(path[0])) {
|
|
63
62
|
dataPaths.add(path.join("."));
|
|
64
63
|
}
|
|
65
64
|
}
|
|
@@ -99,7 +98,7 @@ export function analyzeDataAccess(ast, schema, validationContext) {
|
|
|
99
98
|
}
|
|
100
99
|
if (isSimpleDataAccess(node, dataKeys)) {
|
|
101
100
|
const path = extractPath(node);
|
|
102
|
-
if (dataKeys.has(path[0])) {
|
|
101
|
+
if (path[0] !== undefined && dataKeys.has(path[0])) {
|
|
103
102
|
const pathString = path.join(".");
|
|
104
103
|
if (validatablePaths.has(pathString)) {
|
|
105
104
|
validateSchemaPath(path, schema, analysisReport, node, validationContext);
|
|
@@ -130,7 +129,7 @@ function getArrayElementTypeFromCall(node, schema, arrowFunctionContexts) {
|
|
|
130
129
|
}
|
|
131
130
|
if (isSimpleDataAccess(callee, dataKeys)) {
|
|
132
131
|
const path = extractPath(callee);
|
|
133
|
-
if (dataKeys.has(path[0])) {
|
|
132
|
+
if (path[0] !== undefined && dataKeys.has(path[0])) {
|
|
134
133
|
const schemaPath = path.slice(0, -1); // Remove method name
|
|
135
134
|
const arraySchema = getSchemaAtPath(schemaPath, schema);
|
|
136
135
|
if (arraySchema?.type === "array") {
|
|
@@ -146,9 +145,12 @@ function getArrayElementTypeFromCall(node, schema, arrowFunctionContexts) {
|
|
|
146
145
|
// e.g., ["group", "items"] or ["dept", "employees"]
|
|
147
146
|
const paramName = objectPath[0];
|
|
148
147
|
const propertyName = objectPath[1];
|
|
148
|
+
if (paramName === undefined || propertyName === undefined) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
149
151
|
// Find the arrow function context that defines this parameter
|
|
150
152
|
const parameterType = resolveParameterType(paramName, node, arrowFunctionContexts);
|
|
151
|
-
if (parameterType?.type === "object"
|
|
153
|
+
if (parameterType?.type === "object") {
|
|
152
154
|
const propertySchema = parameterType.shape[propertyName];
|
|
153
155
|
if (propertySchema?.type === "array") {
|
|
154
156
|
return getArrayElementType(propertySchema);
|
|
@@ -178,14 +180,19 @@ function isNodeInsideArrowFunction(targetNode, arrowFunction) {
|
|
|
178
180
|
return false;
|
|
179
181
|
}
|
|
180
182
|
function getSchemaAtPath(path, schema) {
|
|
181
|
-
|
|
183
|
+
const root = path[0];
|
|
184
|
+
if (!schema.data || root === undefined) {
|
|
182
185
|
// oxlint-disable-next-line typescript/no-explicit-any -- this branch returns the raw schema.data record (not a PropertySchema) when no path segments remain; preserved as-is for behavior parity
|
|
183
186
|
return schema.data;
|
|
184
187
|
}
|
|
185
|
-
let current = schema.data[
|
|
188
|
+
let current = schema.data[root];
|
|
186
189
|
for (let i = 1; i < path.length && current; i++) {
|
|
187
|
-
|
|
188
|
-
|
|
190
|
+
const prop = path[i];
|
|
191
|
+
if (prop === undefined) {
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
if (current.type === "object") {
|
|
195
|
+
current = current.shape[prop];
|
|
189
196
|
}
|
|
190
197
|
else {
|
|
191
198
|
return null;
|
|
@@ -198,17 +205,17 @@ function validateParameterAccess(node, paramType, analysisReport, validationCont
|
|
|
198
205
|
return;
|
|
199
206
|
}
|
|
200
207
|
const propertyName = node.property.name;
|
|
201
|
-
if (paramType.type === "object"
|
|
208
|
+
if (paramType.type === "object") {
|
|
202
209
|
if (!paramType.shape[propertyName]) {
|
|
203
210
|
analysisReport.addIssue("INVALID_PARAMETER_ACCESS", `Property '${propertyName}' does not exist on parameter '${node.object.name}'`, getNodeRange(node), validationContext.getSnapshot(), Object.keys(paramType.shape));
|
|
204
211
|
}
|
|
205
212
|
}
|
|
206
213
|
else {
|
|
207
|
-
analysisReport.addIssue("INVALID_PARAMETER_ACCESS", `Cannot access property '${propertyName}' on ${paramType.type
|
|
214
|
+
analysisReport.addIssue("INVALID_PARAMETER_ACCESS", `Cannot access property '${propertyName}' on ${paramType.type} type parameter '${node.object.name}'`, getNodeRange(node), validationContext.getSnapshot());
|
|
208
215
|
}
|
|
209
216
|
}
|
|
210
217
|
export function getArrayElementType(schema) {
|
|
211
|
-
return schema.shape
|
|
218
|
+
return schema.shape;
|
|
212
219
|
}
|
|
213
220
|
function buildParentMap(ast) {
|
|
214
221
|
const map = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-access.js","sourceRoot":"","sources":["../../../src/analyze/data/data-access.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAuB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,UAAU,iBAAiB,CAAC,GAAY,EAAE,MAAc,EAAE,iBAAoC;IAClG,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAE9C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAwD,CAAC;IAE9F,yFAAyF;IACzF,SAAS,4BAA4B,CAAC,IAAa;QACjD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;YACnC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YAEzC,IACE,MAAM,CAAC,IAAI,KAAK,kBAAkB;gBAClC,CAAC,MAAM,CAAC,QAAQ;gBAChB,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY;gBACrC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"data-access.js","sourceRoot":"","sources":["../../../src/analyze/data/data-access.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export function analyzeMethodCalls(ast, schema, validationContext) {
|
|
|
13
13
|
const method = callee.property.name;
|
|
14
14
|
if (isSimpleDataAccess(callee, dataKeys)) {
|
|
15
15
|
const path = extractPath(callee);
|
|
16
|
-
if (dataKeys.has(path[0])) {
|
|
16
|
+
if (path[0] !== undefined && dataKeys.has(path[0])) {
|
|
17
17
|
const schemaPath = path.slice(0, -1);
|
|
18
18
|
if (schemaPath.length > 0) {
|
|
19
19
|
validateSchemaPath(schemaPath, schema, analysisReport, callee, validationContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"method-calls.js","sourceRoot":"","sources":["../../../src/analyze/data/method-calls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE/F,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAuB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEjF,MAAM,UAAU,kBAAkB,CAAC,GAAY,EAAE,MAAc,EAAE,iBAAoC;IACnG,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IAEzD,QAAQ,CAAC,GAAG,EAAE;QACZ,cAAc,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;YAEzC,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACpG,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAEpC,IAAI,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;oBACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"method-calls.js","sourceRoot":"","sources":["../../../src/analyze/data/method-calls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/analyze/data/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,gBAAgB,EAA4B,MAAM,OAAO,CAAC;AAEpF,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/analyze/data/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,gBAAgB,EAA4B,MAAM,OAAO,CAAC;AAEpF,OAAO,KAAK,EAAkB,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CA4BjG;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CA0BjE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CA6BnH;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EACnB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,gBAAgB,EACtB,iBAAiB,EAAE,iBAAiB,GACnC,IAAI,CA+JN"}
|
|
@@ -8,7 +8,7 @@ export function isSimpleDataAccess(node, dataKeys) {
|
|
|
8
8
|
return false;
|
|
9
9
|
}
|
|
10
10
|
let current = node.object;
|
|
11
|
-
|
|
11
|
+
for (;;) {
|
|
12
12
|
if (current.type === "Identifier") {
|
|
13
13
|
return dataKeys.has(current.name);
|
|
14
14
|
}
|
|
@@ -27,7 +27,6 @@ export function isSimpleDataAccess(node, dataKeys) {
|
|
|
27
27
|
return false;
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
return false;
|
|
31
30
|
}
|
|
32
31
|
export function extractPath(node) {
|
|
33
32
|
const path = [];
|
|
@@ -35,7 +34,7 @@ export function extractPath(node) {
|
|
|
35
34
|
path.unshift(node.property.name);
|
|
36
35
|
}
|
|
37
36
|
let current = node.object;
|
|
38
|
-
|
|
37
|
+
for (;;) {
|
|
39
38
|
if (current.type === "Identifier") {
|
|
40
39
|
path.unshift(current.name);
|
|
41
40
|
break;
|
|
@@ -60,32 +59,41 @@ export function getAvailablePropsAtPath(path, depth, schemaDataParam) {
|
|
|
60
59
|
if (depth === 0) {
|
|
61
60
|
return Object.keys(schemaData);
|
|
62
61
|
}
|
|
63
|
-
|
|
62
|
+
const root = path[0];
|
|
63
|
+
if (root === undefined) {
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
let current = schemaData[root];
|
|
64
67
|
for (let i = 1; i <= depth; i++) {
|
|
65
|
-
|
|
68
|
+
const prop = path[i];
|
|
69
|
+
if (prop === undefined || current?.type !== "object") {
|
|
66
70
|
return [];
|
|
67
71
|
}
|
|
68
|
-
current = current.shape[
|
|
72
|
+
current = current.shape[prop];
|
|
69
73
|
}
|
|
70
|
-
if (current?.type === "object"
|
|
74
|
+
if (current?.type === "object") {
|
|
71
75
|
return Object.keys(current.shape);
|
|
72
76
|
}
|
|
73
77
|
return [];
|
|
74
78
|
}
|
|
75
79
|
export function validateSchemaPath(path, schema, analysisReport, node, validationContext) {
|
|
76
80
|
const schemaData = schema.data;
|
|
77
|
-
|
|
81
|
+
const root = path[0];
|
|
82
|
+
if (!schemaData || root === undefined) {
|
|
78
83
|
analysisReport.addIssue("INVALID_DATA_ACCESS", "Invalid data access - no schema data available", getNodeRange(node), validationContext.getSnapshot(), schemaData ? Object.keys(schemaData) : undefined);
|
|
79
84
|
return;
|
|
80
85
|
}
|
|
81
|
-
let current = schemaData[
|
|
86
|
+
let current = schemaData[root];
|
|
82
87
|
if (!current) {
|
|
83
|
-
analysisReport.addIssue("INVALID_DATA_ACCESS", `Property '${
|
|
88
|
+
analysisReport.addIssue("INVALID_DATA_ACCESS", `Property '${root}' does not exist in schema`, getNodeRange(node), validationContext.getSnapshot(), Object.keys(schemaData));
|
|
84
89
|
return;
|
|
85
90
|
}
|
|
86
91
|
const elementAccessFlags = getElementAccessFlags(node, path.length);
|
|
87
92
|
for (let i = 1; i < path.length; i++) {
|
|
88
93
|
const prop = path[i];
|
|
94
|
+
if (prop === undefined) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
89
97
|
const isElementAccess = elementAccessFlags[i - 1];
|
|
90
98
|
if (current.type === "array") {
|
|
91
99
|
if (!isElementAccess) {
|
|
@@ -96,12 +104,8 @@ export function validateSchemaPath(path, schema, analysisReport, node, validatio
|
|
|
96
104
|
analysisReport.addIssue("INVALID_DATA_ACCESS", `Property '${accessedPath}' does not exist on array type`, getNodeRange(node), validationContext.getSnapshot(), getAvailableArrayMembers());
|
|
97
105
|
return;
|
|
98
106
|
}
|
|
99
|
-
const elementType = current.shape
|
|
100
|
-
if (
|
|
101
|
-
analysisReport.addIssue("INVALID_DATA_ACCESS", `Cannot access property '${prop}' on unknown array element type`, getNodeRange(node), validationContext.getSnapshot(), getAvailableArrayMembers());
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
if (elementType.type === "object" && elementType.shape) {
|
|
107
|
+
const elementType = current.shape;
|
|
108
|
+
if (elementType.type === "object") {
|
|
105
109
|
const next = elementType.shape[prop];
|
|
106
110
|
if (!next) {
|
|
107
111
|
const paths = path.slice(0, i + 1);
|
|
@@ -128,7 +132,7 @@ export function validateSchemaPath(path, schema, analysisReport, node, validatio
|
|
|
128
132
|
analysisReport.addIssue("INVALID_DATA_ACCESS", `Property '${accessedPath}' does not exist on string type`, getNodeRange(node), validationContext.getSnapshot(), getAvailableStringMembers());
|
|
129
133
|
return;
|
|
130
134
|
}
|
|
131
|
-
analysisReport.addIssue("INVALID_DATA_ACCESS", `Cannot access property '${prop}' on ${elementType.type
|
|
135
|
+
analysisReport.addIssue("INVALID_DATA_ACCESS", `Cannot access property '${prop}' on ${elementType.type} type array element`, getNodeRange(node), validationContext.getSnapshot());
|
|
132
136
|
return;
|
|
133
137
|
}
|
|
134
138
|
if (current.type === "string") {
|
|
@@ -139,8 +143,8 @@ export function validateSchemaPath(path, schema, analysisReport, node, validatio
|
|
|
139
143
|
analysisReport.addIssue("INVALID_DATA_ACCESS", `Property '${accessedPath}' does not exist on string type`, getNodeRange(node), validationContext.getSnapshot(), getAvailableStringMembers());
|
|
140
144
|
return;
|
|
141
145
|
}
|
|
142
|
-
if (current.type !== "object"
|
|
143
|
-
analysisReport.addIssue("INVALID_DATA_ACCESS", `Cannot access property '${prop}' on ${current.type
|
|
146
|
+
if (current.type !== "object") {
|
|
147
|
+
analysisReport.addIssue("INVALID_DATA_ACCESS", `Cannot access property '${prop}' on ${current.type} type`, getNodeRange(node), validationContext.getSnapshot());
|
|
144
148
|
return;
|
|
145
149
|
}
|
|
146
150
|
current = current.shape[prop];
|
|
@@ -148,6 +152,7 @@ export function validateSchemaPath(path, schema, analysisReport, node, validatio
|
|
|
148
152
|
const availableProps = getAvailablePropsAtPath(path, i - 1, schemaData);
|
|
149
153
|
const paths = path.slice(0, i + 1);
|
|
150
154
|
analysisReport.addIssue("INVALID_DATA_ACCESS", `Property '${paths.join(".")}' does not exist in schema`, getNodeRange(node), validationContext.getSnapshot(), availableProps);
|
|
155
|
+
return;
|
|
151
156
|
}
|
|
152
157
|
}
|
|
153
158
|
}
|
|
@@ -155,20 +160,20 @@ function getElementAccessFlags(node, pathLength) {
|
|
|
155
160
|
const flags = Array(pathLength).fill(false);
|
|
156
161
|
const segments = [];
|
|
157
162
|
let current = node;
|
|
158
|
-
while (current
|
|
163
|
+
while (current.type === "MemberExpression") {
|
|
159
164
|
segments.unshift({ property: current.property, computed: current.computed });
|
|
160
165
|
current = current.object;
|
|
161
166
|
}
|
|
162
167
|
let schemaIndex = -1;
|
|
163
168
|
let lastWasComputedNumeric = false;
|
|
164
169
|
for (const segment of segments) {
|
|
165
|
-
if (segment.property
|
|
170
|
+
if (segment.property.type === "Identifier") {
|
|
166
171
|
schemaIndex += 1;
|
|
167
172
|
if (schemaIndex < pathLength) {
|
|
168
173
|
flags[schemaIndex] = lastWasComputedNumeric;
|
|
169
174
|
}
|
|
170
175
|
}
|
|
171
|
-
if (segment.computed && segment.property
|
|
176
|
+
if (segment.computed && segment.property.type === "Literal" && typeof segment.property.value === "number") {
|
|
172
177
|
lastWasComputedNumeric = true;
|
|
173
178
|
}
|
|
174
179
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/analyze/data/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAG7H,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,UAAU,kBAAkB,CAAC,IAAsB,EAAE,QAA6B;IACtF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;IACrF,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,OAAO,GAA+B,IAAI,CAAC,MAAM,CAAC;IAEtD,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/analyze/data/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export function analyzeElementAttributes(ast, schema, validationContext) {
|
|
|
7
7
|
const analysisReport = createAnalysisReport();
|
|
8
8
|
const localFunctionNames = new Set();
|
|
9
9
|
for (const stmt of ast.body) {
|
|
10
|
-
if (stmt.type === "FunctionDeclaration"
|
|
10
|
+
if (stmt.type === "FunctionDeclaration") {
|
|
11
11
|
localFunctionNames.add(stmt.id.name);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -87,7 +87,7 @@ function getAttributeLiteralValue(attribute) {
|
|
|
87
87
|
}
|
|
88
88
|
if (isJsxExpressionContainer(attribute.value)) {
|
|
89
89
|
const expression = attribute.value.expression;
|
|
90
|
-
if (expression
|
|
90
|
+
if (expression.type === "Literal") {
|
|
91
91
|
return expression.value;
|
|
92
92
|
}
|
|
93
93
|
}
|