@skyramp/mcp 0.4.1 → 0.4.2-rc.2
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/build/commands/localDevTestChangesCommand.js +2 -1
- package/build/commands/recommendTestsAndExecuteCommand.js +15 -7
- package/build/commands/testThisEndpointCommand.js +35 -6
- package/build/execution/wrapperConfig.d.ts +56 -0
- package/build/execution/wrapperConfig.js +155 -0
- package/build/index.js +40 -10
- package/build/playwright/blueprintDigest.js +28 -7
- package/build/playwright/registerPlaywrightTools.js +47 -28
- package/build/playwright/traceExportStore.d.ts +22 -0
- package/build/playwright/traceExportStore.js +81 -0
- package/build/playwright/traceRecordingPrompt.js +11 -3
- package/build/prompts/code-reuse.js +118 -49
- package/build/prompts/fix-error-prompt.d.ts +9 -1
- package/build/prompts/fix-error-prompt.js +31 -28
- package/build/prompts/local-dev/local-dev-plan.d.ts +3 -0
- package/build/prompts/local-dev/local-dev-plan.js +8 -23
- package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
- package/build/prompts/local-dev/local-dev-prompts.js +31 -4
- package/build/prompts/modularization/integration-test-modularization.js +13 -6
- package/build/prompts/modularization/ui-test-modularization.js +1 -1
- package/build/prompts/personas.js +1 -1
- package/build/prompts/pom-aware-code-reuse.js +7 -9
- package/build/prompts/reuse-hand-off.d.ts +64 -0
- package/build/prompts/reuse-hand-off.js +130 -0
- package/build/prompts/shared-helper-policy.d.ts +124 -2
- package/build/prompts/shared-helper-policy.js +178 -12
- package/build/prompts/startTraceCollectionPrompts.js +1 -1
- package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +7 -8
- package/build/prompts/sut-setup/modes/dockerComposePrompt.js +1 -1
- package/build/prompts/sut-setup/shared.d.ts +4 -1
- package/build/prompts/sut-setup/shared.js +6 -4
- package/build/prompts/test-maintenance/actionsInstructions.d.ts +19 -11
- package/build/prompts/test-maintenance/actionsInstructions.js +47 -26
- package/build/prompts/test-maintenance/drift-analysis-prompt.d.ts +16 -8
- package/build/prompts/test-maintenance/drift-analysis-prompt.js +93 -38
- package/build/prompts/test-maintenance/driftAnalysisSections.js +5 -3
- package/build/prompts/test-maintenance/driftAnalysisShared.js +4 -2
- package/build/prompts/test-maintenance/uiDriftAnalysisSections.js +8 -5
- package/build/prompts/test-recommendation/recommendationSections.js +19 -8
- package/build/prompts/test-recommendation/recommendationShared.d.ts +1 -1
- package/build/prompts/test-recommendation/recommendationShared.js +0 -1
- package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +5 -2
- package/build/prompts/test-recommendation/test-recommendation-prompt.js +10 -7
- package/build/prompts/testbot/testbot-prompts.js +133 -63
- package/build/recommendation/answers.js +18 -9
- package/build/recommendation/pullRequestText.js +1 -1
- package/build/recommendation/registerPlan.js +31 -17
- package/build/recommendation/subjectStep.d.ts +8 -10
- package/build/recommendation/subjectStep.js +17 -16
- package/build/recommendation/types.d.ts +71 -17
- package/build/recommendation/types.js +9 -15
- package/build/recommendation/verifierContracts.d.ts +7 -3
- package/build/recommendation/verifierContracts.js +8 -4
- package/build/recommendation/verifiers/changedFile.js +11 -13
- package/build/recommendation/verifiers/citedPath.d.ts +8 -0
- package/build/recommendation/verifiers/citedPath.js +16 -2
- package/build/recommendation/verifiers/coverage.d.ts +2 -2
- package/build/recommendation/verifiers/coverage.js +190 -134
- package/build/recommendation/verifiers/defects.js +56 -16
- package/build/recommendation/verifiers/deliveredMatchesPlan.d.ts +7 -1
- package/build/recommendation/verifiers/deliveredMatchesPlan.js +28 -14
- package/build/recommendation/verifiers/endpointGrounded.js +14 -8
- package/build/recommendation/verifiers/existingCoverage.d.ts +6 -0
- package/build/recommendation/verifiers/existingCoverage.js +30 -21
- package/build/recommendation/verifiers/expectedOutcome.js +17 -8
- package/build/recommendation/verifiers/expectedValueSourced.js +54 -43
- package/build/recommendation/verifiers/issueTraceability.d.ts +5 -0
- package/build/recommendation/verifiers/issueTraceability.js +64 -7
- package/build/recommendation/verifiers/removedElementGuarded.js +19 -11
- package/build/recommendation/verifiers/reportedCategory.js +9 -4
- package/build/recommendation/verifiers/requirementSourced.js +34 -21
- package/build/recommendation/verifiers/screenRoute.js +15 -10
- package/build/recommendation/verifiers/statedDifference.js +15 -8
- package/build/recommendation/verifiers/uiElementGrounded.js +50 -16
- package/build/resources/analysisResources.js +7 -3
- package/build/resources/progressResource.js +4 -2
- package/build/resources/sutSetupResource.js +20 -2
- package/build/resources/testbotResource.js +19 -1
- package/build/services/AnalyticsService.js +3 -1
- package/build/services/ScenarioGenerationService.js +5 -5
- package/build/services/TestDiscoveryService.js +53 -9
- package/build/services/TestExecutionService.js +63 -21
- package/build/services/TestGenerationService.d.ts +1 -1
- package/build/services/TestGenerationService.js +43 -24
- package/build/skills/enhanceAssertionsSkill.d.ts +45 -0
- package/build/skills/enhanceAssertionsSkill.js +103 -0
- package/build/skills/fixTestImportErrorsSkill.d.ts +2 -2
- package/build/skills/fixTestImportErrorsSkill.js +2 -2
- package/build/skills/runTestSkill.d.ts +6 -0
- package/build/skills/runTestSkill.js +17 -0
- package/build/skills/skillFiles.d.ts +38 -0
- package/build/skills/skillFiles.js +94 -0
- package/build/skills/validateAssertionAlignmentSkill.d.ts +34 -0
- package/build/skills/validateAssertionAlignmentSkill.js +59 -0
- package/build/tool-phases.js +4 -1
- package/build/tools/auth/loginTool.js +3 -1
- package/build/tools/auth/logoutTool.js +3 -1
- package/build/tools/budgetExcuse.d.ts +15 -0
- package/build/tools/budgetExcuse.js +113 -0
- package/build/tools/code-refactor/alignAssertionsTool.d.ts +2 -0
- package/build/tools/code-refactor/alignAssertionsTool.js +51 -0
- package/build/tools/code-refactor/assertion-state.d.ts +1 -1
- package/build/tools/code-refactor/assertion-state.js +1 -1
- package/build/tools/code-refactor/assertionOperations.d.ts +44 -0
- package/build/tools/code-refactor/assertionOperations.js +82 -0
- package/build/tools/code-refactor/assertionSkillTools.d.ts +3 -0
- package/build/tools/code-refactor/assertionSkillTools.js +86 -0
- package/build/tools/code-refactor/codeReuseTool.js +27 -3
- package/build/tools/code-refactor/enhanceAssertionsTool.js +19 -83
- package/build/tools/code-refactor/gate-markers.d.ts +51 -0
- package/build/tools/code-refactor/gate-markers.js +95 -0
- package/build/tools/code-refactor/retrofit-state.d.ts +3 -1
- package/build/tools/code-refactor/retrofit-state.js +44 -2
- package/build/tools/code-refactor/reuse-outcome.d.ts +23 -1
- package/build/tools/code-refactor/reuse-outcome.js +36 -13
- package/build/tools/code-refactor/reuse-state.d.ts +90 -16
- package/build/tools/code-refactor/reuse-state.js +191 -61
- package/build/tools/code-refactor/utils-verify-gates.d.ts +4 -0
- package/build/tools/code-refactor/utils-verify-gates.js +269 -30
- package/build/tools/code-refactor/verify-gates.d.ts +15 -1
- package/build/tools/code-refactor/verify-gates.js +36 -4
- package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
- package/build/tools/enrichTestWithMocksTool.js +9 -5
- package/build/tools/executeSkyrampTestTool.d.ts +118 -48
- package/build/tools/executeSkyrampTestTool.js +998 -372
- package/build/tools/execution-video-state.js +1 -1
- package/build/tools/fixErrorTool.js +5 -6
- package/build/tools/generate-tests/batchMockGenerationTool.js +1 -1
- package/build/tools/generate-tests/generateBatchScenarioRestTool.js +114 -73
- package/build/tools/generate-tests/generateContractRestTool.js +34 -16
- package/build/tools/generate-tests/generateE2ERestTool.d.ts +1 -0
- package/build/tools/generate-tests/generateE2ERestTool.js +9 -1
- package/build/tools/generate-tests/generateIntegrationRestTool.js +22 -7
- package/build/tools/generate-tests/generateMockRestTool.js +3 -1
- package/build/tools/generate-tests/generateUIRestTool.d.ts +2 -0
- package/build/tools/generate-tests/generateUIRestTool.js +11 -2
- package/build/tools/generate-tests/loadTestSchema.js +1 -3
- package/build/tools/generate-tests/planGuard.js +6 -3
- package/build/tools/generate-tests/scenarioFileIdentity.js +4 -1
- package/build/tools/generate-tests/scenarioLint.js +17 -5
- package/build/tools/generate-tests/trace-reuse-guard.js +5 -2
- package/build/tools/generateEnrichedIntegrationTestTool.js +9 -3
- package/build/tools/one-click/oneClickTool.js +3 -1
- package/build/tools/preflightMockCheckTool.js +23 -7
- package/build/tools/submitReportTool.d.ts +51 -12
- package/build/tools/submitReportTool.js +988 -161
- package/build/tools/test-management/actionsTool.js +241 -51
- package/build/tools/test-management/analyzeChangesTool.d.ts +8 -9
- package/build/tools/test-management/analyzeChangesTool.js +127 -68
- package/build/tools/test-management/analyzeTestHealthTool.d.ts +0 -11
- package/build/tools/test-management/analyzeTestHealthTool.js +42 -76
- package/build/tools/test-management/registerTestPlanTool.d.ts +44 -34
- package/build/tools/test-management/registerTestPlanTool.js +255 -111
- package/build/tools/test-management/resolveScreenTool.js +33 -9
- package/build/tools/test-management/testsOwedBeforeRun.d.ts +28 -0
- package/build/tools/test-management/testsOwedBeforeRun.js +53 -0
- package/build/tools/trace/startTraceCollectionTool.js +3 -1
- package/build/tools/trace/stopTraceCollectionTool.js +42 -6
- package/build/tools/verifyTestDependenciesTool.d.ts +3 -0
- package/build/tools/verifyTestDependenciesTool.js +54 -0
- package/build/tools/workspace/initScanWorkspaceTool.js +9 -3
- package/build/tools/workspace/initializeWorkspaceTool.js +3 -1
- package/build/types/AssertionOutcome.d.ts +1 -1
- package/build/types/EnhanceType.d.ts +6 -0
- package/build/types/EnhanceType.js +1 -0
- package/build/types/RepositoryAnalysis.d.ts +32 -72
- package/build/types/ReuseOutcome.d.ts +100 -7
- package/build/types/ReuseOutcome.js +16 -0
- package/build/types/StepMethod.js +20 -6
- package/build/types/TestAnalysis.d.ts +10 -2
- package/build/types/TestExecution.d.ts +45 -0
- package/build/types/TestRecommendation.d.ts +1 -1
- package/build/types/TestRecommendation.js +4 -1
- package/build/types/TestTypes.d.ts +16 -0
- package/build/types/TestTypes.js +40 -3
- package/build/types/TestbotPromptOptions.d.ts +9 -1
- package/build/types/TestbotReport.d.ts +45 -9
- package/build/utils/AnalysisStateManager.d.ts +137 -34
- package/build/utils/AnalysisStateManager.js +228 -44
- package/build/utils/assertion-verify/api-shared-lints.js +34 -16
- package/build/utils/assertion-verify/metrics.js +39 -6
- package/build/utils/assertion-verify/ui-lints.js +4 -2
- package/build/utils/branchDiff.js +47 -12
- package/build/utils/canonicalJson.js +3 -1
- package/build/utils/connectionErrors.d.ts +10 -0
- package/build/utils/connectionErrors.js +10 -0
- package/build/utils/dartRouteExtractor.js +36 -7
- package/build/utils/fixAttempts.d.ts +26 -0
- package/build/utils/fixAttempts.js +109 -0
- package/build/utils/frontendSelectors.js +23 -4
- package/build/utils/generatedTestRecord.d.ts +19 -0
- package/build/utils/generatedTestRecord.js +61 -0
- package/build/utils/gitStaging.js +7 -2
- package/build/utils/initAgent.js +26 -6
- package/build/utils/language-helper.js +60 -45
- package/build/utils/pathMatching.js +2 -1
- package/build/utils/pathSignatures.js +6 -2
- package/build/utils/planMatchKeys.d.ts +2 -2
- package/build/utils/planMatchKeys.js +20 -14
- package/build/utils/pom-catalog-parse.js +7 -2
- package/build/utils/pom-scope/import-expansion.js +6 -1
- package/build/utils/pom-scope/index.js +50 -12
- package/build/utils/pom-scope/scoring.js +13 -3
- package/build/utils/pom-scope/selector-extractor.js +16 -3
- package/build/utils/pom-scope/strip.d.ts +8 -0
- package/build/utils/pom-scope/strip.js +238 -0
- package/build/utils/pom-scope/testIdDiscovery.js +14 -2
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.d.ts +1 -1
- package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.js +4 -2
- package/build/utils/pom-verify/__fixtures__/af-style/report.iframe.page.js +3 -1
- package/build/utils/pom-verify/__fixtures__/af-style/workflow-footer.page.js +3 -1
- package/build/utils/pom-verify/bindings.js +5 -1
- package/build/utils/pom-verify/calls.js +9 -2
- package/build/utils/pom-verify/verify.js +27 -5
- package/build/utils/pr-comment-parser.js +20 -7
- package/build/utils/progress.d.ts +1 -1
- package/build/utils/progress.js +1 -1
- package/build/utils/proxy-terminal.d.ts +19 -1
- package/build/utils/proxy-terminal.js +346 -21
- package/build/utils/rebaselineSnapshots.d.ts +1 -1
- package/build/utils/rebaselineSnapshots.js +6 -16
- package/build/utils/removedUiElements.js +1 -1
- package/build/utils/reportLanguage.js +35 -7
- package/build/utils/reportVerification.d.ts +14 -8
- package/build/utils/reportVerification.js +19 -19
- package/build/utils/repositorySlug.d.ts +32 -0
- package/build/utils/repositorySlug.js +77 -0
- package/build/utils/reuseRouting.d.ts +10 -0
- package/build/utils/reuseRouting.js +21 -2
- package/build/utils/runContextGauge.d.ts +27 -0
- package/build/utils/runContextGauge.js +181 -0
- package/build/utils/runSerialized.d.ts +3 -0
- package/build/utils/runSerialized.js +39 -0
- package/build/utils/screenRoutes.js +74 -18
- package/build/utils/skyrampMdContent.d.ts +1 -1
- package/build/utils/skyrampMdContent.js +1 -1
- package/build/utils/skyrampSdkVersion.d.ts +9 -0
- package/build/utils/skyrampSdkVersion.js +16 -0
- package/build/utils/sourceRouteExtractor.js +13 -6
- package/build/utils/telemetry.d.ts +1 -0
- package/build/utils/telemetry.js +8 -5
- package/build/utils/testDependencyPolicy.d.ts +9 -0
- package/build/utils/testDependencyPolicy.js +809 -0
- package/build/utils/testExecutionRecord.d.ts +94 -0
- package/build/utils/testExecutionRecord.js +269 -0
- package/build/utils/testFileClassification.d.ts +8 -0
- package/build/utils/testFileClassification.js +39 -4
- package/build/utils/trace-parser.js +62 -14
- package/build/utils/urlPath.js +3 -1
- package/build/utils/utils-verify/action-key.d.ts +46 -0
- package/build/utils/utils-verify/action-key.js +120 -38
- package/build/utils/utils-verify/action-sites.d.ts +32 -0
- package/build/utils/utils-verify/action-sites.js +202 -0
- package/build/utils/utils-verify/allow.d.ts +122 -3
- package/build/utils/utils-verify/allow.js +146 -21
- package/build/utils/utils-verify/body-reach.d.ts +120 -0
- package/build/utils/utils-verify/body-reach.js +333 -0
- package/build/utils/utils-verify/call-sites.d.ts +31 -7
- package/build/utils/utils-verify/call-sites.js +80 -13
- package/build/utils/utils-verify/delivered-imports.d.ts +43 -0
- package/build/utils/utils-verify/delivered-imports.js +84 -0
- package/build/utils/utils-verify/fixed-sleep.d.ts +96 -0
- package/build/utils/utils-verify/fixed-sleep.js +461 -0
- package/build/utils/utils-verify/in-house.d.ts +93 -0
- package/build/utils/utils-verify/in-house.js +719 -0
- package/build/utils/utils-verify/incumbent.d.ts +3 -0
- package/build/utils/utils-verify/incumbent.js +75 -0
- package/build/utils/utils-verify/index.d.ts +2 -0
- package/build/utils/utils-verify/index.js +2 -0
- package/build/utils/utils-verify/language-spec.d.ts +51 -10
- package/build/utils/utils-verify/language-spec.js +232 -21
- package/build/utils/utils-verify/locate.d.ts +26 -0
- package/build/utils/utils-verify/locate.js +125 -23
- package/build/utils/utils-verify/module-name.d.ts +40 -0
- package/build/utils/utils-verify/module-name.js +98 -0
- package/build/utils/utils-verify/parse.d.ts +56 -7
- package/build/utils/utils-verify/parse.js +195 -40
- package/build/utils/utils-verify/retrofit-equivalence.d.ts +5 -0
- package/build/utils/utils-verify/retrofit-equivalence.js +4 -2
- package/build/utils/utils-verify/stage.d.ts +5 -0
- package/build/utils/utils-verify/stage.js +47 -2
- package/build/utils/utils-verify/status-once.d.ts +62 -0
- package/build/utils/utils-verify/status-once.js +207 -0
- package/build/utils/utils-verify/typecheck.d.ts +61 -0
- package/build/utils/utils-verify/typecheck.js +338 -0
- package/build/utils/utils-verify/verify.d.ts +79 -3
- package/build/utils/utils-verify/verify.js +531 -61
- package/build/utils/versions.d.ts +3 -3
- package/build/utils/versions.js +1 -1
- package/build/utils/workspaceAuth.js +107 -37
- package/build/workspace/queryParamResolution.js +11 -4
- package/build/workspace/workspace.d.ts +72 -52
- package/build/workspace/workspace.js +19 -15
- package/node_modules/playwright/ThirdPartyNotices.txt +19 -19
- package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +8 -2
- package/node_modules/playwright/lib/mcp/skyramp/common/cssValue.js +87 -0
- package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +31 -0
- package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +3 -0
- package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +181 -15
- package/node_modules/playwright/lib/mcp/test/skyRampExport.js +24 -0
- package/node_modules/playwright/lib/transform/babelBundleImpl.js +2353 -190
- package/node_modules/playwright/node_modules/playwright-core/ThirdPartyNotices.txt +62 -34
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/.package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/package.json +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/README.md +16 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/index.js +4 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/read.js +17 -17
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/json.js +60 -32
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/raw.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/text.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/urlencoded.js +16 -20
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/utils.js +18 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/package.json +23 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/CHANGELOG.md +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/isObject.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/package.json +6 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/tsconfig.json +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/index.js +266 -45
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/schemes.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/utils.js +396 -92
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/equal.test.js +31 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/parse.test.js +7 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security-normalization.test.js +101 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security.test.js +301 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/CHANGELOG.md +7 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/index.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/package.json +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/base.js +44 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/components.js +25 -26
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/context.js +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/request.js +20 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +65 -59
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +71 -128
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/utils.js +27 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/cookie.js +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/url.js +19 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/client.js +30 -16
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/utils.js +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/context.js +32 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/proxy/index.js +4 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/utils.js +30 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/streaming/sse.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/hono-base.js +10 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/base.js +41 -23
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/components.js +26 -27
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/context.js +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/render.js +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/server.js +5 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/hooks/index.js +16 -13
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/intrinsic-element/components.js +4 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/streaming.js +5 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cache/index.js +103 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/compress/index.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cors/index.js +17 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/csrf/index.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/digest.js +47 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/index.js +7 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/language/language.js +10 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +16 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/request.js +21 -14
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/linear-router/router.js +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/pattern-router/router.js +3 -9
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/node.js +61 -58
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/router.js +77 -129
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/trie.js +14 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/node.js +47 -70
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/router.js +3 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/utils.js +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/client/types.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/context.d.ts +6 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/hono-base.d.ts +4 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/base.d.ts +7 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +4 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/utils.d.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router.d.ts +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/url.d.ts +5 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/accept.js +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/body.js +21 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/cookie.js +5 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/ipaddr.js +5 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/stream.js +12 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/url.js +17 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/package.json +11 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/.github/THREAT_MODEL.md +3 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/CHANGELOG.md +26 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/README.md +19 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/dist/qs.js +25 -25
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/eslint.config.mjs +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/parse.js +16 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/stringify.js +23 -8
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/utils.js +57 -11
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/package.json +8 -7
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/parse.js +419 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/stringify.js +317 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/utils.js +206 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/CHANGELOG.md +10 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/README.md +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/index.js +5 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/package.json +10 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/test/index.js +16 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/index.js +8 -18
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/README.md +71 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.d.ts +46 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js +176 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/package.json +52 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/package.json +9 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/package-lock.json +72 -41
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/.package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/README.md +23 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/index.js +265 -86
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/README.md +173 -143
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.d.ts +11 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.d.ts +49 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js +79 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.d.ts +78 -5
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js +119 -24
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.d.ts +151 -10
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js +316 -90
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js +45 -2
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js +50 -3
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/package.json +6 -4
- package/node_modules/playwright/node_modules/playwright-core/bundles/utils/package-lock.json +6 -6
- package/node_modules/playwright/node_modules/playwright-core/lib/cli/program.js +18 -9
- package/node_modules/playwright/node_modules/playwright-core/lib/mcpBundleImpl/index.js +47 -47
- package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +3 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +42 -0
- package/node_modules/playwright/node_modules/playwright-core/lib/utilsBundleImpl/index.js +121 -121
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.B7KbSQcC.js → index.BAkLd5DX.js} +1 -1
- package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
- package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright/node_modules/playwright-core/src/cli/program.ts +31 -9
- package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -0
- package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +57 -1
- package/node_modules/playwright/package.json +2 -2
- package/package.json +7 -6
- package/plugin/prompts/code-reuse/hand-off.md +30 -0
- package/plugin/prompts/generate-tests/generation.md +1 -1
- package/plugin/prompts/plan-tests.md +14 -14
- package/plugin/prompts/testbot-task1.md +2 -2
- package/plugin/skills/enhance-assertions/SKILL.md +25 -0
- package/plugin/skills/enhance-assertions/reference/contract.md +51 -0
- package/plugin/skills/enhance-assertions/reference/integration.md +58 -0
- package/plugin/skills/enhance-assertions/reference/shared-rules.md +220 -0
- package/plugin/skills/enhance-assertions/reference/ui.md +373 -0
- package/plugin/skills/fix-test-import-errors/SKILL.md +45 -50
- package/plugin/skills/run-test/SKILL.md +16 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/SKILL.md +32 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/checks.md +44 -0
- package/plugin/skills/validate-assertion-alignment-post-execution/reference/evidence.md +47 -0
- package/build/adapters/jestAdapter.d.ts +0 -14
- package/build/adapters/jestAdapter.js +0 -113
- package/build/adapters/mochaAdapter.d.ts +0 -13
- package/build/adapters/mochaAdapter.js +0 -87
- package/build/adapters/playwrightAdapter.d.ts +0 -17
- package/build/adapters/playwrightAdapter.js +0 -182
- package/build/adapters/pytestAdapter.d.ts +0 -15
- package/build/adapters/pytestAdapter.js +0 -108
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.js +0 -29
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/integrationAssertionsPrompt.js +0 -36
- package/build/prompts/enhance-assertions/sharedAssertionRules.d.ts +0 -16
- package/build/prompts/enhance-assertions/sharedAssertionRules.js +0 -284
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.d.ts +0 -2
- package/build/prompts/enhance-assertions/uiAssertionsPrompt.js +0 -388
- package/build/tools/runExistingTestsTool.d.ts +0 -138
- package/build/tools/runExistingTestsTool.js +0 -644
- package/build/types/ExternalTestExecution.d.ts +0 -67
- package/build/types/ExternalTestExecution.js +0 -8
- package/build/workspace/testSuites.d.ts +0 -20
- package/build/workspace/testSuites.js +0 -17
- package/node_modules/playwright/node_modules/playwright-core/.DS_Store +0 -0
|
@@ -5,7 +5,8 @@ import * as path from "path";
|
|
|
5
5
|
import { detectGitRoot } from "../gitStaging.js";
|
|
6
6
|
import { logger } from "../logger.js";
|
|
7
7
|
import { SKYRAMP_UTILS_HEADER } from "../utils.js";
|
|
8
|
-
import {
|
|
8
|
+
import { blankComments } from "./parse.js";
|
|
9
|
+
import { UTILS_LANGUAGE_SPECS, utilsSpecFor, utilsSpecForFile, } from "./language-spec.js";
|
|
9
10
|
const execFileAsync = promisify(execFile);
|
|
10
11
|
/** The header `generateSkyrampHeader` writes into a utils file: `Generated by Skyramp on
|
|
11
12
|
* <timestamp>`. Deliberately NOT the bare `SKYRAMP_UTILS_HEADER`, which every generated
|
|
@@ -36,7 +37,10 @@ const HEADER_SCAN_BYTES = 2048;
|
|
|
36
37
|
* other failure logs and contributes nothing.
|
|
37
38
|
*/
|
|
38
39
|
export async function locateUtilsFiles(params) {
|
|
39
|
-
|
|
40
|
+
// The file's extension decides its language; the declared language covers a
|
|
41
|
+
// path whose extension names none (a TypeScript UI spec and a JavaScript API
|
|
42
|
+
// spec share one directory in a mixed repository, under one declared language).
|
|
43
|
+
const spec = utilsSpecForFile(params.testFile) ?? utilsSpecFor(params.language);
|
|
40
44
|
if (!spec)
|
|
41
45
|
return [];
|
|
42
46
|
const found = new Set();
|
|
@@ -78,7 +82,7 @@ export async function realpath(p) {
|
|
|
78
82
|
return path.resolve(p);
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
|
-
function isInside(file, dir) {
|
|
85
|
+
export function isInside(file, dir) {
|
|
82
86
|
const rel = path.relative(dir, file);
|
|
83
87
|
return rel !== "" && !rel.startsWith("..") && !path.isAbsolute(rel);
|
|
84
88
|
}
|
|
@@ -149,8 +153,13 @@ export async function hasUtilsHeader(file) {
|
|
|
149
153
|
}
|
|
150
154
|
}
|
|
151
155
|
/** Absolute paths of sibling modules `testFile` imports, for the module forms the reuse
|
|
152
|
-
* prompt produces. Only paths that exist are returned.
|
|
153
|
-
|
|
156
|
+
* prompt produces. Only paths that exist are returned. Shared with the in-house
|
|
157
|
+
* module locator: the customer's helper module is found through the same import. */
|
|
158
|
+
export async function importedModules(testFile, spec,
|
|
159
|
+
/** `existing` (default) returns only files on disk; `all` returns every candidate
|
|
160
|
+
* path the imports could resolve to, so a caller can ask HEAD about a module the
|
|
161
|
+
* working tree no longer holds. */
|
|
162
|
+
which = "existing") {
|
|
154
163
|
let content;
|
|
155
164
|
try {
|
|
156
165
|
content = await fs.promises.readFile(testFile, "utf8");
|
|
@@ -165,35 +174,128 @@ async function importedModules(testFile, spec) {
|
|
|
165
174
|
return [];
|
|
166
175
|
}
|
|
167
176
|
const dir = path.dirname(testFile);
|
|
177
|
+
const isFile = async (p) => {
|
|
178
|
+
try {
|
|
179
|
+
return (await fs.promises.stat(p)).isFile();
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
const existing = new Set();
|
|
186
|
+
/** Every path the imports could resolve to — the `all` mode's answer. */
|
|
168
187
|
const candidates = new Set();
|
|
169
188
|
if (spec.language === "python") {
|
|
170
189
|
for (const m of content.matchAll(/^\s*(?:from\s+([\w.]+)\s+import\b|import\s+([\w.]+)(?:\s+as\s+\w+)?\s*$)/gm)) {
|
|
171
190
|
const mod = (m[1] ?? m[2]).replace(/^\.+/, "");
|
|
172
191
|
if (!mod)
|
|
173
192
|
continue;
|
|
174
|
-
|
|
193
|
+
const candidate = path.join(dir, ...mod.split(".")) + ".py";
|
|
194
|
+
candidates.add(candidate);
|
|
195
|
+
if (await isFile(candidate))
|
|
196
|
+
existing.add(candidate);
|
|
175
197
|
}
|
|
176
198
|
}
|
|
177
199
|
else {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
200
|
+
// ONE import resolves to ONE module, in the order a resolver tries the
|
|
201
|
+
// candidates: the spec's own family first, the other family next (a `.js`
|
|
202
|
+
// specifier in an ESM TypeScript spec resolves to the `.ts` source, and a
|
|
203
|
+
// TypeScript spec may import a JavaScript-only module), then a directory index.
|
|
204
|
+
// Taking EVERY candidate that exists located both `skyrampUtils.ts` and
|
|
205
|
+
// `skyrampUtils.js` for one `./skyrampUtils`, and the JavaScript module was then
|
|
206
|
+
// judged by TypeScript rules (run 9, sample-microservices).
|
|
207
|
+
for (const imp of relativeImports(content, dir, spec)) {
|
|
208
|
+
if (which === "all") {
|
|
209
|
+
for (const c of imp.candidates)
|
|
210
|
+
candidates.add(c);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
for (const c of imp.candidates)
|
|
214
|
+
if (await isFile(c)) {
|
|
215
|
+
existing.add(c);
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
186
218
|
}
|
|
187
219
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
220
|
+
if (which === "all")
|
|
221
|
+
return [...candidates];
|
|
222
|
+
return [...existing];
|
|
223
|
+
}
|
|
224
|
+
/** A module extension the spec's language resolves, stripped before the candidate
|
|
225
|
+
* extensions are tried. */
|
|
226
|
+
const MODULE_EXT_RE = /\.[cm]?[jt]sx?$/;
|
|
227
|
+
/** An ASSET import — data, styles, media — which is not a module this verifier
|
|
228
|
+
* judges. A DENY list, never "any extension that is not JavaScript": a dot in a
|
|
229
|
+
* module's name is ordinary and is the page-object convention STEP 2b searches for
|
|
230
|
+
* (`login.page`, `auth.setup`, `api.client`), and treating those as assets dropped
|
|
231
|
+
* them from the locator, from in-house discovery and from staging. */
|
|
232
|
+
const ASSET_EXT_RE = /\.(?:json|jsonc|css|s[ca]ss|less|styl|svg|png|jpe?g|gif|webp|avif|bmp|ico|woff2?|ttf|otf|eot|mp[34]|webm|wav|ogg|txt|md|mdx|ya?ml|toml|html?|xml|csv|pdf|zip|graphql|gql|wasm|node)$/i;
|
|
233
|
+
function relativeImports(content, dir, spec) {
|
|
234
|
+
const out = [];
|
|
235
|
+
const seen = new Set();
|
|
236
|
+
// Comments blanked, string CONTENTS kept: a specifier lives inside quotes, and a
|
|
237
|
+
// commented-out import is not one. It used to yield a candidate that simply did
|
|
238
|
+
// not exist on disk and was dropped in silence; once an unresolvable specifier
|
|
239
|
+
// could be REPORTED, a deleted line became a finding whose only remedy was
|
|
240
|
+
// deleting a comment — which no message said. A whole import statement written
|
|
241
|
+
// INSIDE a string literal is still read as one: the specifier lives in quotes,
|
|
242
|
+
// so the strings cannot be blanked without blanking it too.
|
|
243
|
+
for (const m of blankComments(content, spec).matchAll(/(?:from\s*|require\(\s*|import\(\s*)["'](\.{1,2}\/[^"']+)["']/g)) {
|
|
244
|
+
const specifier = m[1];
|
|
245
|
+
if (seen.has(specifier))
|
|
246
|
+
continue;
|
|
247
|
+
seen.add(specifier);
|
|
248
|
+
if (ASSET_EXT_RE.test(specifier.split("/").pop() ?? ""))
|
|
249
|
+
continue;
|
|
250
|
+
const base = path.resolve(dir, specifier);
|
|
251
|
+
const stripped = base.replace(MODULE_EXT_RE, "");
|
|
252
|
+
const candidates = [];
|
|
253
|
+
// The spec's own family first, then the other's: a TypeScript spec importing a
|
|
254
|
+
// sibling `.mjs` — or a JavaScript one importing a `.tsx` — loads fine, and a
|
|
255
|
+
// candidate list that stops at one family reads it as missing. (A `.js`
|
|
256
|
+
// specifier in an ESM TypeScript spec resolving to the `.ts` source is the same
|
|
257
|
+
// rule: the extension written is not the extension on disk.)
|
|
258
|
+
for (const ext of spec.extensions)
|
|
259
|
+
candidates.push(stripped + ext);
|
|
260
|
+
for (const other of Object.values(UTILS_LANGUAGE_SPECS))
|
|
261
|
+
if (other.language !== "python")
|
|
262
|
+
for (const ext of other.extensions)
|
|
263
|
+
candidates.push(stripped + ext);
|
|
264
|
+
// A directory import resolves to its index.
|
|
265
|
+
for (const ext of [".ts", ".js", ".mjs", ".cjs", ".tsx", ".jsx"])
|
|
266
|
+
candidates.push(path.join(base, "index" + ext));
|
|
267
|
+
out.push({ specifier, candidates: [...new Set(candidates)] });
|
|
268
|
+
}
|
|
269
|
+
return out;
|
|
270
|
+
}
|
|
271
|
+
/** The relative imports of a TypeScript/JavaScript spec, each resolved against the
|
|
272
|
+
* files beside it. Empty for Python, where a relative import and a package import
|
|
273
|
+
* are spelled the same and cannot be told apart. Never throws. */
|
|
274
|
+
export async function resolveSpecImports(testFile, spec) {
|
|
275
|
+
if (spec.language === "python")
|
|
276
|
+
return [];
|
|
277
|
+
let content;
|
|
278
|
+
try {
|
|
279
|
+
content = await fs.promises.readFile(testFile, "utf8");
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
return [];
|
|
283
|
+
}
|
|
284
|
+
const out = [];
|
|
285
|
+
for (const imp of relativeImports(content, path.dirname(testFile), spec)) {
|
|
286
|
+
let resolved;
|
|
287
|
+
for (const c of imp.candidates) {
|
|
288
|
+
try {
|
|
289
|
+
if ((await fs.promises.stat(c)).isFile()) {
|
|
290
|
+
resolved = await realpath(c);
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
/* not present */
|
|
296
|
+
}
|
|
196
297
|
}
|
|
298
|
+
out.push({ ...imp, resolved });
|
|
197
299
|
}
|
|
198
|
-
return
|
|
300
|
+
return out;
|
|
199
301
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type UtilsLanguageSpec } from "./language-spec.js";
|
|
2
|
+
import type { UtilsFinding } from "./verify.js";
|
|
3
|
+
/**
|
|
4
|
+
* The shared module this run wrote carries the name the reuse prompt prescribes.
|
|
5
|
+
*
|
|
6
|
+
* The prompt states the name in code — `UtilsLanguageSpec.fileName`, which the
|
|
7
|
+
* instruction the agent reads is rendered from — and nothing checked the delivered
|
|
8
|
+
* file against it, so a run could invent a variant and the two runs' modules would
|
|
9
|
+
* never meet. Measured in testplan-run-9 on one repository: one fixture delivered
|
|
10
|
+
* `skyrampUiUtils.ts` and another `skyrampUtils.ts`, for the same role, in the same
|
|
11
|
+
* directory, from one build and one model. The divergence had a cause — the first
|
|
12
|
+
* run had also written a JavaScript module and took the two to need different names
|
|
13
|
+
* — and no rule resolved it. Each language prescribes its own basename, so the two
|
|
14
|
+
* modules are `skyrampUtils.js` and `skyrampUtils.ts` and a spec resolves the one of
|
|
15
|
+
* its own language first (SKYR-4486).
|
|
16
|
+
*
|
|
17
|
+
* Two exemptions, both about files this run does not own:
|
|
18
|
+
* - A module HEAD already holds keeps its name. Callers this run cannot see import
|
|
19
|
+
* it — the earlier run's tests, and anything the customer wrote since — and a
|
|
20
|
+
* rename breaks every one of them. Same principle as `incumbent-signature`.
|
|
21
|
+
* - The customer's own module never reaches here: `locateUtilsFiles` returns files
|
|
22
|
+
* carrying the Skyramp utils header and no others.
|
|
23
|
+
*
|
|
24
|
+
* And one carve-out for a name the prompt itself sanctions: it allows a SECOND module
|
|
25
|
+
* "with a different name" once the first is large. So a module is left alone once the
|
|
26
|
+
* prescribed name is taken IN ITS OWN DIRECTORY — asked of the directory rather than
|
|
27
|
+
* of the located set, because the located set answers a different question and gets
|
|
28
|
+
* this wrong both ways. A prescribed module the spec imports from elsewhere would
|
|
29
|
+
* excuse a module named freely beside the test; and a prescribed module that ALREADY
|
|
30
|
+
* sits beside the test, which the spec does not import, never reaches the located set
|
|
31
|
+
* at all — so reporting would tell the run to rename its own module ONTO an incumbent,
|
|
32
|
+
* destroying the file the HEAD exemption exists to protect.
|
|
33
|
+
*
|
|
34
|
+
* ADVISORY for its first cohort — see UTILS_ADVISORY_KINDS. It still FAILS OPEN: the
|
|
35
|
+
* only thing that separates a module this run wrote from an incumbent is what HEAD
|
|
36
|
+
* holds, and where git cannot be asked — outside a repository, before the first
|
|
37
|
+
* commit, on any error — nothing is reported. A rule that will be promoted to
|
|
38
|
+
* blocking is written to the standard it will be held to.
|
|
39
|
+
*/
|
|
40
|
+
export declare function misnamedNewModules(utilsFiles: string[], spec: UtilsLanguageSpec, root: string | undefined): Promise<UtilsFinding[]>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { execFile } from "child_process";
|
|
2
|
+
import * as fs from "fs";
|
|
3
|
+
import * as path from "path";
|
|
4
|
+
import { promisify } from "util";
|
|
5
|
+
import { utilsSpecForFile } from "./language-spec.js";
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
7
|
+
/**
|
|
8
|
+
* The shared module this run wrote carries the name the reuse prompt prescribes.
|
|
9
|
+
*
|
|
10
|
+
* The prompt states the name in code — `UtilsLanguageSpec.fileName`, which the
|
|
11
|
+
* instruction the agent reads is rendered from — and nothing checked the delivered
|
|
12
|
+
* file against it, so a run could invent a variant and the two runs' modules would
|
|
13
|
+
* never meet. Measured in testplan-run-9 on one repository: one fixture delivered
|
|
14
|
+
* `skyrampUiUtils.ts` and another `skyrampUtils.ts`, for the same role, in the same
|
|
15
|
+
* directory, from one build and one model. The divergence had a cause — the first
|
|
16
|
+
* run had also written a JavaScript module and took the two to need different names
|
|
17
|
+
* — and no rule resolved it. Each language prescribes its own basename, so the two
|
|
18
|
+
* modules are `skyrampUtils.js` and `skyrampUtils.ts` and a spec resolves the one of
|
|
19
|
+
* its own language first (SKYR-4486).
|
|
20
|
+
*
|
|
21
|
+
* Two exemptions, both about files this run does not own:
|
|
22
|
+
* - A module HEAD already holds keeps its name. Callers this run cannot see import
|
|
23
|
+
* it — the earlier run's tests, and anything the customer wrote since — and a
|
|
24
|
+
* rename breaks every one of them. Same principle as `incumbent-signature`.
|
|
25
|
+
* - The customer's own module never reaches here: `locateUtilsFiles` returns files
|
|
26
|
+
* carrying the Skyramp utils header and no others.
|
|
27
|
+
*
|
|
28
|
+
* And one carve-out for a name the prompt itself sanctions: it allows a SECOND module
|
|
29
|
+
* "with a different name" once the first is large. So a module is left alone once the
|
|
30
|
+
* prescribed name is taken IN ITS OWN DIRECTORY — asked of the directory rather than
|
|
31
|
+
* of the located set, because the located set answers a different question and gets
|
|
32
|
+
* this wrong both ways. A prescribed module the spec imports from elsewhere would
|
|
33
|
+
* excuse a module named freely beside the test; and a prescribed module that ALREADY
|
|
34
|
+
* sits beside the test, which the spec does not import, never reaches the located set
|
|
35
|
+
* at all — so reporting would tell the run to rename its own module ONTO an incumbent,
|
|
36
|
+
* destroying the file the HEAD exemption exists to protect.
|
|
37
|
+
*
|
|
38
|
+
* ADVISORY for its first cohort — see UTILS_ADVISORY_KINDS. It still FAILS OPEN: the
|
|
39
|
+
* only thing that separates a module this run wrote from an incumbent is what HEAD
|
|
40
|
+
* holds, and where git cannot be asked — outside a repository, before the first
|
|
41
|
+
* commit, on any error — nothing is reported. A rule that will be promoted to
|
|
42
|
+
* blocking is written to the standard it will be held to.
|
|
43
|
+
*/
|
|
44
|
+
export async function misnamedNewModules(utilsFiles, spec, root) {
|
|
45
|
+
if (!root || utilsFiles.length === 0)
|
|
46
|
+
return [];
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const file of utilsFiles) {
|
|
49
|
+
// The module's OWN language prescribes its name. A TypeScript spec may resolve a
|
|
50
|
+
// JavaScript module (locateUtilsFiles supports it, and #951 makes it the rule),
|
|
51
|
+
// and judging that module by the spec's language blocked a file carrying exactly
|
|
52
|
+
// the name its language prescribes. The declared language is the fallback, for a
|
|
53
|
+
// path whose extension names none.
|
|
54
|
+
const own = utilsSpecForFile(file) ?? spec;
|
|
55
|
+
if (path.basename(file) === own.fileName)
|
|
56
|
+
continue;
|
|
57
|
+
if (await exists(path.join(path.dirname(file), own.fileName)))
|
|
58
|
+
continue;
|
|
59
|
+
if (!(await absentAtHead(root, file)))
|
|
60
|
+
continue;
|
|
61
|
+
out.push({
|
|
62
|
+
kind: "module-name",
|
|
63
|
+
file,
|
|
64
|
+
helper: path.basename(file).replace(/\W/g, "_"),
|
|
65
|
+
line: 1,
|
|
66
|
+
detail: `this run created \`${path.basename(file)}\`, and the shared module for ${own.language} is \`${own.fileName}\` — the name is prescribed so that a second run against this repository writes the same module instead of a second one beside it. Rename the file to \`${own.fileName}\` and update the imports in the tests this run wrote. A module that already existed keeps its name; this one does not exist at HEAD`,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
71
|
+
/** Whether the path is a file. A directory of that name is not the module, and any
|
|
72
|
+
* error answers `false` — the caller then falls through to the HEAD question, which
|
|
73
|
+
* fails open on its own. */
|
|
74
|
+
async function exists(file) {
|
|
75
|
+
try {
|
|
76
|
+
return (await fs.promises.stat(file)).isFile();
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/** Whether HEAD does not hold `file`, i.e. this run created it. `undefined`-safe by
|
|
83
|
+
* returning `false` — the caller must not report — for every question git cannot
|
|
84
|
+
* answer: no HEAD, a path outside the repository, or any git failure. `ls-tree`
|
|
85
|
+
* rather than `cat-file -e`, whose exit code is 128 both for a path absent at HEAD
|
|
86
|
+
* and for a broken invocation, so the two could not be told apart. */
|
|
87
|
+
async function absentAtHead(root, file) {
|
|
88
|
+
const rel = path.relative(root, file);
|
|
89
|
+
if (rel === "" || rel.startsWith("..") || path.isAbsolute(rel))
|
|
90
|
+
return false;
|
|
91
|
+
try {
|
|
92
|
+
const { stdout } = await execFileAsync("git", ["ls-tree", "-z", "--name-only", "HEAD", "--", rel], { cwd: root, encoding: "utf8" });
|
|
93
|
+
return stdout.trim() === "";
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type UtilsLanguageSpec } from "./language-spec.js";
|
|
2
|
+
import { type HelperSleep } from "./fixed-sleep.js";
|
|
2
3
|
export interface HelperAssertion {
|
|
3
4
|
line: number;
|
|
4
5
|
text: string;
|
|
@@ -22,19 +23,31 @@ export interface UtilsHelper {
|
|
|
22
23
|
* into a shared helper is still delivered — see hasPageErrorGuard. */
|
|
23
24
|
hasGuard: boolean;
|
|
24
25
|
assertions: HelperAssertion[];
|
|
25
|
-
/** TypeScript only: signature parameters
|
|
26
|
-
* `page
|
|
27
|
-
|
|
26
|
+
/** TypeScript only: signature parameters whose type a caller cannot satisfy —
|
|
27
|
+
* unannotated (`page`), `any`, or `unknown` — see unusableParamTypesOf. Empty
|
|
28
|
+
* for other languages. */
|
|
29
|
+
unusableParamTypes: string[];
|
|
28
30
|
/** Declared parameter count — defaulted and rest parameters included. Two
|
|
29
31
|
* definitions of one name with different arities are the collision a caller
|
|
30
32
|
* written against either signature hits. `undefined` when no signature could
|
|
31
33
|
* be read. */
|
|
32
34
|
arity?: number;
|
|
35
|
+
/** Fixed sleeps in the body — a wait for a duration rather than for a condition,
|
|
36
|
+
* centralised into the module every test imports. See fixedSleepsIn. */
|
|
37
|
+
fixedSleeps: HelperSleep[];
|
|
38
|
+
/** The declared parameters as written (types and defaults included, comments
|
|
39
|
+
* blanked, string contents kept), in order — what a caller's argument count is
|
|
40
|
+
* checked against, and what the additive gate reads a default's value from (see
|
|
41
|
+
* in-house.ts). `undefined` when no signature could be read; `arity` is its
|
|
42
|
+
* length. */
|
|
43
|
+
params?: string[];
|
|
33
44
|
/** The helper's Playwright action sequence — the duplicate key of a browser
|
|
34
45
|
* helper, where an API helper has method+path. See actionKeyOf. Read for
|
|
35
46
|
* TypeScript, JavaScript and Python (through the JavaScript spelling); absent
|
|
36
|
-
* for a helper with no readable action.
|
|
47
|
+
* for a helper with no readable action. `actionSteps` is the same sequence one
|
|
48
|
+
* step per entry, for the sibling scan that matches step by step. */
|
|
37
49
|
actionKey?: string;
|
|
50
|
+
actionSteps?: string[];
|
|
38
51
|
}
|
|
39
52
|
/** The declared parameters of a signature, raw text trimmed, empty entries dropped
|
|
40
53
|
* (a trailing comma). Reads the signature from the definition line to its body
|
|
@@ -43,9 +56,33 @@ export interface UtilsHelper {
|
|
|
43
56
|
* a binding pattern never splits. `undefined` when the text holds no readable
|
|
44
57
|
* parameter list. Language-neutral: both a TS `{` and a Python `:` terminator lie
|
|
45
58
|
* outside the parentheses this reads. */
|
|
46
|
-
export declare function signatureParams(sigLines: string[]
|
|
47
|
-
/** The
|
|
48
|
-
|
|
59
|
+
export declare function signatureParams(sigLines: string[],
|
|
60
|
+
/** The same lines with only comments blanked, offsets preserved. When given, the
|
|
61
|
+
* parameters are SPLIT on `sigLines` (string contents blanked, so a comma inside
|
|
62
|
+
* a default never splits) and READ from these, so a default keeps its value —
|
|
63
|
+
* the additive gate compares that value against the body it replaced. */
|
|
64
|
+
rawLines?: string[]): string[] | undefined;
|
|
65
|
+
/** The index of the `=` that opens a parameter's default value, or -1. Depth-aware,
|
|
66
|
+
* so an `=` inside a parenthesised type, an object type or a generic is not one;
|
|
67
|
+
* `=>`, `==`, `!=`, `<=` and `>=` are not one either.
|
|
68
|
+
*
|
|
69
|
+
* The ONE detection of a default: the typing advisory reads it, the status rule
|
|
70
|
+
* reads it, and the additive gate reads the value that follows it. They must not
|
|
71
|
+
* disagree about what a default is. */
|
|
72
|
+
export declare function defaultAt(param: string): number;
|
|
73
|
+
/** Whether one declared parameter carries a default value. See defaultAt. */
|
|
74
|
+
export declare function hasDefault(param: string): boolean;
|
|
75
|
+
/** The declared NAME of a parameter, less its annotation, default, rest / unpack
|
|
76
|
+
* marker and optional `?`: `...rest: T[]` → `rest`, `expected_status=200` →
|
|
77
|
+
* `expected_status`, `expectedStatus?: number` → `expectedStatus`. A binding
|
|
78
|
+
* pattern has no single name and returns its text unchanged. */
|
|
79
|
+
export declare function paramName(raw: string): string;
|
|
80
|
+
/** The parameters of a TS signature whose type gives a caller nothing to satisfy:
|
|
81
|
+
* no annotation (`page`), `any` (checks nothing), or `unknown` (assignable to
|
|
82
|
+
* nothing but itself, so every use of it fails, under every compiler setting).
|
|
83
|
+
* Each entry is the name alone when unannotated, `name: any` / `name: unknown`
|
|
84
|
+
* otherwise. */
|
|
85
|
+
export declare function unusableParamTypesOf(sigLines: string[]): string[];
|
|
49
86
|
/**
|
|
50
87
|
* Structured extraction of the module-level helpers in a utils file.
|
|
51
88
|
*
|
|
@@ -56,6 +93,13 @@ export declare function untypedParamsOf(sigLines: string[]): string[];
|
|
|
56
93
|
* next non-blank column-0 line; TS/JS bodies end when the brace depth opened by
|
|
57
94
|
* the definition returns to zero.
|
|
58
95
|
*/
|
|
96
|
+
/** A generated TEST's own module-level helpers: what parseUtilsFile reads from it,
|
|
97
|
+
* less the test functions themselves (`test_…` / `testUi`), which are not helpers a
|
|
98
|
+
* call can sit "inside" in the sense the sibling scans and the body-reach check
|
|
99
|
+
* report. */
|
|
100
|
+
export declare function localHelpersOf(content: string, spec: UtilsLanguageSpec): UtilsHelper[];
|
|
101
|
+
/** The helper whose body holds `line` (1-based), if any. */
|
|
102
|
+
export declare function localHelperAt(helpers: UtilsHelper[], line: number): UtilsHelper | undefined;
|
|
59
103
|
export declare function parseUtilsFile(content: string, spec: UtilsLanguageSpec): UtilsHelper[];
|
|
60
104
|
/** True when the `path` value is a single string literal ending the argument — a
|
|
61
105
|
* concatenation (`"/api/orders/" + str(id) + "/items"`) has no route this can name. */
|
|
@@ -78,4 +122,9 @@ export declare function countAssertions(content: string, spec: UtilsLanguageSpec
|
|
|
78
122
|
* Both copies preserve offsets, so a Prettier-wrapped registration matches too.
|
|
79
123
|
*/
|
|
80
124
|
export declare function hasPageErrorGuard(content: string, spec: UtilsLanguageSpec): boolean;
|
|
125
|
+
/** Comments blanked, strings preserved, offsets kept. TS/JS use the shared stripper;
|
|
126
|
+
* Python blanks each line from its first `#` outside a string. Exported for the
|
|
127
|
+
* readers that need a literal intact but a comment gone — an import's module
|
|
128
|
+
* path is a string, and a commented-out import must not count. */
|
|
129
|
+
export declare function blankComments(src: string, spec: UtilsLanguageSpec): string;
|
|
81
130
|
export declare function blankCommentsAndStrings(src: string, spec: UtilsLanguageSpec): string;
|