projscan 4.6.0 → 4.8.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/README.md +25 -12
- package/dist/cli/_shared.js +12 -44
- package/dist/cli/_shared.js.map +1 -1
- package/dist/cli/changedOnly.d.ts +16 -0
- package/dist/cli/changedOnly.js +28 -0
- package/dist/cli/changedOnly.js.map +1 -0
- package/dist/cli/commands/start.js +5 -28
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/startOptionsRegistration.d.ts +2 -0
- package/dist/cli/commands/startOptionsRegistration.js +29 -0
- package/dist/cli/commands/startOptionsRegistration.js.map +1 -0
- package/dist/cli/formatOptions.d.ts +4 -0
- package/dist/cli/formatOptions.js +30 -0
- package/dist/cli/formatOptions.js.map +1 -0
- package/dist/core/agentBrief.js +6 -1
- package/dist/core/agentBrief.js.map +1 -1
- package/dist/core/ast.d.ts +2 -17
- package/dist/core/ast.js +4 -33
- package/dist/core/ast.js.map +1 -1
- package/dist/core/astBodySignals.js +2 -3
- package/dist/core/astBodySignals.js.map +1 -1
- package/dist/core/astMembers.d.ts +1 -0
- package/dist/core/astMembers.js +38 -9
- package/dist/core/astMembers.js.map +1 -1
- package/dist/core/astResult.d.ts +20 -0
- package/dist/core/astResult.js +39 -0
- package/dist/core/astResult.js.map +1 -0
- package/dist/core/bugHunt.js +2 -142
- package/dist/core/bugHunt.js.map +1 -1
- package/dist/core/bugHuntHotspotFindings.d.ts +2 -0
- package/dist/core/bugHuntHotspotFindings.js +68 -0
- package/dist/core/bugHuntHotspotFindings.js.map +1 -0
- package/dist/core/bugHuntPreflightFindings.d.ts +3 -0
- package/dist/core/bugHuntPreflightFindings.js +115 -0
- package/dist/core/bugHuntPreflightFindings.js.map +1 -0
- package/dist/core/codeGraph.d.ts +2 -24
- package/dist/core/codeGraph.js +8 -119
- package/dist/core/codeGraph.js.map +1 -1
- package/dist/core/codeGraphAdapterContexts.d.ts +8 -0
- package/dist/core/codeGraphAdapterContexts.js +14 -0
- package/dist/core/codeGraphAdapterContexts.js.map +1 -0
- package/dist/core/codeGraphFileSelection.d.ts +7 -0
- package/dist/core/codeGraphFileSelection.js +19 -0
- package/dist/core/codeGraphFileSelection.js.map +1 -0
- package/dist/core/codeGraphIncremental.d.ts +17 -0
- package/dist/core/codeGraphIncremental.js +64 -0
- package/dist/core/codeGraphIncremental.js.map +1 -0
- package/dist/core/codeGraphQueries.d.ts +9 -0
- package/dist/core/codeGraphQueries.js +25 -0
- package/dist/core/codeGraphQueries.js.map +1 -0
- package/dist/core/collisionDetector.d.ts +1 -0
- package/dist/core/collisionDetector.js +3 -0
- package/dist/core/collisionDetector.js.map +1 -1
- package/dist/core/coordination.js +23 -5
- package/dist/core/coordination.js.map +1 -1
- package/dist/core/coordinationEvidence.d.ts +1 -0
- package/dist/core/coordinationEvidence.js.map +1 -1
- package/dist/core/dataflow.js +3 -338
- package/dist/core/dataflow.js.map +1 -1
- package/dist/core/dataflowDatabaseSinks.d.ts +8 -0
- package/dist/core/dataflowDatabaseSinks.js +78 -0
- package/dist/core/dataflowDatabaseSinks.js.map +1 -0
- package/dist/core/dataflowRiskAssembly.d.ts +11 -0
- package/dist/core/dataflowRiskAssembly.js +117 -0
- package/dist/core/dataflowRiskAssembly.js.map +1 -0
- package/dist/core/dataflowTraversal.d.ts +25 -0
- package/dist/core/dataflowTraversal.js +200 -0
- package/dist/core/dataflowTraversal.js.map +1 -0
- package/dist/core/fileInspectionReport.d.ts +13 -0
- package/dist/core/fileInspectionReport.js +49 -0
- package/dist/core/fileInspectionReport.js.map +1 -0
- package/dist/core/fileInspector.d.ts +3 -11
- package/dist/core/fileInspector.js +2 -46
- package/dist/core/fileInspector.js.map +1 -1
- package/dist/core/fixSuggest.d.ts +1 -9
- package/dist/core/fixSuggest.js +2 -58
- package/dist/core/fixSuggest.js.map +1 -1
- package/dist/core/fixSuggestDependencyNames.d.ts +1 -0
- package/dist/core/fixSuggestDependencyNames.js +9 -0
- package/dist/core/fixSuggestDependencyNames.js.map +1 -0
- package/dist/core/fixSuggestPreview.d.ts +10 -0
- package/dist/core/fixSuggestPreview.js +87 -0
- package/dist/core/fixSuggestPreview.js.map +1 -0
- package/dist/core/frameworkExpressSources.js +6 -31
- package/dist/core/frameworkExpressSources.js.map +1 -1
- package/dist/core/frameworkFastifySources.js +5 -22
- package/dist/core/frameworkFastifySources.js.map +1 -1
- package/dist/core/frameworkHonoSources.js +12 -24
- package/dist/core/frameworkHonoSources.js.map +1 -1
- package/dist/core/frameworkKoaSources.js +5 -24
- package/dist/core/frameworkKoaSources.js.map +1 -1
- package/dist/core/frameworkNextRouteSources.d.ts +6 -1
- package/dist/core/frameworkNextRouteSources.js +31 -1
- package/dist/core/frameworkNextRouteSources.js.map +1 -1
- package/dist/core/frameworkRemixSources.d.ts +2 -0
- package/dist/core/frameworkRemixSources.js +63 -0
- package/dist/core/frameworkRemixSources.js.map +1 -0
- package/dist/core/frameworkSourceContext.d.ts +15 -0
- package/dist/core/frameworkSourceContext.js +2 -0
- package/dist/core/frameworkSourceContext.js.map +1 -0
- package/dist/core/frameworkSourceMatching.d.ts +6 -0
- package/dist/core/frameworkSourceMatching.js +29 -0
- package/dist/core/frameworkSourceMatching.js.map +1 -0
- package/dist/core/frameworkSourceResolvers.d.ts +2 -0
- package/dist/core/frameworkSourceResolvers.js +45 -0
- package/dist/core/frameworkSourceResolvers.js.map +1 -0
- package/dist/core/frameworkSources.d.ts +3 -3
- package/dist/core/frameworkSources.js +17 -15
- package/dist/core/frameworkSources.js.map +1 -1
- package/dist/core/frameworkSvelteKitSources.d.ts +2 -0
- package/dist/core/frameworkSvelteKitSources.js +118 -0
- package/dist/core/frameworkSvelteKitSources.js.map +1 -0
- package/dist/core/intentRouter.d.ts +4 -14
- package/dist/core/intentRouter.js +2 -33
- package/dist/core/intentRouter.js.map +1 -1
- package/dist/core/intentRouterCatalog.js +49 -0
- package/dist/core/intentRouterCatalog.js.map +1 -1
- package/dist/core/intentRouterKeywordToolGuards.js +5 -0
- package/dist/core/intentRouterKeywordToolGuards.js.map +1 -1
- package/dist/core/intentRouterKeywordWeights.js +36 -0
- package/dist/core/intentRouterKeywordWeights.js.map +1 -1
- package/dist/core/intentRouterReleaseSignals.js +104 -39
- package/dist/core/intentRouterReleaseSignals.js.map +1 -1
- package/dist/core/intentRouterResolution.d.ts +3 -0
- package/dist/core/intentRouterResolution.js +11 -0
- package/dist/core/intentRouterResolution.js.map +1 -0
- package/dist/core/intentRouterResult.d.ts +16 -0
- package/dist/core/intentRouterResult.js +34 -0
- package/dist/core/intentRouterResult.js.map +1 -0
- package/dist/core/intentRouterWorkSignals.js +18 -0
- package/dist/core/intentRouterWorkSignals.js.map +1 -1
- package/dist/core/languages/pythonLockfiles.d.ts +4 -0
- package/dist/core/languages/pythonLockfiles.js +6 -2
- package/dist/core/languages/pythonLockfiles.js.map +1 -1
- package/dist/core/languages/pythonManifests.js +11 -24
- package/dist/core/languages/pythonManifests.js.map +1 -1
- package/dist/core/languages/pythonPep508.js +1 -1
- package/dist/core/languages/pythonPep508.js.map +1 -1
- package/dist/core/languages/pythonProjectEvidence.js +4 -4
- package/dist/core/languages/pythonProjectEvidence.js.map +1 -1
- package/dist/core/languages/pythonPyproject.js +1 -1
- package/dist/core/languages/pythonPyproject.js.map +1 -1
- package/dist/core/languages/pythonPyprojectEvidence.d.ts +7 -0
- package/dist/core/languages/pythonPyprojectEvidence.js +23 -0
- package/dist/core/languages/pythonPyprojectEvidence.js.map +1 -0
- package/dist/core/languages/pythonRequirements.d.ts +2 -0
- package/dist/core/languages/pythonRequirements.js +215 -24
- package/dist/core/languages/pythonRequirements.js.map +1 -1
- package/dist/core/pluginAnalyzerLoading.d.ts +3 -0
- package/dist/core/pluginAnalyzerLoading.js +55 -0
- package/dist/core/pluginAnalyzerLoading.js.map +1 -0
- package/dist/core/pluginAnalyzerRunning.d.ts +10 -0
- package/dist/core/pluginAnalyzerRunning.js +32 -0
- package/dist/core/pluginAnalyzerRunning.js.map +1 -0
- package/dist/core/pluginIssueValidation.d.ts +2 -0
- package/dist/core/pluginIssueValidation.js +22 -0
- package/dist/core/pluginIssueValidation.js.map +1 -0
- package/dist/core/pluginManifestDiscovery.d.ts +25 -0
- package/dist/core/pluginManifestDiscovery.js +80 -0
- package/dist/core/pluginManifestDiscovery.js.map +1 -0
- package/dist/core/pluginManifestValidation.d.ts +41 -0
- package/dist/core/pluginManifestValidation.js +179 -0
- package/dist/core/pluginManifestValidation.js.map +1 -0
- package/dist/core/pluginModuleLoading.d.ts +8 -0
- package/dist/core/pluginModuleLoading.js +91 -0
- package/dist/core/pluginModuleLoading.js.map +1 -0
- package/dist/core/pluginReporterLoading.d.ts +41 -0
- package/dist/core/pluginReporterLoading.js +105 -0
- package/dist/core/pluginReporterLoading.js.map +1 -0
- package/dist/core/pluginRuntimeTypes.d.ts +20 -0
- package/dist/core/pluginRuntimeTypes.js +2 -0
- package/dist/core/pluginRuntimeTypes.js.map +1 -0
- package/dist/core/plugins.d.ts +11 -126
- package/dist/core/plugins.js +13 -478
- package/dist/core/plugins.js.map +1 -1
- package/dist/core/preflight.d.ts +1 -2
- package/dist/core/preflight.js +4 -91
- package/dist/core/preflight.js.map +1 -1
- package/dist/core/preflightEvidence.js +11 -0
- package/dist/core/preflightEvidence.js.map +1 -1
- package/dist/core/preflightInputs.d.ts +1 -0
- package/dist/core/preflightInputs.js.map +1 -1
- package/dist/core/preflightReasons.d.ts +21 -0
- package/dist/core/preflightReasons.js +28 -0
- package/dist/core/preflightReasons.js.map +1 -0
- package/dist/core/preflightReport.d.ts +9 -0
- package/dist/core/preflightReport.js +67 -0
- package/dist/core/preflightReport.js.map +1 -0
- package/dist/core/regressionPlan.d.ts +2 -1
- package/dist/core/regressionPlan.js +7 -1
- package/dist/core/regressionPlan.js.map +1 -1
- package/dist/core/releaseEvidence.js +6 -120
- package/dist/core/releaseEvidence.js.map +1 -1
- package/dist/core/releaseEvidenceArtifacts.d.ts +3 -0
- package/dist/core/releaseEvidenceArtifacts.js +65 -0
- package/dist/core/releaseEvidenceArtifacts.js.map +1 -0
- package/dist/core/releaseEvidenceVerdict.d.ts +6 -0
- package/dist/core/releaseEvidenceVerdict.js +54 -0
- package/dist/core/releaseEvidenceVerdict.js.map +1 -0
- package/dist/core/reportPathRedaction.d.ts +4 -0
- package/dist/core/reportPathRedaction.js +64 -0
- package/dist/core/reportPathRedaction.js.map +1 -0
- package/dist/core/reportScope.js +2 -163
- package/dist/core/reportScope.js.map +1 -1
- package/dist/core/reportScopeFiltering.d.ts +9 -0
- package/dist/core/reportScopeFiltering.js +102 -0
- package/dist/core/reportScopeFiltering.js.map +1 -0
- package/dist/core/review.js +2 -47
- package/dist/core/review.js.map +1 -1
- package/dist/core/reviewChangedReport.d.ts +13 -0
- package/dist/core/reviewChangedReport.js +38 -0
- package/dist/core/reviewChangedReport.js.map +1 -0
- package/dist/core/reviewComputation.d.ts +9 -0
- package/dist/core/reviewComputation.js +14 -0
- package/dist/core/reviewComputation.js.map +1 -0
- package/dist/core/reviewContractChanges.js +22 -8
- package/dist/core/reviewContractChanges.js.map +1 -1
- package/dist/core/reviewDataflow.js +18 -0
- package/dist/core/reviewDataflow.js.map +1 -1
- package/dist/core/roadmapCatalog.js +7 -203
- package/dist/core/roadmapCatalog.js.map +1 -1
- package/dist/core/roadmapCatalogPost44.d.ts +2 -0
- package/dist/core/roadmapCatalogPost44.js +205 -0
- package/dist/core/roadmapCatalogPost44.js.map +1 -0
- package/dist/core/roadmapCatalogTypes.d.ts +6 -0
- package/dist/core/roadmapCatalogTypes.js +2 -0
- package/dist/core/roadmapCatalogTypes.js.map +1 -0
- package/dist/core/searchIndex.d.ts +2 -14
- package/dist/core/searchIndex.js +4 -227
- package/dist/core/searchIndex.js.map +1 -1
- package/dist/core/searchIndexFiles.d.ts +1 -0
- package/dist/core/searchIndexFiles.js +26 -0
- package/dist/core/searchIndexFiles.js.map +1 -0
- package/dist/core/searchIndexText.d.ts +15 -0
- package/dist/core/searchIndexText.js +204 -0
- package/dist/core/searchIndexText.js.map +1 -0
- package/dist/core/start.js +5 -46
- package/dist/core/start.js.map +1 -1
- package/dist/core/startClaimRouteCriteria.d.ts +7 -0
- package/dist/core/startClaimRouteCriteria.js +16 -0
- package/dist/core/startClaimRouteCriteria.js.map +1 -0
- package/dist/core/startCouplingRouteCriteria.d.ts +2 -0
- package/dist/core/startCouplingRouteCriteria.js +13 -0
- package/dist/core/startCouplingRouteCriteria.js.map +1 -0
- package/dist/core/startDependencyRouteCriteria.d.ts +2 -0
- package/dist/core/startDependencyRouteCriteria.js +43 -0
- package/dist/core/startDependencyRouteCriteria.js.map +1 -0
- package/dist/core/startEvidence.d.ts +1 -1
- package/dist/core/startEvidence.js +16 -1
- package/dist/core/startEvidence.js.map +1 -1
- package/dist/core/startFileRouteCriteria.d.ts +2 -0
- package/dist/core/startFileRouteCriteria.js +56 -0
- package/dist/core/startFileRouteCriteria.js.map +1 -0
- package/dist/core/startFixedRouteCriteria.d.ts +1 -0
- package/dist/core/startFixedRouteCriteria.js +90 -0
- package/dist/core/startFixedRouteCriteria.js.map +1 -0
- package/dist/core/startImpactRouteCriteria.d.ts +7 -0
- package/dist/core/startImpactRouteCriteria.js +14 -0
- package/dist/core/startImpactRouteCriteria.js.map +1 -0
- package/dist/core/startInputs.d.ts +1 -0
- package/dist/core/startInputs.js +4 -1
- package/dist/core/startInputs.js.map +1 -1
- package/dist/core/startIntentTargets.d.ts +1 -0
- package/dist/core/startIntentTargets.js +28 -0
- package/dist/core/startIntentTargets.js.map +1 -1
- package/dist/core/startMissionControl.js +8 -2
- package/dist/core/startMissionControl.js.map +1 -1
- package/dist/core/startMissionPolicy.js +12 -0
- package/dist/core/startMissionPolicy.js.map +1 -1
- package/dist/core/startMode.d.ts +1 -0
- package/dist/core/startMode.js +10 -2
- package/dist/core/startMode.js.map +1 -1
- package/dist/core/startPreflightRouteCriteria.d.ts +11 -0
- package/dist/core/startPreflightRouteCriteria.js +29 -0
- package/dist/core/startPreflightRouteCriteria.js.map +1 -0
- package/dist/core/startProductPlanningRouteCriteria.d.ts +8 -0
- package/dist/core/startProductPlanningRouteCriteria.js +29 -0
- package/dist/core/startProductPlanningRouteCriteria.js.map +1 -0
- package/dist/core/startRegressionRouteCriteria.d.ts +3 -0
- package/dist/core/startRegressionRouteCriteria.js +62 -0
- package/dist/core/startRegressionRouteCriteria.js.map +1 -0
- package/dist/core/startReportBuilder.d.ts +1 -0
- package/dist/core/startReportBuilder.js +1 -0
- package/dist/core/startReportBuilder.js.map +1 -1
- package/dist/core/startReportContext.d.ts +23 -0
- package/dist/core/startReportContext.js +51 -0
- package/dist/core/startReportContext.js.map +1 -0
- package/dist/core/startRoadmapPreview.d.ts +2 -0
- package/dist/core/startRoadmapPreview.js +31 -0
- package/dist/core/startRoadmapPreview.js.map +1 -0
- package/dist/core/startRouteActions.js +39 -1
- package/dist/core/startRouteActions.js.map +1 -1
- package/dist/core/startSuccessCriteria.d.ts +2 -3
- package/dist/core/startSuccessCriteria.js +15 -419
- package/dist/core/startSuccessCriteria.js.map +1 -1
- package/dist/core/startUnderstandRouteCriteria.d.ts +3 -0
- package/dist/core/startUnderstandRouteCriteria.js +97 -0
- package/dist/core/startUnderstandRouteCriteria.js.map +1 -0
- package/dist/core/taint.d.ts +2 -67
- package/dist/core/taint.js +41 -164
- package/dist/core/taint.js.map +1 -1
- package/dist/core/taintIndex.d.ts +20 -0
- package/dist/core/taintIndex.js +81 -0
- package/dist/core/taintIndex.js.map +1 -0
- package/dist/core/taintTraversal.d.ts +8 -0
- package/dist/core/taintTraversal.js +113 -0
- package/dist/core/taintTraversal.js.map +1 -0
- package/dist/core/taintTypes.d.ts +67 -0
- package/dist/core/taintTypes.js +2 -0
- package/dist/core/taintTypes.js.map +1 -0
- package/dist/core/telemetry.d.ts +9 -89
- package/dist/core/telemetry.js +35 -387
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/telemetryConfig.d.ts +58 -0
- package/dist/core/telemetryConfig.js +171 -0
- package/dist/core/telemetryConfig.js.map +1 -0
- package/dist/core/telemetryEvents.d.ts +57 -0
- package/dist/core/telemetryEvents.js +143 -0
- package/dist/core/telemetryEvents.js.map +1 -0
- package/dist/core/telemetryFlushing.d.ts +10 -0
- package/dist/core/telemetryFlushing.js +42 -0
- package/dist/core/telemetryFlushing.js.map +1 -0
- package/dist/core/telemetryRecording.d.ts +26 -0
- package/dist/core/telemetryRecording.js +38 -0
- package/dist/core/telemetryRecording.js.map +1 -0
- package/dist/core/telemetrySender.d.ts +9 -0
- package/dist/core/telemetrySender.js +22 -0
- package/dist/core/telemetrySender.js.map +1 -0
- package/dist/core/upgradePreviewPython.js +1 -1
- package/dist/core/upgradePreviewPython.js.map +1 -1
- package/dist/index.d.ts +4 -60
- package/dist/index.js +4 -60
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +2 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/serverMessageHandling.d.ts +3 -0
- package/dist/mcp/serverMessageHandling.js +16 -0
- package/dist/mcp/serverMessageHandling.js.map +1 -0
- package/dist/mcp/toolDefinitions.d.ts +3 -0
- package/dist/mcp/toolDefinitions.js +15 -0
- package/dist/mcp/toolDefinitions.js.map +1 -0
- package/dist/mcp/tools.js +2 -13
- package/dist/mcp/tools.js.map +1 -1
- package/dist/projscan-sbom.cdx.json +6 -6
- package/dist/publicAgent.d.ts +22 -0
- package/dist/publicAgent.js +23 -0
- package/dist/publicAgent.js.map +1 -0
- package/dist/publicCore.d.ts +29 -0
- package/dist/publicCore.js +30 -0
- package/dist/publicCore.js.map +1 -0
- package/dist/publicLanguages.d.ts +1 -0
- package/dist/publicLanguages.js +2 -0
- package/dist/publicLanguages.js.map +1 -0
- package/dist/publicMcp.d.ts +8 -0
- package/dist/publicMcp.js +9 -0
- package/dist/publicMcp.js.map +1 -0
- package/dist/reporters/consoleFixReporter.d.ts +3 -0
- package/dist/reporters/consoleFixReporter.js +41 -0
- package/dist/reporters/consoleFixReporter.js.map +1 -0
- package/dist/reporters/consoleReporter.d.ts +1 -3
- package/dist/reporters/consoleReporter.js +1 -42
- package/dist/reporters/consoleReporter.js.map +1 -1
- package/dist/reporters/htmlAnalysisReporter.d.ts +3 -0
- package/dist/reporters/htmlAnalysisReporter.js +98 -0
- package/dist/reporters/htmlAnalysisReporter.js.map +1 -0
- package/dist/reporters/htmlCoverageReporter.d.ts +2 -0
- package/dist/reporters/htmlCoverageReporter.js +52 -0
- package/dist/reporters/htmlCoverageReporter.js.map +1 -0
- package/dist/reporters/htmlImpactReporter.d.ts +2 -0
- package/dist/reporters/htmlImpactReporter.js +41 -0
- package/dist/reporters/htmlImpactReporter.js.map +1 -0
- package/dist/reporters/htmlPrDiffReporter.d.ts +2 -0
- package/dist/reporters/htmlPrDiffReporter.js +84 -0
- package/dist/reporters/htmlPrDiffReporter.js.map +1 -0
- package/dist/reporters/htmlReporter.d.ts +20 -9
- package/dist/reporters/htmlReporter.js +7 -365
- package/dist/reporters/htmlReporter.js.map +1 -1
- package/dist/reporters/htmlReviewReporter.d.ts +2 -0
- package/dist/reporters/htmlReviewReporter.js +94 -0
- package/dist/reporters/htmlReviewReporter.js.map +1 -0
- package/dist/reporters/htmlShared.d.ts +7 -0
- package/dist/reporters/htmlShared.js +106 -0
- package/dist/reporters/htmlShared.js.map +1 -0
- package/dist/tool-manifest.json +2 -2
- package/dist/types/preflight.d.ts +19 -0
- package/dist/types/start.d.ts +7 -437
- package/dist/types/startCommon.d.ts +79 -0
- package/dist/types/startCommon.js +2 -0
- package/dist/types/startCommon.js.map +1 -0
- package/dist/types/startExecution.d.ts +44 -0
- package/dist/types/startExecution.js +2 -0
- package/dist/types/startExecution.js.map +1 -0
- package/dist/types/startMissionControl.d.ts +91 -0
- package/dist/types/startMissionControl.js +2 -0
- package/dist/types/startMissionControl.js.map +1 -0
- package/dist/types/startMissionProof.d.ts +91 -0
- package/dist/types/startMissionProof.js +2 -0
- package/dist/types/startMissionProof.js.map +1 -0
- package/dist/types/startMissionResume.d.ts +100 -0
- package/dist/types/startMissionResume.js +2 -0
- package/dist/types/startMissionResume.js.map +1 -0
- package/dist/types/startMissionReview.d.ts +45 -0
- package/dist/types/startMissionReview.js +2 -0
- package/dist/types/startMissionReview.js.map +1 -0
- package/dist/types/startMissionTooling.d.ts +16 -0
- package/dist/types/startMissionTooling.js +2 -0
- package/dist/types/startMissionTooling.js.map +1 -0
- package/dist/utils/changedFiles.d.ts +1 -0
- package/dist/utils/changedFiles.js +7 -4
- package/dist/utils/changedFiles.js.map +1 -1
- package/docs/GUIDE.md +9 -7
- package/docs/ROADMAP.md +18 -7
- package/docs/examples/adoption-workflows.md +12 -1
- package/docs/examples/swarm-coordination.md +11 -2
- package/package.json +1 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { parseDepName } from './fixSuggestDependencyNames.js';
|
|
2
|
+
const TEST_FRAMEWORK_ISSUES = new Set(['missing-test-framework', 'missing-python-test-framework']);
|
|
3
|
+
const FIRST_TEST_ISSUES = new Set(['no-test-files', 'no-python-test-files']);
|
|
4
|
+
const TOOLING_SETUP_ISSUES = new Set([
|
|
5
|
+
'missing-linter',
|
|
6
|
+
'missing-python-linter',
|
|
7
|
+
'missing-formatter',
|
|
8
|
+
'missing-python-formatter',
|
|
9
|
+
]);
|
|
10
|
+
const PREVIEW_RULES = [
|
|
11
|
+
{
|
|
12
|
+
matches: (issue) => issue.id.startsWith('unused-dependency-'),
|
|
13
|
+
headline: (issue) => `Remove or wire up "${parseDepName(issue.id)}".`,
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
matches: (issue) => issue.id === 'dep-risk-no-lockfile',
|
|
17
|
+
headline: () => 'Run `npm install` and commit the lockfile.',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
matches: (issue) => issue.id.startsWith('dep-risk-'),
|
|
21
|
+
headline: (issue) => `Audit "${issue.id.slice('dep-risk-'.length)}" or pin to an exact version.`,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
matches: (issue) => issue.id.startsWith('audit-'),
|
|
25
|
+
headline: () => 'Try `npm audit fix`, then upgrade or pin manually.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
matches: (issue) => issue.id.startsWith('cycle-detected-'),
|
|
29
|
+
headline: () => 'Break the cycle by extracting a shared module.',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
matches: (issue) => issue.id.startsWith('large-') && issue.id.endsWith('-dir'),
|
|
33
|
+
headline: () => 'Split the directory by domain.',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
matches: (issue) => issue.id === 'dead-code' || issue.id.startsWith('dead-code-'),
|
|
37
|
+
headline: () => 'Confirm with `projscan_semantic_graph { query: { direction: "importers", file: "<file>" } }` then delete or expose.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
matches: (issue) => TEST_FRAMEWORK_ISSUES.has(issue.id),
|
|
41
|
+
headline: (issue) => issue.id.includes('python')
|
|
42
|
+
? 'Install pytest + write one smoke test.'
|
|
43
|
+
: 'Install vitest + write one smoke test.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
matches: (issue) => FIRST_TEST_ISSUES.has(issue.id),
|
|
47
|
+
headline: () => 'Write the first test against your top hotspot.',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
matches: (issue) => TOOLING_SETUP_ISSUES.has(issue.id),
|
|
51
|
+
headline: (issue) => issue.id.includes('python')
|
|
52
|
+
? 'Add ruff and run `ruff check . --fix` once.'
|
|
53
|
+
: 'Add eslint + prettier; baseline with `--fix`.',
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
matches: (issue) => issue.id.startsWith('cross-package-violation-'),
|
|
57
|
+
headline: () => "Use the package's public entry, or widen the importPolicy.",
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
matches: (issue) => issue.id.startsWith('eslint-'),
|
|
61
|
+
headline: (issue) => {
|
|
62
|
+
const ruleName = issue.id.slice('eslint-'.length);
|
|
63
|
+
return `Fix per docs, or scope a disable to the line with a reason: \`${ruleName}\`.`;
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
matches: (issue) => issue.id.startsWith('python-type-error-'),
|
|
68
|
+
headline: () => 'Refine the annotation, narrow at the call site, or pin a `# type: ignore[code]`.',
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
/**
|
|
72
|
+
* Synchronous one-line preview for inline use in projscan_doctor output.
|
|
73
|
+
* Returns the headline a template would render. We can't run the full
|
|
74
|
+
* template synchronously (some are async-shaped); the headline is a
|
|
75
|
+
* lightweight projection that doesn't need IO.
|
|
76
|
+
*/
|
|
77
|
+
export function previewSuggestionForIssue(issue) {
|
|
78
|
+
const headline = staticHeadlineFor(issue);
|
|
79
|
+
if (!headline)
|
|
80
|
+
return null;
|
|
81
|
+
return { summary: headline };
|
|
82
|
+
}
|
|
83
|
+
function staticHeadlineFor(issue) {
|
|
84
|
+
const rule = PREVIEW_RULES.find((candidate) => candidate.matches(issue));
|
|
85
|
+
return rule?.headline(issue) ?? null;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=fixSuggestPreview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixSuggestPreview.js","sourceRoot":"","sources":["../../src/core/fixSuggestPreview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isKnownHandlerCall, matchingParameters, sourceFromExactMembers, sourceFromPrefixedMembers, } from './frameworkSourceMatching.js';
|
|
1
2
|
const EXPRESS_REQUEST_SOURCE_BY_REFERENCE = new Map([
|
|
2
3
|
['body', 'express.req.body'],
|
|
3
4
|
['query', 'express.req.query'],
|
|
@@ -44,7 +45,7 @@ export function expressRequestSource(parameters, references, memberReferences, m
|
|
|
44
45
|
return expressMatchedSource(requestParams, references, memberReferences, memberCallSites, enabledSources);
|
|
45
46
|
}
|
|
46
47
|
function expressRequestParams(parameters) {
|
|
47
|
-
return parameters
|
|
48
|
+
return matchingParameters(parameters, EXPRESS_REQUEST_PARAM_NAMES);
|
|
48
49
|
}
|
|
49
50
|
function expressMatchedSource(requestParams, references, memberReferences, memberCallSites, enabledSources) {
|
|
50
51
|
return (expressMemberReferenceSource(requestParams, memberReferences, enabledSources) ??
|
|
@@ -52,44 +53,18 @@ function expressMatchedSource(requestParams, references, memberReferences, membe
|
|
|
52
53
|
expressMemberCallSource(requestParams, memberCallSites, enabledSources));
|
|
53
54
|
}
|
|
54
55
|
function expressReferenceSource(references, enabledSources) {
|
|
55
|
-
|
|
56
|
-
for (const [reference, source] of EXPRESS_REQUEST_SOURCE_BY_REFERENCE) {
|
|
57
|
-
if (enabledSources.has(source) && refs.has(reference))
|
|
58
|
-
return source;
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
56
|
+
return sourceFromExactMembers(references, EXPRESS_REQUEST_SOURCE_BY_REFERENCE, enabledSources);
|
|
61
57
|
}
|
|
62
58
|
function expressMemberReferenceSource(requestParams, memberReferences, enabledSources) {
|
|
63
|
-
|
|
64
|
-
for (const parameter of requestParams) {
|
|
65
|
-
for (const [member, source] of EXPRESS_REQUEST_SOURCE_BY_MEMBER) {
|
|
66
|
-
if (enabledSources.has(source) && members.has(`${parameter}.${member}`))
|
|
67
|
-
return source;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return null;
|
|
59
|
+
return sourceFromPrefixedMembers(requestParams.map((parameter) => `${parameter}.`), memberReferences, EXPRESS_REQUEST_SOURCE_BY_MEMBER, enabledSources);
|
|
71
60
|
}
|
|
72
61
|
function expressMemberCallSource(requestParams, memberCallSites, enabledSources) {
|
|
73
|
-
|
|
74
|
-
for (const parameter of requestParams) {
|
|
75
|
-
for (const [member, source] of EXPRESS_REQUEST_SOURCE_BY_MEMBER_CALL) {
|
|
76
|
-
if (enabledSources.has(source) && calls.has(`${parameter}.${member}`))
|
|
77
|
-
return source;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return null;
|
|
62
|
+
return sourceFromPrefixedMembers(requestParams.map((parameter) => `${parameter}.`), memberCallSites, EXPRESS_REQUEST_SOURCE_BY_MEMBER_CALL, enabledSources);
|
|
81
63
|
}
|
|
82
64
|
function isExpressFile(imports) {
|
|
83
65
|
return imports.some((imp) => imp.source === 'express');
|
|
84
66
|
}
|
|
85
67
|
function isExpressHandlerCall(contextualCallSite) {
|
|
86
|
-
|
|
87
|
-
return false;
|
|
88
|
-
const method = bareName(contextualCallSite);
|
|
89
|
-
return EXPRESS_HANDLER_METHODS.has(method);
|
|
90
|
-
}
|
|
91
|
-
function bareName(qualified) {
|
|
92
|
-
const dot = qualified.lastIndexOf('.');
|
|
93
|
-
return dot < 0 ? qualified : qualified.slice(dot + 1);
|
|
68
|
+
return isKnownHandlerCall(contextualCallSite, EXPRESS_HANDLER_METHODS);
|
|
94
69
|
}
|
|
95
70
|
//# sourceMappingURL=frameworkExpressSources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkExpressSources.js","sourceRoot":"","sources":["../../src/core/frameworkExpressSources.ts"],"names":[],"mappings":"AAAA,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAiB;IAClE,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC5B,CAAC,OAAO,EAAE,mBAAmB,CAAC;IAC9B,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IAChC,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAClC,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAClC,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAiB;IAC/D,CAAC,aAAa,EAAE,yBAAyB,CAAC;IAC1C,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAC1B,CAAC,MAAM,EAAE,kBAAkB,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,qCAAqC,GAAG,IAAI,GAAG,CAAiB;IACpE,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAC1B,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IAChC,CAAC,OAAO,EAAE,mBAAmB,CAAC;CAC/B,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAChE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,mCAAmC,CAAC,MAAM,EAAE;IAC/C,GAAG,gCAAgC,CAAC,MAAM,EAAE;IAC5C,GAAG,qCAAqC,CAAC,MAAM,EAAE;CAClD,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,UAAoB,EACpB,UAAoB,EACpB,gBAA0B,EAC1B,eAAyB,EACzB,cAA2B,EAC3B,kBAAsC,EACtC,OAAkC;IAElC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,oBAAoB,CAAC,aAAa,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAC5G,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAoB;IAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"frameworkExpressSources.js","sourceRoot":"","sources":["../../src/core/frameworkExpressSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isKnownHandlerCall, matchingParameters, sourceFromExactMembers, sourceFromPrefixedMembers, } from './frameworkSourceMatching.js';
|
|
1
2
|
const FASTIFY_REQUEST_SOURCE_BY_REFERENCE = new Map([
|
|
2
3
|
['body', 'fastify.request.body'],
|
|
3
4
|
['query', 'fastify.request.query'],
|
|
@@ -35,40 +36,22 @@ export function fastifyRequestSource(parameters, references, memberReferences, e
|
|
|
35
36
|
return null;
|
|
36
37
|
if (!isFastifyHandlerCall(contextualCallSite))
|
|
37
38
|
return null;
|
|
38
|
-
const requestParams = parameters
|
|
39
|
+
const requestParams = matchingParameters(parameters, FASTIFY_REQUEST_PARAM_NAMES);
|
|
39
40
|
if (requestParams.length === 0)
|
|
40
41
|
return null;
|
|
41
42
|
return (fastifyMemberReferenceSource(requestParams, memberReferences, enabledSources) ??
|
|
42
43
|
fastifyReferenceSource(references, enabledSources));
|
|
43
44
|
}
|
|
44
45
|
function fastifyReferenceSource(references, enabledSources) {
|
|
45
|
-
|
|
46
|
-
for (const [reference, source] of FASTIFY_REQUEST_SOURCE_BY_REFERENCE) {
|
|
47
|
-
if (enabledSources.has(source) && refs.has(reference))
|
|
48
|
-
return source;
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
46
|
+
return sourceFromExactMembers(references, FASTIFY_REQUEST_SOURCE_BY_REFERENCE, enabledSources);
|
|
51
47
|
}
|
|
52
48
|
function fastifyMemberReferenceSource(requestParams, memberReferences, enabledSources) {
|
|
53
|
-
|
|
54
|
-
for (const parameter of requestParams) {
|
|
55
|
-
for (const [member, source] of FASTIFY_REQUEST_SOURCE_BY_MEMBER) {
|
|
56
|
-
if (enabledSources.has(source) && members.has(`${parameter}.${member}`))
|
|
57
|
-
return source;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return null;
|
|
49
|
+
return sourceFromPrefixedMembers(requestParams.map((parameter) => `${parameter}.`), memberReferences, FASTIFY_REQUEST_SOURCE_BY_MEMBER, enabledSources);
|
|
61
50
|
}
|
|
62
51
|
function isFastifyFile(imports) {
|
|
63
52
|
return imports.some((imp) => imp.source === 'fastify' || imp.source.startsWith('fastify/'));
|
|
64
53
|
}
|
|
65
54
|
function isFastifyHandlerCall(contextualCallSite) {
|
|
66
|
-
|
|
67
|
-
return false;
|
|
68
|
-
return FASTIFY_HANDLER_METHODS.has(bareName(contextualCallSite));
|
|
69
|
-
}
|
|
70
|
-
function bareName(qualified) {
|
|
71
|
-
const dot = qualified.lastIndexOf('.');
|
|
72
|
-
return dot < 0 ? qualified : qualified.slice(dot + 1);
|
|
55
|
+
return isKnownHandlerCall(contextualCallSite, FASTIFY_HANDLER_METHODS);
|
|
73
56
|
}
|
|
74
57
|
//# sourceMappingURL=frameworkFastifySources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkFastifySources.js","sourceRoot":"","sources":["../../src/core/frameworkFastifySources.ts"],"names":[],"mappings":"AAAA,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAiB;IAClE,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAClC,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IACpC,CAAC,SAAS,EAAE,yBAAyB,CAAC;IACtC,CAAC,SAAS,EAAE,yBAAyB,CAAC;IACtC,CAAC,IAAI,EAAE,oBAAoB,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAiB;IAC/D,CAAC,aAAa,EAAE,6BAA6B,CAAC;IAC9C,CAAC,SAAS,EAAE,yBAAyB,CAAC;IACtC,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,UAAU,EAAE,0BAA0B,CAAC;IACxC,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAC9B,CAAC,aAAa,EAAE,6BAA6B,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAChE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,mCAAmC,CAAC,MAAM,EAAE;IAC/C,GAAG,gCAAgC,CAAC,MAAM,EAAE;CAC7C,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,UAAoB,EACpB,UAAoB,EACpB,gBAA0B,EAC1B,cAA2B,EAC3B,kBAAsC,EACtC,OAAkC;IAElC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"frameworkFastifySources.js","sourceRoot":"","sources":["../../src/core/frameworkFastifySources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,mCAAmC,GAAG,IAAI,GAAG,CAAiB;IAClE,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAClC,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IACpC,CAAC,SAAS,EAAE,yBAAyB,CAAC;IACtC,CAAC,SAAS,EAAE,yBAAyB,CAAC;IACtC,CAAC,IAAI,EAAE,oBAAoB,CAAC;CAC7B,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAiB;IAC/D,CAAC,aAAa,EAAE,6BAA6B,CAAC;IAC9C,CAAC,SAAS,EAAE,yBAAyB,CAAC;IACtC,CAAC,MAAM,EAAE,sBAAsB,CAAC;IAChC,CAAC,UAAU,EAAE,0BAA0B,CAAC;IACxC,CAAC,KAAK,EAAE,qBAAqB,CAAC;IAC9B,CAAC,aAAa,EAAE,6BAA6B,CAAC;CAC/C,CAAC,CAAC;AAEH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAChE,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,GAAG,mCAAmC,CAAC,MAAM,EAAE;IAC/C,GAAG,gCAAgC,CAAC,MAAM,EAAE;CAC7C,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAClC,UAAoB,EACpB,UAAoB,EACpB,gBAA0B,EAC1B,cAA2B,EAC3B,kBAAsC,EACtC,OAAkC;IAElC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,aAAa,GAAG,kBAAkB,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;IAClF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,CACL,4BAA4B,CAAC,aAAa,EAAE,gBAAgB,EAAE,cAAc,CAAC;QAC7E,sBAAsB,CAAC,UAAU,EAAE,cAAc,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAoB,EAAE,cAA2B;IAC/E,OAAO,sBAAsB,CAAC,UAAU,EAAE,mCAAmC,EAAE,cAAc,CAAC,CAAC;AACjG,CAAC;AAED,SAAS,4BAA4B,CACnC,aAAuB,EACvB,gBAA0B,EAC1B,cAA2B;IAE3B,OAAO,yBAAyB,CAC9B,aAAa,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,GAAG,CAAC,EACjD,gBAAgB,EAChB,gCAAgC,EAChC,cAAc,CACf,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAkC;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,oBAAoB,CAAC,kBAAsC;IAClE,OAAO,kBAAkB,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
+
import { isKnownHandlerCall, matchingParameters, sourceFromPrefixedMembers, } from './frameworkSourceMatching.js';
|
|
1
2
|
const HONO_REQUEST_SOURCE_BY_MEMBER_CALL = new Map([
|
|
2
3
|
['json', 'hono.req.json'],
|
|
3
4
|
['parseBody', 'hono.req.parseBody'],
|
|
4
5
|
['text', 'hono.req.text'],
|
|
6
|
+
['arrayBuffer', 'hono.req.arrayBuffer'],
|
|
7
|
+
['blob', 'hono.req.blob'],
|
|
8
|
+
['formData', 'hono.req.formData'],
|
|
5
9
|
['query', 'hono.req.query'],
|
|
10
|
+
['queries', 'hono.req.queries'],
|
|
6
11
|
['param', 'hono.req.param'],
|
|
7
12
|
['header', 'hono.req.header'],
|
|
13
|
+
['raw.headers.get', 'hono.req.raw.headers'],
|
|
8
14
|
['valid', 'hono.req.valid'],
|
|
9
15
|
]);
|
|
10
16
|
const HONO_REQUEST_SOURCE_BY_MEMBER_REFERENCE = new Map([
|
|
11
17
|
['url', 'hono.req.url'],
|
|
12
18
|
['path', 'hono.req.path'],
|
|
19
|
+
['raw.url', 'hono.req.raw.url'],
|
|
20
|
+
['raw.headers', 'hono.req.raw.headers'],
|
|
13
21
|
]);
|
|
14
22
|
const HONO_CONTEXT_PARAM_NAMES = new Set(['c', 'ctx', 'context']);
|
|
15
23
|
const HONO_HANDLER_METHODS = new Set([
|
|
@@ -32,42 +40,22 @@ export function honoRequestSource(parameters, memberCallSites, memberReferences,
|
|
|
32
40
|
return null;
|
|
33
41
|
if (!isHonoHandlerCall(contextualCallSite))
|
|
34
42
|
return null;
|
|
35
|
-
const contextParams = parameters
|
|
43
|
+
const contextParams = matchingParameters(parameters, HONO_CONTEXT_PARAM_NAMES);
|
|
36
44
|
if (contextParams.length === 0)
|
|
37
45
|
return null;
|
|
38
46
|
return (honoMemberCallSource(contextParams, memberCallSites, enabledSources) ??
|
|
39
47
|
honoMemberReferenceSource(contextParams, memberReferences, enabledSources));
|
|
40
48
|
}
|
|
41
49
|
function honoMemberCallSource(contextParams, memberCallSites, enabledSources) {
|
|
42
|
-
|
|
43
|
-
for (const parameter of contextParams) {
|
|
44
|
-
for (const [callee, source] of HONO_REQUEST_SOURCE_BY_MEMBER_CALL) {
|
|
45
|
-
if (enabledSources.has(source) && members.has(`${parameter}.req.${callee}`))
|
|
46
|
-
return source;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return null;
|
|
50
|
+
return sourceFromPrefixedMembers(contextParams.map((parameter) => `${parameter}.req.`), memberCallSites, HONO_REQUEST_SOURCE_BY_MEMBER_CALL, enabledSources);
|
|
50
51
|
}
|
|
51
52
|
function honoMemberReferenceSource(contextParams, memberReferences, enabledSources) {
|
|
52
|
-
|
|
53
|
-
for (const parameter of contextParams) {
|
|
54
|
-
for (const [member, source] of HONO_REQUEST_SOURCE_BY_MEMBER_REFERENCE) {
|
|
55
|
-
if (enabledSources.has(source) && members.has(`${parameter}.req.${member}`))
|
|
56
|
-
return source;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return null;
|
|
53
|
+
return sourceFromPrefixedMembers(contextParams.map((parameter) => `${parameter}.req.`), memberReferences, HONO_REQUEST_SOURCE_BY_MEMBER_REFERENCE, enabledSources);
|
|
60
54
|
}
|
|
61
55
|
function isHonoFile(imports) {
|
|
62
56
|
return imports.some((imp) => imp.source === 'hono' || imp.source.startsWith('hono/'));
|
|
63
57
|
}
|
|
64
58
|
function isHonoHandlerCall(contextualCallSite) {
|
|
65
|
-
|
|
66
|
-
return false;
|
|
67
|
-
return HONO_HANDLER_METHODS.has(bareName(contextualCallSite));
|
|
68
|
-
}
|
|
69
|
-
function bareName(qualified) {
|
|
70
|
-
const dot = qualified.lastIndexOf('.');
|
|
71
|
-
return dot < 0 ? qualified : qualified.slice(dot + 1);
|
|
59
|
+
return isKnownHandlerCall(contextualCallSite, HONO_HANDLER_METHODS);
|
|
72
60
|
}
|
|
73
61
|
//# sourceMappingURL=frameworkHonoSources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkHonoSources.js","sourceRoot":"","sources":["../../src/core/frameworkHonoSources.ts"],"names":[],"mappings":"AAAA,MAAM,kCAAkC,GAAG,IAAI,GAAG,CAAiB;IACjE,CAAC,MAAM,EAAE,eAAe,CAAC;IACzB,CAAC,WAAW,EAAE,oBAAoB,CAAC;IACnC,CAAC,MAAM,EAAE,eAAe,CAAC;IACzB,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAC3B,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC7B,CAAC,OAAO,EAAE,gBAAgB,CAAC;CAC5B,CAAC,CAAC;AAEH,MAAM,uCAAuC,GAAG,IAAI,GAAG,CAAiB;IACtE,CAAC,KAAK,EAAE,cAAc,CAAC;IACvB,CAAC,MAAM,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"frameworkHonoSources.js","sourceRoot":"","sources":["../../src/core/frameworkHonoSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isKnownHandlerCall, matchingParameters, sourceFromPrefixedMembers, } from './frameworkSourceMatching.js';
|
|
1
2
|
const KOA_REQUEST_SOURCE_BY_MEMBER = new Map([
|
|
2
3
|
['request.body', 'koa.ctx.request.body'],
|
|
3
4
|
['request.query', 'koa.ctx.request.query'],
|
|
@@ -40,42 +41,22 @@ export function koaRequestSource(parameters, memberReferences, memberCallSites,
|
|
|
40
41
|
return null;
|
|
41
42
|
if (!isKoaHandlerCall(contextualCallSite))
|
|
42
43
|
return null;
|
|
43
|
-
const contextParams = parameters
|
|
44
|
+
const contextParams = matchingParameters(parameters, KOA_CONTEXT_PARAM_NAMES);
|
|
44
45
|
if (contextParams.length === 0)
|
|
45
46
|
return null;
|
|
46
47
|
return (koaMemberReferenceSource(contextParams, memberReferences, enabledSources) ??
|
|
47
48
|
koaMemberCallSource(contextParams, memberCallSites, enabledSources));
|
|
48
49
|
}
|
|
49
50
|
function koaMemberReferenceSource(contextParams, memberReferences, enabledSources) {
|
|
50
|
-
|
|
51
|
-
for (const parameter of contextParams) {
|
|
52
|
-
for (const [member, source] of KOA_REQUEST_SOURCE_BY_MEMBER) {
|
|
53
|
-
if (enabledSources.has(source) && members.has(`${parameter}.${member}`))
|
|
54
|
-
return source;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return null;
|
|
51
|
+
return sourceFromPrefixedMembers(contextParams.map((parameter) => `${parameter}.`), memberReferences, KOA_REQUEST_SOURCE_BY_MEMBER, enabledSources);
|
|
58
52
|
}
|
|
59
53
|
function koaMemberCallSource(contextParams, memberCallSites, enabledSources) {
|
|
60
|
-
|
|
61
|
-
for (const parameter of contextParams) {
|
|
62
|
-
for (const [member, source] of KOA_REQUEST_SOURCE_BY_MEMBER_CALL) {
|
|
63
|
-
if (enabledSources.has(source) && calls.has(`${parameter}.${member}`))
|
|
64
|
-
return source;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return null;
|
|
54
|
+
return sourceFromPrefixedMembers(contextParams.map((parameter) => `${parameter}.`), memberCallSites, KOA_REQUEST_SOURCE_BY_MEMBER_CALL, enabledSources);
|
|
68
55
|
}
|
|
69
56
|
function isKoaFile(imports) {
|
|
70
57
|
return imports.some((imp) => imp.source === 'koa' || imp.source === '@koa/router' || imp.source === 'koa-router');
|
|
71
58
|
}
|
|
72
59
|
function isKoaHandlerCall(contextualCallSite) {
|
|
73
|
-
|
|
74
|
-
return false;
|
|
75
|
-
return KOA_HANDLER_METHODS.has(bareName(contextualCallSite));
|
|
76
|
-
}
|
|
77
|
-
function bareName(qualified) {
|
|
78
|
-
const dot = qualified.lastIndexOf('.');
|
|
79
|
-
return dot < 0 ? qualified : qualified.slice(dot + 1);
|
|
60
|
+
return isKnownHandlerCall(contextualCallSite, KOA_HANDLER_METHODS);
|
|
80
61
|
}
|
|
81
62
|
//# sourceMappingURL=frameworkKoaSources.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkKoaSources.js","sourceRoot":"","sources":["../../src/core/frameworkKoaSources.ts"],"names":[],"mappings":"AAAA,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAiB;IAC3D,CAAC,cAAc,EAAE,sBAAsB,CAAC;IACxC,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAC1C,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;IAC9C,CAAC,YAAY,EAAE,oBAAoB,CAAC;IACpC,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACtC,CAAC,qBAAqB,EAAE,6BAA6B,CAAC;IACtD,CAAC,cAAc,EAAE,sBAAsB,CAAC;IACxC,CAAC,OAAO,EAAE,eAAe,CAAC;IAC1B,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAC5B,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAC9B,CAAC,IAAI,EAAE,YAAY,CAAC;IACpB,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACtC,CAAC,MAAM,EAAE,cAAc,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAiB;IAChE,CAAC,KAAK,EAAE,aAAa,CAAC;IACtB,CAAC,aAAa,EAAE,qBAAqB,CAAC;IACtC,CAAC,aAAa,EAAE,qBAAqB,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;CACN,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,4BAA4B,CAAC,MAAM,EAAE;IACxC,GAAG,iCAAiC,CAAC,MAAM,EAAE;CAC9C,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAC9B,UAAoB,EACpB,gBAA0B,EAC1B,eAAyB,EACzB,cAA2B,EAC3B,kBAAsC,EACtC,OAAkC;IAElC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,aAAa,GAAG,
|
|
1
|
+
{"version":3,"file":"frameworkKoaSources.js","sourceRoot":"","sources":["../../src/core/frameworkKoaSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
export declare const NEXT_ROUTE_REQUEST_SOURCES: string[];
|
|
2
|
-
export declare function nextRouteRequestSource(file: string, functionName: string, memberCallSites: string[], memberReferences: string[], parameters: string[], enabledSources: Set<string
|
|
2
|
+
export declare function nextRouteRequestSource(file: string, functionName: string, memberCallSites: string[], memberReferences: string[], parameters: string[], enabledSources: Set<string>, imports?: Array<{
|
|
3
|
+
source: string;
|
|
4
|
+
specifiers?: string[];
|
|
5
|
+
kind?: string;
|
|
6
|
+
typeOnly?: boolean;
|
|
7
|
+
}>, directCallSites?: string[]): string | null;
|
|
@@ -3,17 +3,32 @@ const NEXT_ROUTE_SOURCE_BY_CALLEE = new Map([
|
|
|
3
3
|
['formData', 'request.formData'],
|
|
4
4
|
['text', 'request.text'],
|
|
5
5
|
['arrayBuffer', 'request.arrayBuffer'],
|
|
6
|
+
['headers.get', 'request.headers'],
|
|
7
|
+
['cookies.get', 'request.cookies'],
|
|
8
|
+
['cookies.getAll', 'request.cookies'],
|
|
6
9
|
]);
|
|
7
10
|
const NEXT_ROUTE_SOURCE_BY_REFERENCE = new Map([
|
|
8
11
|
['url', 'request.url'],
|
|
12
|
+
['headers', 'request.headers'],
|
|
13
|
+
['cookies', 'request.cookies'],
|
|
14
|
+
['nextUrl.pathname', 'request.nextUrl.pathname'],
|
|
9
15
|
['nextUrl.searchParams', 'request.nextUrl.searchParams'],
|
|
10
16
|
]);
|
|
17
|
+
const NEXT_HEADERS_MODULE_SOURCE_BY_CALLEE = new Map([
|
|
18
|
+
['headers', 'next.headers'],
|
|
19
|
+
['cookies', 'next.cookies'],
|
|
20
|
+
]);
|
|
11
21
|
const NEXT_ROUTE_HANDLERS = new Set(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']);
|
|
12
22
|
export const NEXT_ROUTE_REQUEST_SOURCES = [
|
|
13
23
|
...NEXT_ROUTE_SOURCE_BY_CALLEE.values(),
|
|
14
24
|
...NEXT_ROUTE_SOURCE_BY_REFERENCE.values(),
|
|
25
|
+
...NEXT_HEADERS_MODULE_SOURCE_BY_CALLEE.values(),
|
|
15
26
|
];
|
|
16
|
-
export function nextRouteRequestSource(file, functionName, memberCallSites, memberReferences, parameters, enabledSources) {
|
|
27
|
+
export function nextRouteRequestSource(file, functionName, memberCallSites, memberReferences, parameters, enabledSources, imports = [], directCallSites = []) {
|
|
28
|
+
return (nextHeadersHelperSource(directCallSites, imports, enabledSources) ??
|
|
29
|
+
nextRouteParameterSource(file, functionName, memberCallSites, memberReferences, parameters, enabledSources));
|
|
30
|
+
}
|
|
31
|
+
function nextRouteParameterSource(file, functionName, memberCallSites, memberReferences, parameters, enabledSources) {
|
|
17
32
|
if (!isNextRouteHandler(file, functionName))
|
|
18
33
|
return null;
|
|
19
34
|
if (parameters.length === 0 || (memberCallSites.length === 0 && memberReferences.length === 0)) {
|
|
@@ -22,6 +37,21 @@ export function nextRouteRequestSource(file, functionName, memberCallSites, memb
|
|
|
22
37
|
return (nextRouteCallSource(parameters, memberCallSites, enabledSources) ??
|
|
23
38
|
nextRouteReferenceSource(parameters, memberReferences, enabledSources));
|
|
24
39
|
}
|
|
40
|
+
function nextHeadersHelperSource(directCallSites, imports, enabledSources) {
|
|
41
|
+
const calls = new Set(directCallSites);
|
|
42
|
+
for (const [callee, source] of NEXT_HEADERS_MODULE_SOURCE_BY_CALLEE) {
|
|
43
|
+
if (enabledSources.has(source) && calls.has(callee) && hasNextHeadersImport(imports, callee)) {
|
|
44
|
+
return source;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
function hasNextHeadersImport(imports, specifier) {
|
|
50
|
+
return imports.some((imp) => imp.source === 'next/headers' &&
|
|
51
|
+
imp.kind === 'static' &&
|
|
52
|
+
imp.typeOnly !== true &&
|
|
53
|
+
(imp.specifiers ?? []).includes(specifier));
|
|
54
|
+
}
|
|
25
55
|
function nextRouteCallSource(parameters, memberCallSites, enabledSources) {
|
|
26
56
|
const calls = new Set(memberCallSites);
|
|
27
57
|
for (const parameter of parameters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkNextRouteSources.js","sourceRoot":"","sources":["../../src/core/frameworkNextRouteSources.ts"],"names":[],"mappings":"AAAA,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAiB;IAC1D,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAChC,CAAC,MAAM,EAAE,cAAc,CAAC;IACxB,CAAC,aAAa,EAAE,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"frameworkNextRouteSources.js","sourceRoot":"","sources":["../../src/core/frameworkNextRouteSources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
const REMIX_REQUEST_SOURCE_BY_CALLEE = new Map([
|
|
2
|
+
['json', 'remix.request.json'],
|
|
3
|
+
['formData', 'remix.request.formData'],
|
|
4
|
+
['text', 'remix.request.text'],
|
|
5
|
+
['arrayBuffer', 'remix.request.arrayBuffer'],
|
|
6
|
+
['headers.get', 'remix.request.headers'],
|
|
7
|
+
]);
|
|
8
|
+
const REMIX_REQUEST_SOURCE_BY_REFERENCE = new Map([
|
|
9
|
+
['url', 'remix.request.url'],
|
|
10
|
+
['headers', 'remix.request.headers'],
|
|
11
|
+
['signal', 'remix.request.signal'],
|
|
12
|
+
]);
|
|
13
|
+
const REMIX_ROUTE_FUNCTIONS = new Set(['action', 'loader', 'clientAction', 'clientLoader']);
|
|
14
|
+
export const REMIX_REQUEST_SOURCES = [
|
|
15
|
+
...REMIX_REQUEST_SOURCE_BY_CALLEE.values(),
|
|
16
|
+
...REMIX_REQUEST_SOURCE_BY_REFERENCE.values(),
|
|
17
|
+
'remix.params',
|
|
18
|
+
];
|
|
19
|
+
export function remixRequestSource(file, functionName, parameters, memberCallSites, memberReferences, enabledSources) {
|
|
20
|
+
if (!isRemixRouteHandler(file, functionName))
|
|
21
|
+
return null;
|
|
22
|
+
return (remixRequestCallSource(parameters, memberCallSites, enabledSources) ??
|
|
23
|
+
remixRequestReferenceSource(parameters, memberReferences, enabledSources) ??
|
|
24
|
+
remixParamsSource(parameters, memberReferences, enabledSources));
|
|
25
|
+
}
|
|
26
|
+
function remixRequestCallSource(parameters, memberCallSites, enabledSources) {
|
|
27
|
+
if (!parameters.includes('request'))
|
|
28
|
+
return null;
|
|
29
|
+
const calls = new Set(memberCallSites);
|
|
30
|
+
for (const [member, source] of REMIX_REQUEST_SOURCE_BY_CALLEE) {
|
|
31
|
+
if (enabledSources.has(source) && calls.has(`request.${member}`))
|
|
32
|
+
return source;
|
|
33
|
+
}
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
function remixRequestReferenceSource(parameters, memberReferences, enabledSources) {
|
|
37
|
+
if (!parameters.includes('request'))
|
|
38
|
+
return null;
|
|
39
|
+
const references = new Set(memberReferences);
|
|
40
|
+
for (const [member, source] of REMIX_REQUEST_SOURCE_BY_REFERENCE) {
|
|
41
|
+
if (enabledSources.has(source) && references.has(`request.${member}`))
|
|
42
|
+
return source;
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
function remixParamsSource(parameters, memberReferences, enabledSources) {
|
|
47
|
+
if (!enabledSources.has('remix.params') || !parameters.includes('params'))
|
|
48
|
+
return null;
|
|
49
|
+
return memberReferences.some((reference) => reference.startsWith('params.'))
|
|
50
|
+
? 'remix.params'
|
|
51
|
+
: null;
|
|
52
|
+
}
|
|
53
|
+
function isRemixRouteHandler(file, functionName) {
|
|
54
|
+
if (!REMIX_ROUTE_FUNCTIONS.has(bareName(functionName)))
|
|
55
|
+
return false;
|
|
56
|
+
const normalized = file.replace(/\\/g, '/');
|
|
57
|
+
return /(?:^|\/)app\/routes\/.+\.(?:cjs|mjs|js|jsx|ts|tsx)$/.test(normalized);
|
|
58
|
+
}
|
|
59
|
+
function bareName(qualified) {
|
|
60
|
+
const dot = qualified.lastIndexOf('.');
|
|
61
|
+
return dot < 0 ? qualified : qualified.slice(dot + 1);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=frameworkRemixSources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworkRemixSources.js","sourceRoot":"","sources":["../../src/core/frameworkRemixSources.ts"],"names":[],"mappings":"AAAA,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAiB;IAC7D,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,UAAU,EAAE,wBAAwB,CAAC;IACtC,CAAC,MAAM,EAAE,oBAAoB,CAAC;IAC9B,CAAC,aAAa,EAAE,2BAA2B,CAAC;IAC5C,CAAC,aAAa,EAAE,uBAAuB,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAiB;IAChE,CAAC,KAAK,EAAE,mBAAmB,CAAC;IAC5B,CAAC,SAAS,EAAE,uBAAuB,CAAC;IACpC,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,GAAG,8BAA8B,CAAC,MAAM,EAAE;IAC1C,GAAG,iCAAiC,CAAC,MAAM,EAAE;IAC7C,cAAc;CACf,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,YAAoB,EACpB,UAAoB,EACpB,eAAyB,EACzB,gBAA0B,EAC1B,cAA2B;IAE3B,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1D,OAAO,CACL,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,cAAc,CAAC;QACnE,2BAA2B,CAAC,UAAU,EAAE,gBAAgB,EAAE,cAAc,CAAC;QACzE,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,UAAoB,EACpB,eAAyB,EACzB,cAA2B;IAE3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,8BAA8B,EAAE,CAAC;QAC9D,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC;YAAE,OAAO,MAAM,CAAC;IAClF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAoB,EACpB,gBAA0B,EAC1B,cAA2B;IAE3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,iCAAiC,EAAE,CAAC;QACjE,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,CAAC;YAAE,OAAO,MAAM,CAAC;IACvF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAoB,EACpB,gBAA0B,EAC1B,cAA2B;IAE3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvF,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1E,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,YAAoB;IAC7D,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,OAAO,qDAAqD,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,QAAQ,CAAC,SAAiB;IACjC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface FrameworkRequestSourceContext {
|
|
2
|
+
file: string;
|
|
3
|
+
functionName: string;
|
|
4
|
+
memberCallSites: string[];
|
|
5
|
+
memberReferences: string[];
|
|
6
|
+
parameters: string[];
|
|
7
|
+
enabledSources: Set<string>;
|
|
8
|
+
references?: string[];
|
|
9
|
+
contextualCallSite?: string;
|
|
10
|
+
imports?: Array<{
|
|
11
|
+
source: string;
|
|
12
|
+
}>;
|
|
13
|
+
directCallSites?: string[];
|
|
14
|
+
}
|
|
15
|
+
export type FrameworkRequestSourceResolver = (context: FrameworkRequestSourceContext) => string | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworkSourceContext.js","sourceRoot":"","sources":["../../src/core/frameworkSourceContext.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type FrameworkSourceMap = ReadonlyMap<string, string>;
|
|
2
|
+
export declare function sourceFromExactMembers(members: string[], sourceByMember: FrameworkSourceMap, enabledSources: ReadonlySet<string>): string | null;
|
|
3
|
+
export declare function sourceFromPrefixedMembers(prefixes: string[], members: string[], sourceByMember: FrameworkSourceMap, enabledSources: ReadonlySet<string>): string | null;
|
|
4
|
+
export declare function matchingParameters(parameters: string[], allowedNames: ReadonlySet<string>): string[];
|
|
5
|
+
export declare function isKnownHandlerCall(contextualCallSite: string | undefined, handlerMethods: ReadonlySet<string>): boolean;
|
|
6
|
+
export declare function bareCallName(qualified: string): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function sourceFromExactMembers(members, sourceByMember, enabledSources) {
|
|
2
|
+
const memberSet = new Set(members);
|
|
3
|
+
for (const [member, source] of sourceByMember) {
|
|
4
|
+
if (enabledSources.has(source) && memberSet.has(member))
|
|
5
|
+
return source;
|
|
6
|
+
}
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
export function sourceFromPrefixedMembers(prefixes, members, sourceByMember, enabledSources) {
|
|
10
|
+
const memberSet = new Set(members);
|
|
11
|
+
for (const prefix of prefixes) {
|
|
12
|
+
for (const [member, source] of sourceByMember) {
|
|
13
|
+
if (enabledSources.has(source) && memberSet.has(prefix + member))
|
|
14
|
+
return source;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
export function matchingParameters(parameters, allowedNames) {
|
|
20
|
+
return parameters.filter((parameter) => allowedNames.has(parameter));
|
|
21
|
+
}
|
|
22
|
+
export function isKnownHandlerCall(contextualCallSite, handlerMethods) {
|
|
23
|
+
return Boolean(contextualCallSite && handlerMethods.has(bareCallName(contextualCallSite)));
|
|
24
|
+
}
|
|
25
|
+
export function bareCallName(qualified) {
|
|
26
|
+
const dot = qualified.lastIndexOf('.');
|
|
27
|
+
return dot < 0 ? qualified : qualified.slice(dot + 1);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=frameworkSourceMatching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameworkSourceMatching.js","sourceRoot":"","sources":["../../src/core/frameworkSourceMatching.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CACpC,OAAiB,EACjB,cAAkC,EAClC,cAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC9C,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,QAAkB,EAClB,OAAiB,EACjB,cAAkC,EAClC,cAAmC;IAEnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC9C,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;gBAAE,OAAO,MAAM,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAoB,EAAE,YAAiC;IACxF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,kBAAsC,EACtC,cAAmC;IAEnC,OAAO,OAAO,CAAC,kBAAkB,IAAI,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
|