@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
|
@@ -73,7 +73,6 @@ function paddedHex(octet) {
|
|
|
73
73
|
return parseInt(octet, 16).toString(16).padStart(4, '0');
|
|
74
74
|
}
|
|
75
75
|
function unsignByte(b) {
|
|
76
|
-
// eslint-disable-next-line no-bitwise
|
|
77
76
|
return b & 0xff;
|
|
78
77
|
}
|
|
79
78
|
/**
|
|
@@ -97,6 +96,15 @@ class Address6 {
|
|
|
97
96
|
* @returns {boolean}
|
|
98
97
|
*/
|
|
99
98
|
this.isInSubnet = common.isInSubnet;
|
|
99
|
+
/**
|
|
100
|
+
* Returns true if this address's host bits fall inside the given subnet,
|
|
101
|
+
* ignoring this address's own subnet mask. Prefer this over `isInSubnet`
|
|
102
|
+
* when classifying a single address, so the answer doesn't change with the
|
|
103
|
+
* CIDR suffix the caller happened to write — notably when the address came
|
|
104
|
+
* from untrusted input and the result backs a trust-boundary decision.
|
|
105
|
+
* @returns {boolean}
|
|
106
|
+
*/
|
|
107
|
+
this.isHostInSubnet = common.isHostInSubnet;
|
|
100
108
|
/**
|
|
101
109
|
* Returns true if the address is correct, false otherwise
|
|
102
110
|
* @returns {boolean}
|
|
@@ -121,7 +129,10 @@ class Address6 {
|
|
|
121
129
|
}
|
|
122
130
|
address = address.replace(constants6.RE_SUBNET_STRING, '');
|
|
123
131
|
}
|
|
124
|
-
|
|
132
|
+
// RE_SUBNET_STRING anchors on the end of the address, so it strips only
|
|
133
|
+
// the trailing suffix. A second one left behind (`::/0/1`) is malformed
|
|
134
|
+
// and must be rejected rather than parsed as an address group.
|
|
135
|
+
if (/\//.test(address)) {
|
|
125
136
|
throw new address_error_1.AddressError('Invalid subnet mask.');
|
|
126
137
|
}
|
|
127
138
|
const zone = constants6.RE_ZONE_STRING.exec(address);
|
|
@@ -145,7 +156,7 @@ class Address6 {
|
|
|
145
156
|
new Address6(address);
|
|
146
157
|
return true;
|
|
147
158
|
}
|
|
148
|
-
catch
|
|
159
|
+
catch {
|
|
149
160
|
return false;
|
|
150
161
|
}
|
|
151
162
|
}
|
|
@@ -160,7 +171,7 @@ class Address6 {
|
|
|
160
171
|
* address.correctForm(); // '::e8:d4a5:1000'
|
|
161
172
|
*/
|
|
162
173
|
static fromBigInt(bigInt) {
|
|
163
|
-
if (bigInt <
|
|
174
|
+
if (bigInt < BigInt(0) || bigInt > (BigInt(1) << BigInt(constants6.BITS)) - BigInt(1)) {
|
|
164
175
|
throw new address_error_1.AddressError('IPv6 BigInt must be in the range 0 to 2**128 - 1');
|
|
165
176
|
}
|
|
166
177
|
const hex = bigInt.toString(16).padStart(32, '0');
|
|
@@ -181,46 +192,36 @@ class Address6 {
|
|
|
181
192
|
* addressAndPort.port; // 8080
|
|
182
193
|
*/
|
|
183
194
|
static fromURL(url) {
|
|
195
|
+
var _a;
|
|
184
196
|
let host;
|
|
185
197
|
let port = null;
|
|
186
198
|
let result;
|
|
199
|
+
let error;
|
|
200
|
+
// Remove the protocol prefix, if any
|
|
201
|
+
const stripped = url.replace(/^[a-z][a-z0-9+.-]*:\/\//i, '');
|
|
187
202
|
// If we have brackets parse them and find a port
|
|
188
|
-
if (
|
|
189
|
-
|
|
203
|
+
if (stripped.indexOf('[') !== -1 && stripped.indexOf(']:') !== -1) {
|
|
204
|
+
error = 'failed to parse address with port';
|
|
205
|
+
result = constants6.RE_URL_WITH_PORT.exec(stripped);
|
|
190
206
|
if (result === null) {
|
|
191
|
-
return {
|
|
192
|
-
error: 'failed to parse address with port',
|
|
193
|
-
address: null,
|
|
194
|
-
port: null,
|
|
195
|
-
};
|
|
207
|
+
return { error, address: null, port: null };
|
|
196
208
|
}
|
|
197
209
|
host = result[1];
|
|
198
210
|
port = result[2];
|
|
199
|
-
// If there's a URL extract the address
|
|
200
211
|
}
|
|
201
|
-
else
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
// Parse the address
|
|
205
|
-
result = constants6.RE_URL.exec(url);
|
|
212
|
+
else {
|
|
213
|
+
error = 'failed to parse address from URL';
|
|
214
|
+
result = constants6.RE_URL.exec(stripped);
|
|
206
215
|
if (result === null) {
|
|
207
|
-
return {
|
|
208
|
-
error: 'failed to parse address from URL',
|
|
209
|
-
address: null,
|
|
210
|
-
port: null,
|
|
211
|
-
};
|
|
216
|
+
return { error, address: null, port: null };
|
|
212
217
|
}
|
|
213
|
-
host = result[1];
|
|
214
|
-
// Otherwise just assign the URL to the host and let the library parse it
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
host = url;
|
|
218
|
+
host = (_a = result[1]) !== null && _a !== void 0 ? _a : result[2];
|
|
218
219
|
}
|
|
219
220
|
// If there's a port convert it to an integer
|
|
220
221
|
if (port) {
|
|
221
222
|
port = parseInt(port, 10);
|
|
222
|
-
// squelch out of range ports
|
|
223
|
-
if (port < 0 || port >
|
|
223
|
+
// squelch out of range ports (valid ports are 0-65535)
|
|
224
|
+
if (port < 0 || port > 65535) {
|
|
224
225
|
port = null;
|
|
225
226
|
}
|
|
226
227
|
}
|
|
@@ -228,10 +229,17 @@ class Address6 {
|
|
|
228
229
|
// Standardize `undefined` to `null`
|
|
229
230
|
port = null;
|
|
230
231
|
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
// The URL character class is a superset of valid IPv6, so a host the
|
|
233
|
+
// regex accepted (an IPv4 literal, bare punctuation, too many groups)
|
|
234
|
+
// can still be rejected by the parser
|
|
235
|
+
let address;
|
|
236
|
+
try {
|
|
237
|
+
address = new Address6(host);
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
return { error, address: null, port: null };
|
|
241
|
+
}
|
|
242
|
+
return { address, port };
|
|
235
243
|
}
|
|
236
244
|
/**
|
|
237
245
|
* Construct an `Address6` from an address and a hex subnet mask given as
|
|
@@ -258,7 +266,6 @@ class Address6 {
|
|
|
258
266
|
static fromAddressAndWildcardMask(address, wildcardMask) {
|
|
259
267
|
const wildcard = new Address6(wildcardMask).bigInt();
|
|
260
268
|
const allOnes = (BigInt(1) << BigInt(constants6.BITS)) - BigInt(1);
|
|
261
|
-
// eslint-disable-next-line no-bitwise
|
|
262
269
|
const mask = wildcard ^ allOnes;
|
|
263
270
|
const bits = common.prefixLengthFromMask(mask, constants6.BITS);
|
|
264
271
|
return new Address6(`${address}/${bits}`);
|
|
@@ -332,28 +339,31 @@ class Address6 {
|
|
|
332
339
|
return new Address6(`::ffff:${address4.correctForm()}/${mask6}`);
|
|
333
340
|
}
|
|
334
341
|
/**
|
|
335
|
-
* Return an address from ip6.arpa form
|
|
342
|
+
* Return an address from ip6.arpa form. A full 32-nibble name gives a /128
|
|
343
|
+
* address; a shorter name, as used for a delegated reverse zone, gives the
|
|
344
|
+
* network it covers, with a subnet mask of four bits per nibble, so
|
|
345
|
+
* `fromArpa(x.reverseForm())` round-trips {@link reverseForm} for any prefix.
|
|
336
346
|
* @param {string} arpaFormAddress - an 'ip6.arpa' form address
|
|
337
347
|
* @returns {Adress6}
|
|
338
348
|
* @example
|
|
339
349
|
* var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.)
|
|
340
350
|
* address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe'
|
|
351
|
+
* Address6.fromArpa('8.b.d.0.1.0.0.2.ip6.arpa.').networkForm(); // '2001:db8::/32'
|
|
341
352
|
*/
|
|
342
353
|
static fromArpa(arpaFormAddress) {
|
|
343
|
-
// remove ending ".ip6.arpa
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
// correct ip6.arpa form with ending removed will be 63 characters
|
|
347
|
-
if (address.length !== 63) {
|
|
354
|
+
// remove an ending ".ip6.arpa", with or without the root dot
|
|
355
|
+
const nibbles = arpaFormAddress.replace(/(\.ip6\.arpa)?\.?$/, '');
|
|
356
|
+
if (!/^[0-9a-f](\.[0-9a-f]){0,31}$/i.test(nibbles)) {
|
|
348
357
|
throw new address_error_1.AddressError("Invalid 'ip6.arpa' form.");
|
|
349
358
|
}
|
|
350
|
-
const
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
359
|
+
const reversed = nibbles.split('.').reverse();
|
|
360
|
+
const subnetMask = reversed.length * 4;
|
|
361
|
+
const hex = reversed.join('').padEnd(32, '0');
|
|
362
|
+
const groups = [];
|
|
363
|
+
for (let i = 0; i < constants6.GROUPS; i++) {
|
|
364
|
+
groups.push(hex.slice(i * 4, (i + 1) * 4));
|
|
354
365
|
}
|
|
355
|
-
|
|
356
|
-
return new Address6(address);
|
|
366
|
+
return new Address6(`${groups.join(':')}/${subnetMask}`);
|
|
357
367
|
}
|
|
358
368
|
/**
|
|
359
369
|
* Return the Microsoft UNC transcription of the address
|
|
@@ -417,22 +427,53 @@ class Address6 {
|
|
|
417
427
|
return BigInt(`0b${this.mask() + '1'.repeat(constants6.BITS - this.subnetMask)}`);
|
|
418
428
|
}
|
|
419
429
|
/**
|
|
420
|
-
* The last address in the range given by this address' subnet
|
|
421
|
-
*
|
|
430
|
+
* The last address in the range given by this address's subnet. IPv6 has
|
|
431
|
+
* no broadcast address, so this is an ordinary assignable address (in a
|
|
432
|
+
* 64-bit-interface-identifier subnet it falls inside the reserved
|
|
433
|
+
* subnet-anycast block of [RFC 2526](https://datatracker.ietf.org/doc/html/rfc2526)).
|
|
422
434
|
* @returns {Address6}
|
|
423
435
|
*/
|
|
424
436
|
endAddress() {
|
|
425
437
|
return Address6.fromBigInt(this._endAddress());
|
|
426
438
|
}
|
|
427
439
|
/**
|
|
428
|
-
* The
|
|
429
|
-
* the
|
|
440
|
+
* The address one before {@link endAddress}. This is the IPv6 counterpart
|
|
441
|
+
* of the IPv4 method that skips the broadcast address; IPv6 has no broadcast,
|
|
442
|
+
* so it drops exactly one address and does not model the 128 reserved
|
|
443
|
+
* subnet-anycast identifiers of [RFC 2526](https://datatracker.ietf.org/doc/html/rfc2526).
|
|
430
444
|
* @returns {Address6}
|
|
431
445
|
*/
|
|
432
446
|
endAddressExclusive() {
|
|
433
447
|
const adjust = BigInt('1');
|
|
434
448
|
return Address6.fromBigInt(this._endAddress() - adjust);
|
|
435
449
|
}
|
|
450
|
+
/**
|
|
451
|
+
* Returns the address `n` addresses after this one (or before, when `n` is
|
|
452
|
+
* negative), keeping this address's subnet mask. Throws `AddressError` when
|
|
453
|
+
* the result would fall outside the IPv6 address space or `n` is not an
|
|
454
|
+
* integer.
|
|
455
|
+
* @param {number | bigint} n
|
|
456
|
+
* @returns {Address6}
|
|
457
|
+
* @example
|
|
458
|
+
* new Address6('2001:db8::/64').offset(1).correctForm(); // '2001:db8::1'
|
|
459
|
+
*/
|
|
460
|
+
offset(n) {
|
|
461
|
+
return Address6.fromBigInt(common.offsetBigInt(this.bigInt(), n, constants6.BITS, 'IPv6')).withSubnetMask(this.subnetMask);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Returns the network that follows this address's network: the address after
|
|
465
|
+
* {@link endAddress}, with the same subnet mask. Throws `AddressError` when
|
|
466
|
+
* this network is the last one in the address space.
|
|
467
|
+
* @returns {Address6}
|
|
468
|
+
* @example
|
|
469
|
+
* new Address6('2001:db8::/64').nextNetwork().networkForm(); // '2001:db8:0:1::/64'
|
|
470
|
+
*/
|
|
471
|
+
nextNetwork() {
|
|
472
|
+
return Address6.fromBigInt(common.offsetBigInt(this._endAddress(), 1, constants6.BITS, 'IPv6')).withSubnetMask(this.subnetMask);
|
|
473
|
+
}
|
|
474
|
+
withSubnetMask(subnetMask) {
|
|
475
|
+
return new Address6(`${this.correctForm()}/${subnetMask}`);
|
|
476
|
+
}
|
|
436
477
|
/**
|
|
437
478
|
* The hex form of the subnet mask, e.g. `ffff:ffff:ffff:ffff::` for a
|
|
438
479
|
* `/64`. Returns an `Address6`; call `.correctForm()` for the string.
|
|
@@ -493,7 +534,7 @@ class Address6 {
|
|
|
493
534
|
getType() {
|
|
494
535
|
for (let i = 0; i < TYPE_SUBNETS.length; i++) {
|
|
495
536
|
const entry = TYPE_SUBNETS[i];
|
|
496
|
-
if (this.
|
|
537
|
+
if (this.isHostInSubnet(entry[0])) {
|
|
497
538
|
return entry[1];
|
|
498
539
|
}
|
|
499
540
|
}
|
|
@@ -635,20 +676,27 @@ class Address6 {
|
|
|
635
676
|
}
|
|
636
677
|
const groups = address.split(':');
|
|
637
678
|
const lastGroup = groups.slice(-1)[0];
|
|
679
|
+
// RE_ADDRESS rejects octets with a leading zero, so a dotted-quad tail is
|
|
680
|
+
// matched permissively first: that way this notation still gets its own
|
|
681
|
+
// message with the offending octet highlighted, rather than falling
|
|
682
|
+
// through as an unrecognized group.
|
|
683
|
+
const v4Octets = lastGroup.split('.');
|
|
684
|
+
if (v4Octets.length === constants4.GROUPS &&
|
|
685
|
+
v4Octets.every((octet) => /^\d{1,3}$/.test(octet))) {
|
|
686
|
+
if (v4Octets.some((octet) => /^0\d/.test(octet))) {
|
|
687
|
+
// The prefix groups haven't been through the bad-character check
|
|
688
|
+
// yet, so escape them before including in the error HTML.
|
|
689
|
+
const highlighted = v4Octets.map(spanLeadingZeroes4).join('.');
|
|
690
|
+
const prefix = groups.slice(0, -1).map(helpers.escapeHtml).join(':');
|
|
691
|
+
const separator = groups.length > 1 ? ':' : '';
|
|
692
|
+
throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", `${prefix}${separator}${highlighted}`);
|
|
693
|
+
}
|
|
694
|
+
}
|
|
638
695
|
const address4 = lastGroup.match(constants4.RE_ADDRESS);
|
|
639
696
|
if (address4) {
|
|
640
697
|
this.parsedAddress4 = address4[0];
|
|
641
|
-
this.
|
|
642
|
-
|
|
643
|
-
if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) {
|
|
644
|
-
// The prefix groups haven't been through the bad-character check
|
|
645
|
-
// yet, so escape them before including in the error HTML.
|
|
646
|
-
const highlighted = this.address4.parsedAddress.map(spanLeadingZeroes4).join('.');
|
|
647
|
-
const prefix = groups.slice(0, -1).map(helpers.escapeHtml).join(':');
|
|
648
|
-
const separator = groups.length > 1 ? ':' : '';
|
|
649
|
-
throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", `${prefix}${separator}${highlighted}`);
|
|
650
|
-
}
|
|
651
|
-
}
|
|
698
|
+
const v4Suffix = this.subnetMask >= 96 ? `/${this.subnetMask - 96}` : '';
|
|
699
|
+
this.address4 = new ipv4_1.Address4(`${this.parsedAddress4}${v4Suffix}`);
|
|
652
700
|
this.v4 = true;
|
|
653
701
|
groups[groups.length - 1] = this.address4.toGroup6();
|
|
654
702
|
address = groups.join(':');
|
|
@@ -734,7 +782,11 @@ class Address6 {
|
|
|
734
782
|
return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`);
|
|
735
783
|
}
|
|
736
784
|
/**
|
|
737
|
-
* Return the last two groups of this address as an IPv4 address string
|
|
785
|
+
* Return the last two groups of this address as an IPv4 address string.
|
|
786
|
+
* If this address carries a CIDR prefix that covers the trailing 32 bits
|
|
787
|
+
* (i.e. `subnetMask >= 96`), the resulting `Address4` inherits the
|
|
788
|
+
* corresponding v4 prefix (`subnetMask - 96`); otherwise it defaults to
|
|
789
|
+
* `/32`.
|
|
738
790
|
* @returns {Address4}
|
|
739
791
|
* @example
|
|
740
792
|
* var address = new Address6('2001:4860:4001::1825:bf11');
|
|
@@ -742,7 +794,18 @@ class Address6 {
|
|
|
742
794
|
*/
|
|
743
795
|
to4() {
|
|
744
796
|
const binary = this.binaryZeroPad().split('');
|
|
745
|
-
|
|
797
|
+
const hex = BigInt(`0b${binary.slice(96, 128).join('')}`)
|
|
798
|
+
.toString(16)
|
|
799
|
+
.padStart(8, '0');
|
|
800
|
+
if (this.subnetMask >= 96) {
|
|
801
|
+
const v4Mask = this.subnetMask - 96;
|
|
802
|
+
const groups = [];
|
|
803
|
+
for (let i = 0; i < 8; i += 2) {
|
|
804
|
+
groups.push(parseInt(hex.slice(i, i + 2), 16));
|
|
805
|
+
}
|
|
806
|
+
return new ipv4_1.Address4(`${groups.join('.')}/${v4Mask}`);
|
|
807
|
+
}
|
|
808
|
+
return ipv4_1.Address4.fromHex(hex);
|
|
746
809
|
}
|
|
747
810
|
/**
|
|
748
811
|
* Return the v4-in-v6 form of the address
|
|
@@ -756,7 +819,7 @@ class Address6 {
|
|
|
756
819
|
if (!/:$/.test(correct)) {
|
|
757
820
|
infix = ':';
|
|
758
821
|
}
|
|
759
|
-
return correct + infix + address4.
|
|
822
|
+
return correct + infix + address4.correctForm();
|
|
760
823
|
}
|
|
761
824
|
/**
|
|
762
825
|
* Decodes the Teredo tunneling fields embedded in this address. Returns the
|
|
@@ -788,11 +851,9 @@ class Address6 {
|
|
|
788
851
|
*/
|
|
789
852
|
const prefix = this.getBitsBase16(0, 32);
|
|
790
853
|
const bitsForUdpPort = this.getBits(80, 96);
|
|
791
|
-
// eslint-disable-next-line no-bitwise
|
|
792
854
|
const udpPort = (bitsForUdpPort ^ BigInt('0xffff')).toString();
|
|
793
855
|
const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64));
|
|
794
856
|
const bitsForClient4 = this.getBits(96, 128);
|
|
795
|
-
// eslint-disable-next-line no-bitwise
|
|
796
857
|
const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt('0xffffffff')).toString(16).padStart(8, '0'));
|
|
797
858
|
const flagsBase2 = this.getBitsBase2(64, 80);
|
|
798
859
|
const coneNat = (0, common_1.testBit)(flagsBase2, 15);
|
|
@@ -874,12 +935,14 @@ class Address6 {
|
|
|
874
935
|
}
|
|
875
936
|
else {
|
|
876
937
|
const beforeU = 64 - pl;
|
|
877
|
-
bits =
|
|
878
|
-
prefixBits.slice(0, pl)
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
938
|
+
bits = [
|
|
939
|
+
prefixBits.slice(0, pl),
|
|
940
|
+
v4Bits.slice(0, beforeU),
|
|
941
|
+
// Bits 64 to 71 are the reserved u octet and are always zero.
|
|
942
|
+
'00000000',
|
|
943
|
+
v4Bits.slice(beforeU),
|
|
944
|
+
'0'.repeat(128 - 72 - (32 - beforeU)),
|
|
945
|
+
].join('');
|
|
883
946
|
}
|
|
884
947
|
const hex = BigInt(`0b${bits}`).toString(16).padStart(32, '0');
|
|
885
948
|
const groups = [];
|
|
@@ -902,7 +965,7 @@ class Address6 {
|
|
|
902
965
|
if (pl !== 32 && pl !== 40 && pl !== 48 && pl !== 56 && pl !== 64 && pl !== 96) {
|
|
903
966
|
throw new address_error_1.AddressError('NAT64 prefix length must be 32, 40, 48, 56, 64, or 96');
|
|
904
967
|
}
|
|
905
|
-
if (!this.
|
|
968
|
+
if (!this.isHostInSubnet(prefix6)) {
|
|
906
969
|
return null;
|
|
907
970
|
}
|
|
908
971
|
const bits = this.binaryZeroPad();
|
|
@@ -927,9 +990,9 @@ class Address6 {
|
|
|
927
990
|
* @returns {Array}
|
|
928
991
|
*/
|
|
929
992
|
toByteArray() {
|
|
930
|
-
const
|
|
931
|
-
|
|
932
|
-
|
|
993
|
+
const value = this.bigInt()
|
|
994
|
+
.toString(16)
|
|
995
|
+
.padStart(constants6.BITS / 4, '0');
|
|
933
996
|
const bytes = [];
|
|
934
997
|
for (let i = 0, length = value.length; i < length; i += 2) {
|
|
935
998
|
bytes.push(parseInt(value.substring(i, i + 2), 16));
|
|
@@ -943,24 +1006,39 @@ class Address6 {
|
|
|
943
1006
|
* @returns {Array}
|
|
944
1007
|
*/
|
|
945
1008
|
toUnsignedByteArray() {
|
|
1009
|
+
// toByteArray() emits 0 to 255, so unsigning it is an identity mapping and
|
|
1010
|
+
// the two methods return equal arrays. 11.0.0 keeps one of them and makes
|
|
1011
|
+
// this a deprecated alias; test/common-test.ts fails at that version.
|
|
946
1012
|
return this.toByteArray().map(unsignByte);
|
|
947
1013
|
}
|
|
948
1014
|
/**
|
|
949
1015
|
* Convert a byte array to an Address6 object.
|
|
950
1016
|
*
|
|
1017
|
+
* Accepts unsigned bytes (0 to 255) or signed bytes (-128 to 127, as an
|
|
1018
|
+
* `Int8Array` or a Java `byte[]` holds them), folding signed values to their
|
|
1019
|
+
* unsigned equivalent. Throws `AddressError` unless given exactly 16
|
|
1020
|
+
* integers from -128 to 255.
|
|
1021
|
+
*
|
|
951
1022
|
* To convert from a Node.js `Buffer`, spread it: `Address6.fromByteArray([...buf])`.
|
|
952
1023
|
* @returns {Address6}
|
|
953
1024
|
*/
|
|
954
1025
|
static fromByteArray(bytes) {
|
|
1026
|
+
// Address4.fromByteArray takes unsigned bytes only. 11.0.0 aligns this
|
|
1027
|
+
// method with it, at which point the -128 floor here, unsignByte, and the
|
|
1028
|
+
// mapping below all go; test/common-test.ts fails at that version.
|
|
1029
|
+
common.assertByteArray(bytes, 16, 'IPv6', -128);
|
|
955
1030
|
return this.fromUnsignedByteArray(bytes.map(unsignByte));
|
|
956
1031
|
}
|
|
957
1032
|
/**
|
|
958
1033
|
* Convert an unsigned byte array to an Address6 object.
|
|
959
1034
|
*
|
|
1035
|
+
* Throws `AddressError` unless given exactly 16 integers from 0 to 255.
|
|
1036
|
+
*
|
|
960
1037
|
* To convert from a Node.js `Buffer`, spread it: `Address6.fromUnsignedByteArray([...buf])`.
|
|
961
1038
|
* @returns {Address6}
|
|
962
1039
|
*/
|
|
963
1040
|
static fromUnsignedByteArray(bytes) {
|
|
1041
|
+
common.assertByteArray(bytes, 16, 'IPv6', 0);
|
|
964
1042
|
const BYTE_MAX = BigInt('256');
|
|
965
1043
|
let result = BigInt('0');
|
|
966
1044
|
let multiplier = BigInt('1');
|
|
@@ -978,22 +1056,28 @@ class Address6 {
|
|
|
978
1056
|
return this.addressMinusSuffix === this.canonicalForm();
|
|
979
1057
|
}
|
|
980
1058
|
/**
|
|
981
|
-
* Returns true if the address is a link
|
|
1059
|
+
* Returns true if the address is a link-local unicast address in `fe80::/10`
|
|
1060
|
+
* ([RFC 4291 §2.4](https://datatracker.ietf.org/doc/html/rfc4291#section-2.4))
|
|
1061
|
+
* or an IPv4-mapped / NAT64 address whose embedded IPv4 address is link-local
|
|
1062
|
+
* (`169.254.0.0/16`, e.g. `::ffff:169.254.169.254`), false otherwise.
|
|
982
1063
|
* @returns {boolean}
|
|
983
1064
|
*/
|
|
984
1065
|
isLinkLocal() {
|
|
985
|
-
|
|
986
|
-
if (
|
|
987
|
-
|
|
988
|
-
return true;
|
|
1066
|
+
const embedded = this.embeddedIPv4();
|
|
1067
|
+
if (embedded) {
|
|
1068
|
+
return embedded.isLinkLocal();
|
|
989
1069
|
}
|
|
990
|
-
return
|
|
1070
|
+
return this.isHostInSubnet(LINK_LOCAL_SUBNET);
|
|
991
1071
|
}
|
|
992
1072
|
/**
|
|
993
1073
|
* Returns true if the address is a multicast address, false otherwise
|
|
994
1074
|
* @returns {boolean}
|
|
995
1075
|
*/
|
|
996
1076
|
isMulticast() {
|
|
1077
|
+
const embedded = this.embeddedIPv4();
|
|
1078
|
+
if (embedded) {
|
|
1079
|
+
return embedded.isMulticast();
|
|
1080
|
+
}
|
|
997
1081
|
const type = this.getType();
|
|
998
1082
|
return type === 'Multicast' || type.startsWith('Multicast ');
|
|
999
1083
|
}
|
|
@@ -1016,27 +1100,54 @@ class Address6 {
|
|
|
1016
1100
|
* @returns {boolean}
|
|
1017
1101
|
*/
|
|
1018
1102
|
isMapped4() {
|
|
1019
|
-
return this.
|
|
1103
|
+
return this.isHostInSubnet(IPV4_MAPPED_SUBNET);
|
|
1104
|
+
}
|
|
1105
|
+
/**
|
|
1106
|
+
* If this address embeds a routable IPv4 address — i.e. it is IPv4-mapped
|
|
1107
|
+
* (`::ffff:0:0/96`) or sits in the NAT64 well-known prefix (`64:ff9b::/96`,
|
|
1108
|
+
* [RFC 6052](https://datatracker.ietf.org/doc/html/rfc6052)) — return that
|
|
1109
|
+
* embedded address as an {@link Address4}; otherwise return null.
|
|
1110
|
+
*
|
|
1111
|
+
* The special-property checks (`isLoopback`, `isLinkLocal`, `isMulticast`,
|
|
1112
|
+
* `isUnspecified`, `isPrivate`, `isCGNAT`, `isBroadcast`) call this first and
|
|
1113
|
+
* delegate to the embedded {@link Address4} when present, so a literal such as
|
|
1114
|
+
* `::ffff:127.0.0.1` is classified by what it actually reaches (loopback)
|
|
1115
|
+
* rather than by its IPv6 wrapper (which `getType()` reports as IPv4-mapped).
|
|
1116
|
+
* This matters wherever the checks back a trust-boundary decision (e.g. an
|
|
1117
|
+
* SSRF allow/deny filter): without normalization, `::ffff:10.0.0.1`,
|
|
1118
|
+
* `::ffff:169.254.169.254`, `64:ff9b::7f00:1`, etc. would all read as
|
|
1119
|
+
* non-internal.
|
|
1120
|
+
* @returns {Address4 | null}
|
|
1121
|
+
*/
|
|
1122
|
+
embeddedIPv4() {
|
|
1123
|
+
if (this.isMapped4() || this.isHostInSubnet(NAT64_WELL_KNOWN_SUBNET)) {
|
|
1124
|
+
return this.to4();
|
|
1125
|
+
}
|
|
1126
|
+
return null;
|
|
1020
1127
|
}
|
|
1021
1128
|
/**
|
|
1022
1129
|
* Returns true if the address is a Teredo address, false otherwise
|
|
1023
1130
|
* @returns {boolean}
|
|
1024
1131
|
*/
|
|
1025
1132
|
isTeredo() {
|
|
1026
|
-
return this.
|
|
1133
|
+
return this.isHostInSubnet(TEREDO_SUBNET);
|
|
1027
1134
|
}
|
|
1028
1135
|
/**
|
|
1029
1136
|
* Returns true if the address is a 6to4 address, false otherwise
|
|
1030
1137
|
* @returns {boolean}
|
|
1031
1138
|
*/
|
|
1032
1139
|
is6to4() {
|
|
1033
|
-
return this.
|
|
1140
|
+
return this.isHostInSubnet(SIX_TO_FOUR_SUBNET);
|
|
1034
1141
|
}
|
|
1035
1142
|
/**
|
|
1036
1143
|
* Returns true if the address is a loopback address, false otherwise
|
|
1037
1144
|
* @returns {boolean}
|
|
1038
1145
|
*/
|
|
1039
1146
|
isLoopback() {
|
|
1147
|
+
const embedded = this.embeddedIPv4();
|
|
1148
|
+
if (embedded) {
|
|
1149
|
+
return embedded.isLoopback();
|
|
1150
|
+
}
|
|
1040
1151
|
return this.getType() === 'Loopback';
|
|
1041
1152
|
}
|
|
1042
1153
|
/**
|
|
@@ -1044,13 +1155,72 @@ class Address6 {
|
|
|
1044
1155
|
* @returns {boolean}
|
|
1045
1156
|
*/
|
|
1046
1157
|
isULA() {
|
|
1047
|
-
return this.
|
|
1158
|
+
return this.isHostInSubnet(ULA_SUBNET);
|
|
1159
|
+
}
|
|
1160
|
+
/**
|
|
1161
|
+
* Returns true if the address is private, i.e. a Unique Local Address in
|
|
1162
|
+
* `fc00::/7` ([RFC 4193](https://datatracker.ietf.org/doc/html/rfc4193)), an
|
|
1163
|
+
* address in the NAT64 local-use range `64:ff9b:1::/48`
|
|
1164
|
+
* ([RFC 8215](https://datatracker.ietf.org/doc/html/rfc8215)), or an
|
|
1165
|
+
* IPv4-mapped / NAT64 well-known address whose embedded IPv4 address is in
|
|
1166
|
+
* one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918)
|
|
1167
|
+
* private ranges (e.g. `::ffff:10.0.0.1`). This is the IPv6 counterpart to
|
|
1168
|
+
* {@link Address4.isPrivate}; use it instead of {@link isULA} when you need to
|
|
1169
|
+
* catch mapped RFC 1918 addresses as well as native ULAs.
|
|
1170
|
+
*
|
|
1171
|
+
* The local-use NAT64 range is reported private as a whole rather than by
|
|
1172
|
+
* its embedded IPv4 address: an operator may carve a prefix of any RFC 6052
|
|
1173
|
+
* length out of `64:ff9b:1::/48`, so the same bits decode to different IPv4
|
|
1174
|
+
* addresses under different deployments and no single decoding is correct.
|
|
1175
|
+
* Use {@link toAddress4Nat64} with the deployment's prefix to decode one.
|
|
1176
|
+
* @returns {boolean}
|
|
1177
|
+
*/
|
|
1178
|
+
isPrivate() {
|
|
1179
|
+
const embedded = this.embeddedIPv4();
|
|
1180
|
+
if (embedded) {
|
|
1181
|
+
return embedded.isPrivate();
|
|
1182
|
+
}
|
|
1183
|
+
return this.isULA() || this.isHostInSubnet(NAT64_LOCAL_USE_SUBNET);
|
|
1184
|
+
}
|
|
1185
|
+
/**
|
|
1186
|
+
* Returns true if the address is an IPv4-mapped / NAT64 address whose embedded
|
|
1187
|
+
* IPv4 address is in the carrier-grade NAT range `100.64.0.0/10`
|
|
1188
|
+
* ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)), false
|
|
1189
|
+
* otherwise. There is no native IPv6 CGNAT range, so this only ever returns
|
|
1190
|
+
* true for an embedded IPv4 address (e.g. `::ffff:100.64.0.1`).
|
|
1191
|
+
* @returns {boolean}
|
|
1192
|
+
*/
|
|
1193
|
+
isCGNAT() {
|
|
1194
|
+
const embedded = this.embeddedIPv4();
|
|
1195
|
+
if (embedded) {
|
|
1196
|
+
return embedded.isCGNAT();
|
|
1197
|
+
}
|
|
1198
|
+
return false;
|
|
1199
|
+
}
|
|
1200
|
+
/**
|
|
1201
|
+
* Returns true if the address is an IPv4-mapped / NAT64 address whose embedded
|
|
1202
|
+
* IPv4 address is the limited broadcast address `255.255.255.255`
|
|
1203
|
+
* ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)), false otherwise.
|
|
1204
|
+
* There is no IPv6 broadcast, so this only ever returns true for an embedded
|
|
1205
|
+
* IPv4 address (e.g. `::ffff:255.255.255.255`).
|
|
1206
|
+
* @returns {boolean}
|
|
1207
|
+
*/
|
|
1208
|
+
isBroadcast() {
|
|
1209
|
+
const embedded = this.embeddedIPv4();
|
|
1210
|
+
if (embedded) {
|
|
1211
|
+
return embedded.isBroadcast();
|
|
1212
|
+
}
|
|
1213
|
+
return false;
|
|
1048
1214
|
}
|
|
1049
1215
|
/**
|
|
1050
1216
|
* Returns true if the address is the unspecified address `::`.
|
|
1051
1217
|
* @returns {boolean}
|
|
1052
1218
|
*/
|
|
1053
1219
|
isUnspecified() {
|
|
1220
|
+
const embedded = this.embeddedIPv4();
|
|
1221
|
+
if (embedded) {
|
|
1222
|
+
return embedded.isUnspecified();
|
|
1223
|
+
}
|
|
1054
1224
|
return this.getType() === 'Unspecified';
|
|
1055
1225
|
}
|
|
1056
1226
|
/**
|
|
@@ -1058,7 +1228,49 @@ class Address6 {
|
|
|
1058
1228
|
* @returns {boolean}
|
|
1059
1229
|
*/
|
|
1060
1230
|
isDocumentation() {
|
|
1061
|
-
return this.
|
|
1231
|
+
return DOCUMENTATION_SUBNETS.some((subnet) => this.isHostInSubnet(subnet));
|
|
1232
|
+
}
|
|
1233
|
+
/**
|
|
1234
|
+
* Returns true if the address is in the benchmarking range `2001:2::/48`
|
|
1235
|
+
* ([RFC 5180](https://datatracker.ietf.org/doc/html/rfc5180)) or is an
|
|
1236
|
+
* IPv4-mapped / NAT64 address whose embedded IPv4 address is in
|
|
1237
|
+
* `198.18.0.0/15`, false otherwise.
|
|
1238
|
+
* @returns {boolean}
|
|
1239
|
+
*/
|
|
1240
|
+
isBenchmarking() {
|
|
1241
|
+
const embedded = this.embeddedIPv4();
|
|
1242
|
+
if (embedded) {
|
|
1243
|
+
return embedded.isBenchmarking();
|
|
1244
|
+
}
|
|
1245
|
+
return this.isHostInSubnet(BENCHMARKING_SUBNET);
|
|
1246
|
+
}
|
|
1247
|
+
/**
|
|
1248
|
+
* Returns true if the address is globally reachable: inside the global
|
|
1249
|
+
* unicast allocation `2000::/3` (the only range the [IANA IPv6 Address Space
|
|
1250
|
+
* Registry](https://www.iana.org/assignments/ipv6-address-space/) assigns
|
|
1251
|
+
* for global unicast; everything else is reserved, ULA, link-local, or
|
|
1252
|
+
* multicast) and not in any block the [IANA IPv6 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv6-special-registry/)
|
|
1253
|
+
* marks as not globally reachable. An IPv4-mapped or NAT64 well-known
|
|
1254
|
+
* address answers for its embedded IPv4 address, so `::ffff:10.0.0.1` and
|
|
1255
|
+
* `64:ff9b::7f00:1` are not global. Teredo (`2001::/32`) and 6to4
|
|
1256
|
+
* (`2002::/16`) are not global either: the registry lists them as N/A and a
|
|
1257
|
+
* packet to one needs a relay.
|
|
1258
|
+
*
|
|
1259
|
+
* This covers everything the individual classifiers name and the blocks they
|
|
1260
|
+
* do not: the discard-only prefix `100::/64`, the IETF protocol assignments
|
|
1261
|
+
* in `2001::/23`, the deprecated site-local `fec0::/10` and IPv4-compatible
|
|
1262
|
+
* `::/96` ranges, and unallocated space such as `4000::/3`. It is the single
|
|
1263
|
+
* predicate to use where a request must not reach an internal or
|
|
1264
|
+
* special-purpose destination; see SECURITY.md.
|
|
1265
|
+
* @returns {boolean}
|
|
1266
|
+
*/
|
|
1267
|
+
isGlobal() {
|
|
1268
|
+
const embedded = this.embeddedIPv4();
|
|
1269
|
+
if (embedded) {
|
|
1270
|
+
return embedded.isGlobal();
|
|
1271
|
+
}
|
|
1272
|
+
return (this.isHostInSubnet(GLOBAL_UNICAST_SUBNET) &&
|
|
1273
|
+
common.isGloballyReachable.call(this, SPECIAL_PURPOSE_V6));
|
|
1062
1274
|
}
|
|
1063
1275
|
// #endregion
|
|
1064
1276
|
// #region HTML
|
|
@@ -1111,7 +1323,12 @@ class Address6 {
|
|
|
1111
1323
|
return `<a href="${safeHref}">${safeForm}</a>`;
|
|
1112
1324
|
}
|
|
1113
1325
|
/**
|
|
1114
|
-
* Groups an address
|
|
1326
|
+
* Groups an address.
|
|
1327
|
+
*
|
|
1328
|
+
* Returns an HTML fragment: each group is wrapped in a `<span>` carrying
|
|
1329
|
+
* the group classes an address-inspector UI hovers on. The address content
|
|
1330
|
+
* is HTML-escaped; anything you concatenate around it is your
|
|
1331
|
+
* responsibility.
|
|
1115
1332
|
* @returns {String}
|
|
1116
1333
|
*/
|
|
1117
1334
|
group() {
|
|
@@ -1212,6 +1429,15 @@ const TYPE_SUBNETS = Object.keys(constants6.TYPES).map((subnet) => [
|
|
|
1212
1429
|
const TEREDO_SUBNET = new Address6('2001::/32');
|
|
1213
1430
|
const SIX_TO_FOUR_SUBNET = new Address6('2002::/16');
|
|
1214
1431
|
const ULA_SUBNET = new Address6('fc00::/7');
|
|
1215
|
-
const
|
|
1432
|
+
const LINK_LOCAL_SUBNET = new Address6('fe80::/10');
|
|
1433
|
+
const DOCUMENTATION_SUBNETS = [new Address6('2001:db8::/32'), new Address6('3fff::/20')];
|
|
1434
|
+
const BENCHMARKING_SUBNET = new Address6('2001:2::/48');
|
|
1435
|
+
const GLOBAL_UNICAST_SUBNET = new Address6('2000::/3');
|
|
1436
|
+
const SPECIAL_PURPOSE_V6 = constants6.SPECIAL_PURPOSE.map(([cidr, , reachable]) => ({
|
|
1437
|
+
subnet: new Address6(cidr),
|
|
1438
|
+
reachable,
|
|
1439
|
+
}));
|
|
1216
1440
|
const IPV4_MAPPED_SUBNET = new Address6('::ffff:0:0/96');
|
|
1441
|
+
const NAT64_WELL_KNOWN_SUBNET = new Address6('64:ff9b::/96');
|
|
1442
|
+
const NAT64_LOCAL_USE_SUBNET = new Address6('64:ff9b:1::/48');
|
|
1217
1443
|
//# sourceMappingURL=ipv6.js.map
|