sourceverity 1.0.3 → 1.0.5

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.
Files changed (81) hide show
  1. package/README.md +91 -3
  2. package/dist/analysis/arrayBounds.d.ts +4 -0
  3. package/dist/analysis/arrayBounds.d.ts.map +1 -0
  4. package/dist/analysis/arrayBounds.js +4 -0
  5. package/dist/analysis/arrayBounds.js.map +1 -0
  6. package/dist/analysis/arrayBoundsCore.d.ts +69 -0
  7. package/dist/analysis/arrayBoundsCore.d.ts.map +1 -0
  8. package/dist/analysis/arrayBoundsCore.js +957 -0
  9. package/dist/analysis/arrayBoundsCore.js.map +1 -0
  10. package/dist/analysis/arrayConstructionBounds.d.ts +14 -0
  11. package/dist/analysis/arrayConstructionBounds.d.ts.map +1 -0
  12. package/dist/analysis/arrayConstructionBounds.js +445 -0
  13. package/dist/analysis/arrayConstructionBounds.js.map +1 -0
  14. package/dist/analysis/arrayIterationBounds.d.ts +12 -0
  15. package/dist/analysis/arrayIterationBounds.d.ts.map +1 -0
  16. package/dist/analysis/arrayIterationBounds.js +578 -0
  17. package/dist/analysis/arrayIterationBounds.js.map +1 -0
  18. package/dist/analysis/{controlFlow.d.ts → controlFlowGuards.d.ts} +1 -9
  19. package/dist/analysis/controlFlowGuards.d.ts.map +1 -0
  20. package/dist/analysis/controlFlowGuards.js +119 -0
  21. package/dist/analysis/controlFlowGuards.js.map +1 -0
  22. package/dist/analysis/controlFlowTypes.d.ts +5 -0
  23. package/dist/analysis/controlFlowTypes.d.ts.map +1 -0
  24. package/dist/analysis/controlFlowTypes.js +2 -0
  25. package/dist/analysis/controlFlowTypes.js.map +1 -0
  26. package/dist/analysis/frameworks.d.ts.map +1 -1
  27. package/dist/analysis/frameworks.js +11 -23
  28. package/dist/analysis/frameworks.js.map +1 -1
  29. package/dist/analysis/functions.d.ts.map +1 -1
  30. package/dist/analysis/functions.js +70 -30
  31. package/dist/analysis/functions.js.map +1 -1
  32. package/dist/analysis/nonNullGuards.d.ts +7 -0
  33. package/dist/analysis/nonNullGuards.d.ts.map +1 -0
  34. package/dist/analysis/nonNullGuards.js +409 -0
  35. package/dist/analysis/nonNullGuards.js.map +1 -0
  36. package/dist/analysis/promiseFlow.d.ts +5 -0
  37. package/dist/analysis/promiseFlow.d.ts.map +1 -1
  38. package/dist/analysis/promiseFlow.js +331 -1
  39. package/dist/analysis/promiseFlow.js.map +1 -1
  40. package/dist/analysis/reactStateBounds.d.ts +8 -0
  41. package/dist/analysis/reactStateBounds.d.ts.map +1 -0
  42. package/dist/analysis/reactStateBounds.js +390 -0
  43. package/dist/analysis/reactStateBounds.js.map +1 -0
  44. package/dist/analysis/values.d.ts.map +1 -1
  45. package/dist/analysis/values.js +3 -0
  46. package/dist/analysis/values.js.map +1 -1
  47. package/dist/baseline/manager.d.ts +2 -0
  48. package/dist/baseline/manager.d.ts.map +1 -1
  49. package/dist/baseline/manager.js +45 -18
  50. package/dist/baseline/manager.js.map +1 -1
  51. package/dist/cli/help.js +1 -1
  52. package/dist/cli/main.d.ts.map +1 -1
  53. package/dist/cli/main.js +22 -1
  54. package/dist/cli/main.js.map +1 -1
  55. package/dist/core/config.d.ts +7 -0
  56. package/dist/core/config.d.ts.map +1 -0
  57. package/dist/core/config.js +42 -0
  58. package/dist/core/config.js.map +1 -0
  59. package/dist/engine/runner.js +1 -1
  60. package/dist/engine/runner.js.map +1 -1
  61. package/dist/engine/symbols.d.ts +0 -1
  62. package/dist/engine/symbols.d.ts.map +1 -1
  63. package/dist/engine/symbols.js +2 -12
  64. package/dist/engine/symbols.js.map +1 -1
  65. package/dist/repository/detector.d.ts.map +1 -1
  66. package/dist/repository/detector.js +31 -11
  67. package/dist/repository/detector.js.map +1 -1
  68. package/dist/rules/async/floatingPromise.d.ts.map +1 -1
  69. package/dist/rules/async/floatingPromise.js +23 -3
  70. package/dist/rules/async/floatingPromise.js.map +1 -1
  71. package/dist/rules/network/fetchStatusUnchecked.js +1 -1
  72. package/dist/rules/network/fetchStatusUnchecked.js.map +1 -1
  73. package/dist/rules/react/derivedStateEffect.d.ts.map +1 -1
  74. package/dist/rules/react/derivedStateEffect.js +60 -5
  75. package/dist/rules/react/derivedStateEffect.js.map +1 -1
  76. package/dist/rules/typescript/nonNullAssertionRisk.js +1 -1
  77. package/dist/rules/typescript/nonNullAssertionRisk.js.map +1 -1
  78. package/package.json +1 -1
  79. package/dist/analysis/controlFlow.d.ts.map +0 -1
  80. package/dist/analysis/controlFlow.js +0 -2592
  81. package/dist/analysis/controlFlow.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrayBoundsCore.js","sourceRoot":"","sources":["../../src/analysis/arrayBoundsCore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type * as tsType from "typescript";
2
+ import type { GuardCheckResult } from "./controlFlowTypes.js";
3
+ /**
4
+ * Checks if an array is locally constructed with a known initial length and guaranteed loop pushes,
5
+ * proving that an element access is strictly in-bounds.
6
+ */
7
+ declare function isConstructedArrayCardinalityBoundedIndex(node: tsType.NonNullExpression, operand: tsType.ElementAccessExpression, ts: typeof tsType, checker?: tsType.TypeChecker | undefined): GuardCheckResult | undefined;
8
+ /**
9
+ * Checks if an index variable originates exclusively from a bounded loop search over a source array,
10
+ * with a dominating guard proving non-negative return and matching target array.
11
+ */
12
+ declare function isSearchProvenanceBoundedIndex(node: tsType.NonNullExpression, operand: tsType.ElementAccessExpression, ts: typeof tsType, checker?: tsType.TypeChecker | undefined): GuardCheckResult | undefined;
13
+ export { isConstructedArrayCardinalityBoundedIndex, isSearchProvenanceBoundedIndex, };
14
+ //# sourceMappingURL=arrayConstructionBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrayConstructionBounds.d.ts","sourceRoot":"","sources":["../../src/analysis/arrayConstructionBounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAC;AAU1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAI9D;;;GAGG;AACH,iBAAS,yCAAyC,CAChD,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAC9B,OAAO,EAAE,MAAM,CAAC,uBAAuB,EACvC,EAAE,EAAE,OAAO,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,GACvC,gBAAgB,GAAG,SAAS,CA6J9B;AAqED;;;GAGG;AACH,iBAAS,8BAA8B,CACrC,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAC9B,OAAO,EAAE,MAAM,CAAC,uBAAuB,EACvC,EAAE,EAAE,OAAO,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,GACvC,gBAAgB,GAAG,SAAS,CAiO9B;AAED,OAAO,EACL,yCAAyC,EACzC,8BAA8B,GAC/B,CAAC"}
@@ -0,0 +1,445 @@
1
+ import { containsControlFlowExit, countUnconditionalPushes, hasArrayMutation, hasMutationBeforeNode, normalizeArrayTarget, } from "./arrayBoundsCore.js";
2
+ import { statementExitsControlFlow } from "./controlFlowGuards.js";
3
+ import { unwrapExpression } from "./values.js";
4
+ /**
5
+ * Checks if an array is locally constructed with a known initial length and guaranteed loop pushes,
6
+ * proving that an element access is strictly in-bounds.
7
+ */
8
+ function isConstructedArrayCardinalityBoundedIndex(node, operand, ts, checker) {
9
+ const arrayTarget = normalizeArrayTarget(operand.expression, ts, checker);
10
+ if (!arrayTarget)
11
+ return undefined;
12
+ const unwrappedArray = unwrapExpression(operand.expression, ts);
13
+ if (!ts.isIdentifier(unwrappedArray))
14
+ return undefined;
15
+ let symbol = checker?.getSymbolAtLocation(unwrappedArray);
16
+ if (!symbol)
17
+ return undefined;
18
+ if (symbol.flags & ts.SymbolFlags.Alias) {
19
+ try {
20
+ symbol = checker?.getAliasedSymbol(symbol);
21
+ }
22
+ catch {
23
+ // ignore
24
+ }
25
+ }
26
+ const decls = symbol?.getDeclarations();
27
+ if (!decls || decls.length === 0)
28
+ return undefined;
29
+ const decl = decls[0];
30
+ if (!decl || !ts.isVariableDeclaration(decl) || !decl.initializer)
31
+ return undefined;
32
+ const init = unwrapExpression(decl.initializer, ts);
33
+ if (!ts.isArrayLiteralExpression(init))
34
+ return undefined;
35
+ const initialLength = init.elements.length;
36
+ // Find the block or source file containing the declaration
37
+ let declScope = decl;
38
+ while (declScope.parent && !ts.isBlock(declScope.parent) && !ts.isSourceFile(declScope.parent)) {
39
+ declScope = declScope.parent;
40
+ }
41
+ const container = declScope.parent;
42
+ if (!container || (!ts.isBlock(container) && !ts.isSourceFile(container)))
43
+ return undefined;
44
+ const stmts = container.statements;
45
+ const declIdx = stmts.indexOf(declScope);
46
+ if (declIdx === -1)
47
+ return undefined;
48
+ // Find the top-level statement in `container` that contains `node`
49
+ let nodeScope = node;
50
+ while (nodeScope.parent && nodeScope.parent !== container) {
51
+ nodeScope = nodeScope.parent;
52
+ }
53
+ const targetIdx = stmts.indexOf(nodeScope);
54
+ if (targetIdx === -1 || targetIdx < declIdx)
55
+ return undefined;
56
+ // Look for an intervening ForStatement that unconditionally pushes to arrayTarget
57
+ for (let sIdx = declIdx + 1; sIdx <= targetIdx; sIdx++) {
58
+ const candidateStmt = stmts[sIdx];
59
+ if (!candidateStmt)
60
+ continue;
61
+ if (ts.isForStatement(candidateStmt)) {
62
+ const forStmt = candidateStmt;
63
+ // 1. Initializer: let i = 0
64
+ let initVal = 0;
65
+ let loopVarName;
66
+ if (forStmt.initializer && ts.isVariableDeclarationList(forStmt.initializer)) {
67
+ const d = forStmt.initializer.declarations[0];
68
+ if (d && ts.isIdentifier(d.name)) {
69
+ loopVarName = d.name.text;
70
+ if (d.initializer && ts.isNumericLiteral(d.initializer)) {
71
+ initVal = Number(d.initializer.text);
72
+ }
73
+ }
74
+ }
75
+ if (!loopVarName || initVal !== 0)
76
+ continue;
77
+ // 2. Condition: i < N or i <= N - 1
78
+ if (!forStmt.condition)
79
+ continue;
80
+ const cond = unwrapExpression(forStmt.condition, ts);
81
+ if (!ts.isBinaryExpression(cond))
82
+ continue;
83
+ const condLeft = unwrapExpression(cond.left, ts);
84
+ if (!ts.isIdentifier(condLeft) || condLeft.text !== loopVarName)
85
+ continue;
86
+ const condOp = cond.operatorToken.kind;
87
+ const condRight = unwrapExpression(cond.right, ts);
88
+ let symbolicBoundText;
89
+ let constantBoundValue;
90
+ if (condOp === ts.SyntaxKind.LessThanToken) {
91
+ if (ts.isIdentifier(condRight)) {
92
+ symbolicBoundText = condRight.text;
93
+ }
94
+ else if (ts.isNumericLiteral(condRight)) {
95
+ constantBoundValue = Number(condRight.text);
96
+ }
97
+ }
98
+ else if (condOp === ts.SyntaxKind.LessThanEqualsToken) {
99
+ if (ts.isBinaryExpression(condRight) && condRight.operatorToken.kind === ts.SyntaxKind.MinusToken) {
100
+ const rLeft = unwrapExpression(condRight.left, ts);
101
+ const rRight = unwrapExpression(condRight.right, ts);
102
+ if (ts.isNumericLiteral(rRight) && rRight.text === "1") {
103
+ if (ts.isIdentifier(rLeft)) {
104
+ symbolicBoundText = rLeft.text;
105
+ }
106
+ else if (ts.isNumericLiteral(rLeft)) {
107
+ constantBoundValue = Number(rLeft.text);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ if (!symbolicBoundText && constantBoundValue === undefined)
113
+ continue;
114
+ // 3. Loop body invariant: no control flow exits (break, continue, return, throw)
115
+ if (containsControlFlowExit(forStmt.statement, ts))
116
+ continue;
117
+ // 4. Count unconditional pushes to arrayTarget in the loop body
118
+ const pushCount = countUnconditionalPushes(forStmt.statement, arrayTarget.text, ts, checker, symbol);
119
+ if (pushCount === 0)
120
+ continue;
121
+ // 5. Ensure no mutating operations on arrayTarget occurred between forStmt and nodeScope
122
+ let hasInterveningMutation = false;
123
+ for (let m = sIdx + 1; m < targetIdx; m++) {
124
+ const stmt = stmts[m];
125
+ if (stmt && hasArrayMutation(stmt, arrayTarget.text, ts, checker, symbol)) {
126
+ hasInterveningMutation = true;
127
+ break;
128
+ }
129
+ }
130
+ if (hasInterveningMutation)
131
+ continue;
132
+ // Check if inside nodeScope itself (before node) there is a mutation
133
+ if (hasMutationBeforeNode(nodeScope, node, arrayTarget.text, ts, checker, symbol)) {
134
+ continue;
135
+ }
136
+ const indexArg = unwrapExpression(operand.argumentExpression, ts);
137
+ // Case A: Symbolic index matching loop bound N (e.g. amplitudes[numLayers]!)
138
+ // Requires initialLength >= 1 and pushCount >= 1
139
+ if (symbolicBoundText && ts.isIdentifier(indexArg) && indexArg.text === symbolicBoundText) {
140
+ if (initialLength >= 1 && pushCount >= 1) {
141
+ return {
142
+ isGuarded: true,
143
+ evidence: `Array '${arrayTarget.text}' is constructed with ${initialLength} initial element(s) and ${symbolicBoundText} guaranteed pushes, proving index '${symbolicBoundText}' is in-bounds.`,
144
+ };
145
+ }
146
+ }
147
+ // Case B: Literal numeric index matching constant loop bound C (e.g. coeffs[0]! where coeffs has 8 rows)
148
+ if (constantBoundValue !== undefined && ts.isNumericLiteral(indexArg)) {
149
+ const requestedIndex = Number(indexArg.text);
150
+ const guaranteedTotalLength = initialLength + constantBoundValue * pushCount;
151
+ if (Number.isInteger(requestedIndex) && requestedIndex >= 0 && requestedIndex < guaranteedTotalLength) {
152
+ return {
153
+ isGuarded: true,
154
+ evidence: `Array '${arrayTarget.text}' is constructed with guaranteed length ${guaranteedTotalLength}, proving index ${requestedIndex} is in-bounds.`,
155
+ };
156
+ }
157
+ }
158
+ }
159
+ }
160
+ return undefined;
161
+ }
162
+ function isInitialNegativeOrUndefined(expr, ts) {
163
+ if (ts.isPrefixUnaryExpression(expr) && expr.operator === ts.SyntaxKind.MinusToken) {
164
+ if (ts.isNumericLiteral(expr.operand) && expr.operand.text === "1") {
165
+ return true;
166
+ }
167
+ }
168
+ if (expr.kind === ts.SyntaxKind.UndefinedKeyword || expr.kind === ts.SyntaxKind.NullKeyword) {
169
+ return true;
170
+ }
171
+ if (ts.isIdentifier(expr) && expr.text === "undefined") {
172
+ return true;
173
+ }
174
+ return false;
175
+ }
176
+ function isExitNegativeCheckForIndex(cond, indexName, ts) {
177
+ const disjuncts = [];
178
+ function collectOrs(e) {
179
+ const u = unwrapExpression(e, ts);
180
+ if (ts.isBinaryExpression(u) && u.operatorToken.kind === ts.SyntaxKind.BarBarToken) {
181
+ collectOrs(u.left);
182
+ collectOrs(u.right);
183
+ }
184
+ else {
185
+ disjuncts.push(u);
186
+ }
187
+ }
188
+ collectOrs(cond);
189
+ return disjuncts.some((d) => {
190
+ const u = unwrapExpression(d, ts);
191
+ if (!ts.isBinaryExpression(u))
192
+ return false;
193
+ const left = unwrapExpression(u.left, ts);
194
+ const right = unwrapExpression(u.right, ts);
195
+ const op = u.operatorToken.kind;
196
+ // index === -1 or -1 === index
197
+ if (op === ts.SyntaxKind.EqualsEqualsToken || op === ts.SyntaxKind.EqualsEqualsEqualsToken) {
198
+ if (ts.isIdentifier(left) && left.text === indexName) {
199
+ if (ts.isPrefixUnaryExpression(right) && right.operator === ts.SyntaxKind.MinusToken && ts.isNumericLiteral(right.operand) && right.operand.text === "1") {
200
+ return true;
201
+ }
202
+ }
203
+ if (ts.isIdentifier(right) && right.text === indexName) {
204
+ if (ts.isPrefixUnaryExpression(left) && left.operator === ts.SyntaxKind.MinusToken && ts.isNumericLiteral(left.operand) && left.operand.text === "1") {
205
+ return true;
206
+ }
207
+ }
208
+ }
209
+ // index < 0 or index <= -1
210
+ if (op === ts.SyntaxKind.LessThanToken) {
211
+ if (ts.isIdentifier(left) && left.text === indexName && ts.isNumericLiteral(right) && right.text === "0") {
212
+ return true;
213
+ }
214
+ }
215
+ if (op === ts.SyntaxKind.LessThanEqualsToken) {
216
+ if (ts.isIdentifier(left) && left.text === indexName) {
217
+ if (ts.isPrefixUnaryExpression(right) && right.operator === ts.SyntaxKind.MinusToken && ts.isNumericLiteral(right.operand) && right.operand.text === "1") {
218
+ return true;
219
+ }
220
+ }
221
+ }
222
+ return false;
223
+ });
224
+ }
225
+ /**
226
+ * Checks if an index variable originates exclusively from a bounded loop search over a source array,
227
+ * with a dominating guard proving non-negative return and matching target array.
228
+ */
229
+ function isSearchProvenanceBoundedIndex(node, operand, ts, checker) {
230
+ const targetArray = normalizeArrayTarget(operand.expression, ts, checker);
231
+ if (!targetArray)
232
+ return undefined;
233
+ const indexArg = unwrapExpression(operand.argumentExpression, ts);
234
+ if (!ts.isIdentifier(indexArg))
235
+ return undefined;
236
+ const indexName = indexArg.text;
237
+ let symbol = checker?.getSymbolAtLocation(indexArg);
238
+ if (!symbol)
239
+ return undefined;
240
+ if (symbol.flags & ts.SymbolFlags.Alias) {
241
+ try {
242
+ symbol = checker?.getAliasedSymbol(symbol);
243
+ }
244
+ catch {
245
+ // ignore
246
+ }
247
+ }
248
+ const decls = symbol?.getDeclarations();
249
+ if (!decls || decls.length === 0)
250
+ return undefined;
251
+ const rawDecl = decls[0];
252
+ if (!rawDecl || !ts.isVariableDeclaration(rawDecl))
253
+ return undefined;
254
+ const varDecl = rawDecl;
255
+ // Find the scope where index variable is declared
256
+ let scope = varDecl;
257
+ while (scope.parent && !ts.isBlock(scope.parent) && !ts.isSourceFile(scope.parent)) {
258
+ scope = scope.parent;
259
+ }
260
+ const container = scope.parent;
261
+ if (!container || (!ts.isBlock(container) && !ts.isSourceFile(container)))
262
+ return undefined;
263
+ // Collect all assignments to indexName in container
264
+ let sourceArrayText;
265
+ let sourceArraySymbol;
266
+ let invalidAssignment = false;
267
+ let hasValidLoopAssignment = false;
268
+ function analyzeAssignments(n) {
269
+ if (invalidAssignment)
270
+ return;
271
+ // Check initializer of the declaration: let victimIdx = -1
272
+ if (n === varDecl) {
273
+ if (varDecl.initializer) {
274
+ const initVal = unwrapExpression(varDecl.initializer, ts);
275
+ if (!isInitialNegativeOrUndefined(initVal, ts)) {
276
+ invalidAssignment = true;
277
+ return;
278
+ }
279
+ }
280
+ return;
281
+ }
282
+ // Check binary assignments: victimIdx = ...
283
+ if (ts.isBinaryExpression(n) && n.operatorToken.kind === ts.SyntaxKind.EqualsToken) {
284
+ const left = unwrapExpression(n.left, ts);
285
+ if (ts.isIdentifier(left) && left.text === indexName) {
286
+ const right = unwrapExpression(n.right, ts);
287
+ // Case 1: Reset value: -1, undefined, null
288
+ if (isInitialNegativeOrUndefined(right, ts)) {
289
+ return;
290
+ }
291
+ // Case 2: Loop variable assignment inside for (let i = 0; i < sourceArr.length; i++)
292
+ let forNode = n;
293
+ let enclosingFor;
294
+ while (forNode.parent && forNode.parent !== container) {
295
+ if (ts.isForStatement(forNode.parent)) {
296
+ enclosingFor = forNode.parent;
297
+ break;
298
+ }
299
+ forNode = forNode.parent;
300
+ }
301
+ if (enclosingFor && enclosingFor.condition && ts.isBinaryExpression(enclosingFor.condition)) {
302
+ // Check that right is the loop variable
303
+ let loopVar;
304
+ if (enclosingFor.initializer && ts.isVariableDeclarationList(enclosingFor.initializer)) {
305
+ const d = enclosingFor.initializer.declarations[0];
306
+ if (d && ts.isIdentifier(d.name)) {
307
+ loopVar = d.name.text;
308
+ }
309
+ }
310
+ if (loopVar && ts.isIdentifier(right) && right.text === loopVar) {
311
+ // Check condition: loopVar < sourceArr.length
312
+ const cond = enclosingFor.condition;
313
+ const condLeft = unwrapExpression(cond.left, ts);
314
+ const condRight = unwrapExpression(cond.right, ts);
315
+ if (ts.isIdentifier(condLeft) &&
316
+ condLeft.text === loopVar &&
317
+ cond.operatorToken.kind === ts.SyntaxKind.LessThanToken &&
318
+ ts.isPropertyAccessExpression(condRight) &&
319
+ condRight.name.text === "length") {
320
+ const src = normalizeArrayTarget(condRight.expression, ts, checker);
321
+ if (src) {
322
+ if (!sourceArrayText) {
323
+ sourceArrayText = src.text;
324
+ sourceArraySymbol = src.symbol;
325
+ }
326
+ else if (sourceArrayText !== src.text) {
327
+ invalidAssignment = true;
328
+ return;
329
+ }
330
+ hasValidLoopAssignment = true;
331
+ return;
332
+ }
333
+ }
334
+ }
335
+ }
336
+ // Any other assignment to indexName is untrusted
337
+ invalidAssignment = true;
338
+ return;
339
+ }
340
+ }
341
+ n.forEachChild(analyzeAssignments);
342
+ }
343
+ analyzeAssignments(container);
344
+ if (invalidAssignment || !hasValidLoopAssignment || !sourceArrayText) {
345
+ return undefined;
346
+ }
347
+ // Check relationship between targetArray and sourceArray:
348
+ // Either targetArray === sourceArray, OR targetArray is derived from sourceArray preserving length:
349
+ // e.g. const copy = prev.map(...) or [...prev] or prev.slice()
350
+ let arraysMatch = false;
351
+ if (sourceArraySymbol && targetArray.symbol && sourceArraySymbol === targetArray.symbol) {
352
+ arraysMatch = true;
353
+ }
354
+ else if (sourceArrayText === targetArray.text) {
355
+ arraysMatch = true;
356
+ }
357
+ else if (targetArray.symbol) {
358
+ const tDecls = targetArray.symbol.getDeclarations();
359
+ if (tDecls && tDecls.length > 0) {
360
+ const firstTDecl = tDecls[0];
361
+ if (firstTDecl && ts.isVariableDeclaration(firstTDecl)) {
362
+ const tInit = firstTDecl.initializer ? unwrapExpression(firstTDecl.initializer, ts) : undefined;
363
+ if (tInit) {
364
+ // Form 1: prev.map(...) or prev.slice()
365
+ if (ts.isCallExpression(tInit) && ts.isPropertyAccessExpression(tInit.expression)) {
366
+ const method = tInit.expression.name.text;
367
+ if (method === "map" || (method === "slice" && tInit.arguments.length === 0)) {
368
+ const baseArr = normalizeArrayTarget(tInit.expression.expression, ts, checker);
369
+ if (baseArr && (baseArr.text === sourceArrayText || (sourceArraySymbol && baseArr.symbol === sourceArraySymbol))) {
370
+ arraysMatch = true;
371
+ }
372
+ }
373
+ }
374
+ // Form 2: [...prev]
375
+ if (ts.isArrayLiteralExpression(tInit) && tInit.elements.length === 1) {
376
+ const elem = tInit.elements[0];
377
+ if (elem && ts.isSpreadElement(elem)) {
378
+ const baseArr = normalizeArrayTarget(elem.expression, ts, checker);
379
+ if (baseArr && (baseArr.text === sourceArrayText || (sourceArraySymbol && baseArr.symbol === sourceArraySymbol))) {
380
+ arraysMatch = true;
381
+ }
382
+ }
383
+ }
384
+ // Form 3: Array.from(prev)
385
+ if (ts.isCallExpression(tInit) && ts.isPropertyAccessExpression(tInit.expression)) {
386
+ if (tInit.expression.name.text === "from" && tInit.arguments.length >= 1) {
387
+ const firstArg = tInit.arguments[0];
388
+ if (firstArg) {
389
+ const baseArr = normalizeArrayTarget(firstArg, ts, checker);
390
+ if (baseArr && (baseArr.text === sourceArrayText || (sourceArraySymbol && baseArr.symbol === sourceArraySymbol))) {
391
+ arraysMatch = true;
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
397
+ }
398
+ }
399
+ }
400
+ if (!arraysMatch)
401
+ return undefined;
402
+ // Check dominating exit guard:
403
+ // Find top statement in container enclosing node
404
+ let nodeScope = node;
405
+ while (nodeScope.parent && nodeScope.parent !== container) {
406
+ nodeScope = nodeScope.parent;
407
+ }
408
+ const stmts = container.statements;
409
+ const targetIdx = stmts.indexOf(nodeScope);
410
+ if (targetIdx <= 0)
411
+ return undefined;
412
+ let guardIdx = -1;
413
+ let guardEvidence = "";
414
+ for (let i = 0; i < targetIdx; i++) {
415
+ const prior = stmts[i];
416
+ if (!prior)
417
+ continue;
418
+ if (ts.isIfStatement(prior) && statementExitsControlFlow(prior.thenStatement, ts)) {
419
+ const cond = prior.expression;
420
+ if (isExitNegativeCheckForIndex(cond, indexName, ts)) {
421
+ guardIdx = i;
422
+ guardEvidence = `Dominating guard '${cond.getText()}' establishes '${indexName}' is a valid search index for '${targetArray.text}'.`;
423
+ break;
424
+ }
425
+ }
426
+ }
427
+ if (guardIdx === -1)
428
+ return undefined;
429
+ // Verify no mutations on sourceArray or targetArray between guard and node
430
+ for (let i = guardIdx + 1; i < targetIdx; i++) {
431
+ const s = stmts[i];
432
+ if (s) {
433
+ if (hasArrayMutation(s, targetArray.text, ts, checker, targetArray.symbol))
434
+ return undefined;
435
+ if (hasArrayMutation(s, sourceArrayText, ts, checker, sourceArraySymbol))
436
+ return undefined;
437
+ }
438
+ }
439
+ return {
440
+ isGuarded: true,
441
+ evidence: guardEvidence,
442
+ };
443
+ }
444
+ export { isConstructedArrayCardinalityBoundedIndex, isSearchProvenanceBoundedIndex, };
445
+ //# sourceMappingURL=arrayConstructionBounds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrayConstructionBounds.js","sourceRoot":"","sources":["../../src/analysis/arrayConstructionBounds.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type * as tsType from "typescript";
2
+ import type { GuardCheckResult } from "./controlFlowTypes.js";
3
+ /**
4
+ * Checks if an element access index is bounded by an enclosing for-loop or array iteration callback.
5
+ */
6
+ declare function isLoopOrCallbackBoundedIndex(node: tsType.NonNullExpression, operand: tsType.ElementAccessExpression, ts: typeof tsType, checker?: tsType.TypeChecker | undefined): GuardCheckResult | undefined;
7
+ /**
8
+ * Checks if an element access index is the result of array.findIndex() proven non-negative by dominating guard.
9
+ */
10
+ declare function isFindIndexBoundedIndex(node: tsType.NonNullExpression, operand: tsType.ElementAccessExpression, ts: typeof tsType, checker?: tsType.TypeChecker | undefined): GuardCheckResult | undefined;
11
+ export { isFindIndexBoundedIndex, isLoopOrCallbackBoundedIndex, };
12
+ //# sourceMappingURL=arrayIterationBounds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrayIterationBounds.d.ts","sourceRoot":"","sources":["../../src/analysis/arrayIterationBounds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,YAAY,CAAC;AAa1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AA8D9D;;GAEG;AACH,iBAAS,4BAA4B,CACnC,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAC9B,OAAO,EAAE,MAAM,CAAC,uBAAuB,EACvC,EAAE,EAAE,OAAO,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,GACvC,gBAAgB,GAAG,SAAS,CAyW9B;AAGD;;GAEG;AACH,iBAAS,uBAAuB,CAC9B,IAAI,EAAE,MAAM,CAAC,iBAAiB,EAC9B,OAAO,EAAE,MAAM,CAAC,uBAAuB,EACvC,EAAE,EAAE,OAAO,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,SAAS,GACvC,gBAAgB,GAAG,SAAS,CAgN9B;AAED,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,CAAC"}