sela-core 0.1.0-alpha.1
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/README.md +103 -0
- package/bin/sela.js +3 -0
- package/dist/cli/ErrorHandler.d.ts +10 -0
- package/dist/cli/ErrorHandler.d.ts.map +1 -0
- package/dist/cli/ErrorHandler.js +70 -0
- package/dist/cli/commands/bulk.d.ts +3 -0
- package/dist/cli/commands/bulk.d.ts.map +1 -0
- package/dist/cli/commands/bulk.js +158 -0
- package/dist/cli/commands/find.d.ts +3 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +51 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +166 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +56 -0
- package/dist/cli/commands/merge.d.ts +13 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +119 -0
- package/dist/cli/commands/refactor.d.ts +3 -0
- package/dist/cli/commands/refactor.d.ts.map +1 -0
- package/dist/cli/commands/refactor.js +30 -0
- package/dist/cli/commands/showReport.d.ts +3 -0
- package/dist/cli/commands/showReport.d.ts.map +1 -0
- package/dist/cli/commands/showReport.js +82 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +51 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +131 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +94 -0
- package/dist/cli/ui/DnaTable.d.ts +3 -0
- package/dist/cli/ui/DnaTable.d.ts.map +1 -0
- package/dist/cli/ui/DnaTable.js +77 -0
- package/dist/cli/ui/LocatorPicker.d.ts +8 -0
- package/dist/cli/ui/LocatorPicker.d.ts.map +1 -0
- package/dist/cli/ui/LocatorPicker.js +33 -0
- package/dist/cli/ui/ProgressReporter.d.ts +11 -0
- package/dist/cli/ui/ProgressReporter.d.ts.map +1 -0
- package/dist/cli/ui/ProgressReporter.js +33 -0
- package/dist/cli/ui/RefactorWizard.d.ts +26 -0
- package/dist/cli/ui/RefactorWizard.d.ts.map +1 -0
- package/dist/cli/ui/RefactorWizard.js +295 -0
- package/dist/config/ConfigLoader.d.ts +16 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -0
- package/dist/config/ConfigLoader.js +185 -0
- package/dist/config/DryRunGuard.d.ts +14 -0
- package/dist/config/DryRunGuard.d.ts.map +1 -0
- package/dist/config/DryRunGuard.js +80 -0
- package/dist/config/PathScopeGuard.d.ts +42 -0
- package/dist/config/PathScopeGuard.d.ts.map +1 -0
- package/dist/config/PathScopeGuard.js +192 -0
- package/dist/config/SelaConfig.d.ts +178 -0
- package/dist/config/SelaConfig.d.ts.map +1 -0
- package/dist/config/SelaConfig.js +141 -0
- package/dist/config/defineConfig.d.ts +3 -0
- package/dist/config/defineConfig.d.ts.map +1 -0
- package/dist/config/defineConfig.js +9 -0
- package/dist/engine/FixwrightEngine.d.ts +24 -0
- package/dist/engine/FixwrightEngine.d.ts.map +1 -0
- package/dist/engine/FixwrightEngine.js +403 -0
- package/dist/engine/HealingRegistry.d.ts +40 -0
- package/dist/engine/HealingRegistry.d.ts.map +1 -0
- package/dist/engine/HealingRegistry.js +99 -0
- package/dist/engine/SelaEngine.d.ts +57 -0
- package/dist/engine/SelaEngine.d.ts.map +1 -0
- package/dist/engine/SelaEngine.js +1146 -0
- package/dist/engine/singleton.d.ts +3 -0
- package/dist/engine/singleton.d.ts.map +1 -0
- package/dist/engine/singleton.js +5 -0
- package/dist/errors/SelaError.d.ts +146 -0
- package/dist/errors/SelaError.d.ts.map +1 -0
- package/dist/errors/SelaError.js +168 -0
- package/dist/fixtures/expectProxy.d.ts +12 -0
- package/dist/fixtures/expectProxy.d.ts.map +1 -0
- package/dist/fixtures/expectProxy.js +246 -0
- package/dist/fixtures/index.d.ts +30 -0
- package/dist/fixtures/index.d.ts.map +1 -0
- package/dist/fixtures/index.js +765 -0
- package/dist/fixtures/moduleExpect.d.ts +2 -0
- package/dist/fixtures/moduleExpect.d.ts.map +1 -0
- package/dist/fixtures/moduleExpect.js +54 -0
- package/dist/fixtures/proxyTag.d.ts +12 -0
- package/dist/fixtures/proxyTag.d.ts.map +1 -0
- package/dist/fixtures/proxyTag.js +45 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/reporter/SelaReporter.d.ts +165 -0
- package/dist/reporter/SelaReporter.d.ts.map +1 -0
- package/dist/reporter/SelaReporter.js +517 -0
- package/dist/services/ASTSourceUpdater.d.ts +143 -0
- package/dist/services/ASTSourceUpdater.d.ts.map +1 -0
- package/dist/services/ASTSourceUpdater.js +3514 -0
- package/dist/services/AnchorResolver.d.ts +157 -0
- package/dist/services/AnchorResolver.d.ts.map +1 -0
- package/dist/services/AnchorResolver.js +289 -0
- package/dist/services/ArgumentTypeAnalyzer.d.ts +26 -0
- package/dist/services/ArgumentTypeAnalyzer.d.ts.map +1 -0
- package/dist/services/ArgumentTypeAnalyzer.js +92 -0
- package/dist/services/BlastRadiusAnalyzer.d.ts +15 -0
- package/dist/services/BlastRadiusAnalyzer.d.ts.map +1 -0
- package/dist/services/BlastRadiusAnalyzer.js +107 -0
- package/dist/services/ChainValidator.d.ts +76 -0
- package/dist/services/ChainValidator.d.ts.map +1 -0
- package/dist/services/ChainValidator.js +570 -0
- package/dist/services/CrossFileHealer.d.ts +6 -0
- package/dist/services/CrossFileHealer.d.ts.map +1 -0
- package/dist/services/CrossFileHealer.js +135 -0
- package/dist/services/DecisionEngine.d.ts +51 -0
- package/dist/services/DecisionEngine.d.ts.map +1 -0
- package/dist/services/DecisionEngine.js +260 -0
- package/dist/services/DefinitionTracer.d.ts +41 -0
- package/dist/services/DefinitionTracer.d.ts.map +1 -0
- package/dist/services/DefinitionTracer.js +366 -0
- package/dist/services/DnaEditorService.d.ts +31 -0
- package/dist/services/DnaEditorService.d.ts.map +1 -0
- package/dist/services/DnaEditorService.js +217 -0
- package/dist/services/DnaIndexService.d.ts +24 -0
- package/dist/services/DnaIndexService.d.ts.map +1 -0
- package/dist/services/DnaIndexService.js +131 -0
- package/dist/services/HealBudget.d.ts +32 -0
- package/dist/services/HealBudget.d.ts.map +1 -0
- package/dist/services/HealBudget.js +85 -0
- package/dist/services/HealReportService.d.ts +161 -0
- package/dist/services/HealReportService.d.ts.map +1 -0
- package/dist/services/HealReportService.js +1039 -0
- package/dist/services/HealingAdvisory.d.ts +30 -0
- package/dist/services/HealingAdvisory.d.ts.map +1 -0
- package/dist/services/HealingAdvisory.js +51 -0
- package/dist/services/HealingCacheService.d.ts +135 -0
- package/dist/services/HealingCacheService.d.ts.map +1 -0
- package/dist/services/HealingCacheService.js +404 -0
- package/dist/services/HealthReportService.d.ts +10 -0
- package/dist/services/HealthReportService.d.ts.map +1 -0
- package/dist/services/HealthReportService.js +84 -0
- package/dist/services/InitializerUpdater.d.ts +16 -0
- package/dist/services/InitializerUpdater.d.ts.map +1 -0
- package/dist/services/InitializerUpdater.js +73 -0
- package/dist/services/IntentAuditor.d.ts +56 -0
- package/dist/services/IntentAuditor.d.ts.map +1 -0
- package/dist/services/IntentAuditor.js +326 -0
- package/dist/services/InteractiveReview.d.ts +15 -0
- package/dist/services/InteractiveReview.d.ts.map +1 -0
- package/dist/services/InteractiveReview.js +128 -0
- package/dist/services/LLMService.d.ts +121 -0
- package/dist/services/LLMService.d.ts.map +1 -0
- package/dist/services/LLMService.js +475 -0
- package/dist/services/MutationApplier.d.ts +69 -0
- package/dist/services/MutationApplier.d.ts.map +1 -0
- package/dist/services/MutationApplier.js +360 -0
- package/dist/services/PRAutomationService.d.ts +50 -0
- package/dist/services/PRAutomationService.d.ts.map +1 -0
- package/dist/services/PRAutomationService.js +760 -0
- package/dist/services/PendingPromptLedger.d.ts +51 -0
- package/dist/services/PendingPromptLedger.d.ts.map +1 -0
- package/dist/services/PendingPromptLedger.js +205 -0
- package/dist/services/ReportGenerator.d.ts +156 -0
- package/dist/services/ReportGenerator.d.ts.map +1 -0
- package/dist/services/ReportGenerator.js +278 -0
- package/dist/services/ReportMergeService.d.ts +95 -0
- package/dist/services/ReportMergeService.d.ts.map +1 -0
- package/dist/services/ReportMergeService.js +0 -0
- package/dist/services/SafetyGuard.d.ts +112 -0
- package/dist/services/SafetyGuard.d.ts.map +1 -0
- package/dist/services/SafetyGuard.js +87 -0
- package/dist/services/Sanitizer.d.ts +28 -0
- package/dist/services/Sanitizer.d.ts.map +1 -0
- package/dist/services/Sanitizer.js +142 -0
- package/dist/services/SanitizingAnthropic.d.ts +19 -0
- package/dist/services/SanitizingAnthropic.d.ts.map +1 -0
- package/dist/services/SanitizingAnthropic.js +84 -0
- package/dist/services/SelectorSanitizer.d.ts +52 -0
- package/dist/services/SelectorSanitizer.d.ts.map +1 -0
- package/dist/services/SelectorSanitizer.js +318 -0
- package/dist/services/SnapshotService.d.ts +11 -0
- package/dist/services/SnapshotService.d.ts.map +1 -0
- package/dist/services/SnapshotService.js +352 -0
- package/dist/services/SourceLinkService.d.ts +26 -0
- package/dist/services/SourceLinkService.d.ts.map +1 -0
- package/dist/services/SourceLinkService.js +165 -0
- package/dist/services/SourceUpdater.d.ts +45 -0
- package/dist/services/SourceUpdater.d.ts.map +1 -0
- package/dist/services/SourceUpdater.js +1091 -0
- package/dist/services/TemplateDiffService.d.ts +25 -0
- package/dist/services/TemplateDiffService.d.ts.map +1 -0
- package/dist/services/TemplateDiffService.js +334 -0
- package/dist/services/TraceBackEngine.d.ts +67 -0
- package/dist/services/TraceBackEngine.d.ts.map +1 -0
- package/dist/services/TraceBackEngine.js +672 -0
- package/dist/services/WorkspaceSnapshotService.d.ts +71 -0
- package/dist/services/WorkspaceSnapshotService.d.ts.map +1 -0
- package/dist/services/WorkspaceSnapshotService.js +200 -0
- package/dist/services/safety/PipelineContext.d.ts +63 -0
- package/dist/services/safety/PipelineContext.d.ts.map +1 -0
- package/dist/services/safety/PipelineContext.js +34 -0
- package/dist/services/safety/roleClassifier.d.ts +4 -0
- package/dist/services/safety/roleClassifier.d.ts.map +1 -0
- package/dist/services/safety/roleClassifier.js +233 -0
- package/dist/services/safety/rules/ConfidenceTierRule.d.ts +3 -0
- package/dist/services/safety/rules/ConfidenceTierRule.d.ts.map +1 -0
- package/dist/services/safety/rules/ConfidenceTierRule.js +32 -0
- package/dist/services/safety/rules/DangerousSinkRule.d.ts +10 -0
- package/dist/services/safety/rules/DangerousSinkRule.d.ts.map +1 -0
- package/dist/services/safety/rules/DangerousSinkRule.js +53 -0
- package/dist/services/safety/rules/FunctionalRoleRule.d.ts +3 -0
- package/dist/services/safety/rules/FunctionalRoleRule.d.ts.map +1 -0
- package/dist/services/safety/rules/FunctionalRoleRule.js +64 -0
- package/dist/services/safety/rules/HardConfidenceRule.d.ts +3 -0
- package/dist/services/safety/rules/HardConfidenceRule.d.ts.map +1 -0
- package/dist/services/safety/rules/HardConfidenceRule.js +22 -0
- package/dist/services/safety/rules/IntentAuditorRule.d.ts +3 -0
- package/dist/services/safety/rules/IntentAuditorRule.d.ts.map +1 -0
- package/dist/services/safety/rules/IntentAuditorRule.js +97 -0
- package/dist/services/safety/rules/SemanticOppositeRule.d.ts +3 -0
- package/dist/services/safety/rules/SemanticOppositeRule.d.ts.map +1 -0
- package/dist/services/safety/rules/SemanticOppositeRule.js +30 -0
- package/dist/services/safety/rules/StructuralOnlyRule.d.ts +3 -0
- package/dist/services/safety/rules/StructuralOnlyRule.d.ts.map +1 -0
- package/dist/services/safety/rules/StructuralOnlyRule.js +38 -0
- package/dist/services/safety/rules/VisibilityRule.d.ts +3 -0
- package/dist/services/safety/rules/VisibilityRule.d.ts.map +1 -0
- package/dist/services/safety/rules/VisibilityRule.js +53 -0
- package/dist/services/safety/rules/ZeroTrustRule.d.ts +3 -0
- package/dist/services/safety/rules/ZeroTrustRule.d.ts.map +1 -0
- package/dist/services/safety/rules/ZeroTrustRule.js +37 -0
- package/dist/services/safety/rules/index.d.ts +3 -0
- package/dist/services/safety/rules/index.d.ts.map +1 -0
- package/dist/services/safety/rules/index.js +34 -0
- package/dist/services/types.d.ts +59 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/types.js +2 -0
- package/dist/storage/SnapshotManager.d.ts +5 -0
- package/dist/storage/SnapshotManager.d.ts.map +1 -0
- package/dist/storage/SnapshotManager.js +32 -0
- package/dist/types/index.d.ts +95 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/utils/DOMUtils.d.ts +49 -0
- package/dist/utils/DOMUtils.d.ts.map +1 -0
- package/dist/utils/DOMUtils.js +466 -0
- package/dist/utils/FileLock.d.ts +44 -0
- package/dist/utils/FileLock.d.ts.map +1 -0
- package/dist/utils/FileLock.js +189 -0
- package/dist/utils/IsolatedDiff.d.ts +45 -0
- package/dist/utils/IsolatedDiff.d.ts.map +1 -0
- package/dist/utils/IsolatedDiff.js +382 -0
- package/dist/utils/StackUtils.d.ts +11 -0
- package/dist/utils/StackUtils.d.ts.map +1 -0
- package/dist/utils/StackUtils.js +120 -0
- package/dist/utils/SummaryTable.d.ts +17 -0
- package/dist/utils/SummaryTable.d.ts.map +1 -0
- package/dist/utils/SummaryTable.js +37 -0
- package/dist/utils/atomicWrite.d.ts +9 -0
- package/dist/utils/atomicWrite.d.ts.map +1 -0
- package/dist/utils/atomicWrite.js +83 -0
- package/dist/utils/logger.d.ts +59 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +123 -0
- package/dist/vendor/enquirer.d.ts +33 -0
- package/dist/vendor/enquirer.d.ts.map +1 -0
- package/dist/vendor/enquirer.js +11 -0
- package/package.json +71 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BlastRadiusAnalyzer = void 0;
|
|
4
|
+
const ts_morph_1 = require("ts-morph");
|
|
5
|
+
const logger_1 = require("../utils/logger");
|
|
6
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
7
|
+
// BlastRadiusAnalyzer
|
|
8
|
+
//
|
|
9
|
+
// Before mutating a definition-site node, determine how many tests
|
|
10
|
+
// reference it. Uses ts-morph's findReferences() for cross-file
|
|
11
|
+
// accuracy. On any analysis failure, defaults to risk:'low' and logs
|
|
12
|
+
// a warning - never blocks healing due to analysis error.
|
|
13
|
+
// ═══════════════════════════════════════════════════════════════════
|
|
14
|
+
class BlastRadiusAnalyzer {
|
|
15
|
+
static analyze(declarationNode, _sourceFile, _project) {
|
|
16
|
+
try {
|
|
17
|
+
return BlastRadiusAnalyzer.doAnalyze(declarationNode);
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
logger_1.logger.warn(`BlastRadius analysis failed, defaulting to low risk: ${e.message}`);
|
|
21
|
+
return {
|
|
22
|
+
totalReferences: 0,
|
|
23
|
+
testFunctionCount: 0,
|
|
24
|
+
affectedFiles: [],
|
|
25
|
+
risk: "low",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
static doAnalyze(declarationNode) {
|
|
30
|
+
const nameNode = BlastRadiusAnalyzer.getNameNode(declarationNode);
|
|
31
|
+
if (!nameNode) {
|
|
32
|
+
return {
|
|
33
|
+
totalReferences: 0,
|
|
34
|
+
testFunctionCount: 0,
|
|
35
|
+
affectedFiles: [],
|
|
36
|
+
risk: "low",
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const refs = nameNode
|
|
40
|
+
.getProject()
|
|
41
|
+
.getLanguageService()
|
|
42
|
+
.findReferences(nameNode);
|
|
43
|
+
const affectedFilesSet = new Set();
|
|
44
|
+
let totalRefs = 0;
|
|
45
|
+
// Key = filePath:startLine of the enclosing test() / it() call.
|
|
46
|
+
const enclosingTestKeys = new Set();
|
|
47
|
+
for (const refSymbol of refs) {
|
|
48
|
+
for (const ref of refSymbol.getReferences()) {
|
|
49
|
+
if (ref.isDefinition())
|
|
50
|
+
continue;
|
|
51
|
+
totalRefs++;
|
|
52
|
+
affectedFilesSet.add(ref.getSourceFile().getFilePath());
|
|
53
|
+
// Walk ancestors to find the enclosing test() or it() call.
|
|
54
|
+
let ancestor = ref.getNode();
|
|
55
|
+
while (ancestor) {
|
|
56
|
+
if (ts_morph_1.Node.isCallExpression(ancestor) &&
|
|
57
|
+
BlastRadiusAnalyzer.isTestCall(ancestor)) {
|
|
58
|
+
enclosingTestKeys.add(`${ref.getSourceFile().getFilePath()}:${ancestor.getStartLineNumber()}`);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
ancestor = ancestor.getParent();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const testFunctionCount = enclosingTestKeys.size;
|
|
66
|
+
const risk = testFunctionCount >= 4
|
|
67
|
+
? "high"
|
|
68
|
+
: testFunctionCount >= 2
|
|
69
|
+
? "medium"
|
|
70
|
+
: "low";
|
|
71
|
+
return {
|
|
72
|
+
totalReferences: totalRefs,
|
|
73
|
+
testFunctionCount,
|
|
74
|
+
affectedFiles: [...affectedFilesSet],
|
|
75
|
+
risk,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
static getNameNode(node) {
|
|
79
|
+
if (ts_morph_1.Node.isVariableDeclaration(node))
|
|
80
|
+
return node.getNameNode();
|
|
81
|
+
if (node.getKind() === ts_morph_1.SyntaxKind.PropertyAssignment &&
|
|
82
|
+
ts_morph_1.Node.isPropertyAssignment(node)) {
|
|
83
|
+
return node.getNameNode();
|
|
84
|
+
}
|
|
85
|
+
// For already-resolved StringLiteral / Identifier targets.
|
|
86
|
+
return node;
|
|
87
|
+
}
|
|
88
|
+
static isTestCall(call) {
|
|
89
|
+
if (!ts_morph_1.Node.isCallExpression(call))
|
|
90
|
+
return false;
|
|
91
|
+
const expr = call.getExpression();
|
|
92
|
+
// Handles: test("...", ...) and test.only / test.skip etc.
|
|
93
|
+
if (ts_morph_1.Node.isIdentifier(expr)) {
|
|
94
|
+
const name = expr.getText();
|
|
95
|
+
return name === "test" || name === "it";
|
|
96
|
+
}
|
|
97
|
+
if (ts_morph_1.Node.isPropertyAccessExpression(expr)) {
|
|
98
|
+
const obj = expr.getExpression();
|
|
99
|
+
if (ts_morph_1.Node.isIdentifier(obj)) {
|
|
100
|
+
const name = obj.getText();
|
|
101
|
+
return name === "test" || name === "it";
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
exports.BlastRadiusAnalyzer = BlastRadiusAnalyzer;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export type ChainSegment = {
|
|
2
|
+
type: "locator";
|
|
3
|
+
selector: string;
|
|
4
|
+
} | {
|
|
5
|
+
type: "frameLocator";
|
|
6
|
+
selector: string;
|
|
7
|
+
} | {
|
|
8
|
+
type: "getByRole";
|
|
9
|
+
role: string;
|
|
10
|
+
name?: string;
|
|
11
|
+
exact?: boolean;
|
|
12
|
+
} | {
|
|
13
|
+
type: "getByLabel";
|
|
14
|
+
text: string;
|
|
15
|
+
exact?: boolean;
|
|
16
|
+
} | {
|
|
17
|
+
type: "getByText";
|
|
18
|
+
text: string;
|
|
19
|
+
exact?: boolean;
|
|
20
|
+
} | {
|
|
21
|
+
type: "getByPlaceholder";
|
|
22
|
+
text: string;
|
|
23
|
+
} | {
|
|
24
|
+
type: "getByTestId";
|
|
25
|
+
testId: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: "getByAltText";
|
|
28
|
+
text: string;
|
|
29
|
+
} | {
|
|
30
|
+
type: "getByTitle";
|
|
31
|
+
text: string;
|
|
32
|
+
} | {
|
|
33
|
+
type: "filter";
|
|
34
|
+
hasText?: string;
|
|
35
|
+
hasNotText?: string;
|
|
36
|
+
has?: string;
|
|
37
|
+
hasNot?: string;
|
|
38
|
+
} | {
|
|
39
|
+
type: "first";
|
|
40
|
+
} | {
|
|
41
|
+
type: "last";
|
|
42
|
+
} | {
|
|
43
|
+
type: "nth";
|
|
44
|
+
index: number;
|
|
45
|
+
};
|
|
46
|
+
export type ReturnType = "Locator" | "FrameLocator" | "unknown";
|
|
47
|
+
export interface ValidationResult {
|
|
48
|
+
valid: boolean;
|
|
49
|
+
reason?: string;
|
|
50
|
+
segments?: ChainSegment[];
|
|
51
|
+
}
|
|
52
|
+
export declare function segmentsToCode(receiver: string, segments: ChainSegment[], multiLine?: boolean): string;
|
|
53
|
+
export interface ChainValidationInput {
|
|
54
|
+
segments: unknown[];
|
|
55
|
+
originalRootReceiver: string;
|
|
56
|
+
proposedRootReceiver: string;
|
|
57
|
+
rootType?: ReturnType;
|
|
58
|
+
applySemanticUpgrade?: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface ChainValidationOutput {
|
|
61
|
+
valid: boolean;
|
|
62
|
+
reason?: string;
|
|
63
|
+
segments?: ChainSegment[];
|
|
64
|
+
code?: string;
|
|
65
|
+
multiLine?: boolean;
|
|
66
|
+
}
|
|
67
|
+
export declare class ChainValidator {
|
|
68
|
+
validate(input: ChainValidationInput): ChainValidationOutput;
|
|
69
|
+
/**
|
|
70
|
+
* Lightweight check: does this segment array describe the same
|
|
71
|
+
* semantic intent as the old flat selector string?
|
|
72
|
+
* Used as a sanity check before committing an AST write.
|
|
73
|
+
*/
|
|
74
|
+
intentMatches(segments: ChainSegment[], oldFlatSelector: string): boolean;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=ChainValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainValidator.d.ts","sourceRoot":"","sources":["../../src/services/ChainValidator.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AA2cD,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EAAE,EACxB,SAAS,GAAE,OAAe,GACzB,MAAM,CAkER;AAWD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB;IAsE5D;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO;CA0B1E"}
|