@skyramp/mcp 0.4.1 → 0.4.2-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (543) hide show
  1. package/build/adapters/jestAdapter.js +23 -5
  2. package/build/adapters/mochaAdapter.js +7 -1
  3. package/build/adapters/playwrightAdapter.js +3 -1
  4. package/build/adapters/pytestAdapter.js +14 -3
  5. package/build/commands/localDevTestChangesCommand.js +1 -0
  6. package/build/commands/recommendTestsAndExecuteCommand.js +5 -6
  7. package/build/commands/testThisEndpointCommand.js +16 -4
  8. package/build/index.js +34 -4
  9. package/build/playwright/blueprintDigest.js +28 -7
  10. package/build/playwright/registerPlaywrightTools.js +33 -28
  11. package/build/playwright/traceRecordingPrompt.js +9 -2
  12. package/build/prompts/code-reuse.js +95 -29
  13. package/build/prompts/fix-error-prompt.d.ts +9 -1
  14. package/build/prompts/fix-error-prompt.js +31 -28
  15. package/build/prompts/local-dev/local-dev-plan.d.ts +3 -0
  16. package/build/prompts/local-dev/local-dev-plan.js +3 -1
  17. package/build/prompts/local-dev/local-dev-prompts.d.ts +1 -1
  18. package/build/prompts/local-dev/local-dev-prompts.js +30 -3
  19. package/build/prompts/modularization/integration-test-modularization.js +13 -6
  20. package/build/prompts/modularization/ui-test-modularization.js +1 -1
  21. package/build/prompts/personas.js +1 -1
  22. package/build/prompts/pom-aware-code-reuse.js +7 -9
  23. package/build/prompts/reuse-hand-off.d.ts +64 -0
  24. package/build/prompts/reuse-hand-off.js +130 -0
  25. package/build/prompts/shared-helper-policy.d.ts +88 -2
  26. package/build/prompts/shared-helper-policy.js +145 -11
  27. package/build/prompts/sut-setup/modes/adaptWorkflowPrompt.js +1 -1
  28. package/build/prompts/sut-setup/modes/dockerComposePrompt.js +1 -1
  29. package/build/prompts/sut-setup/shared.d.ts +4 -1
  30. package/build/prompts/sut-setup/shared.js +2 -2
  31. package/build/prompts/test-maintenance/actionsInstructions.d.ts +19 -11
  32. package/build/prompts/test-maintenance/actionsInstructions.js +47 -26
  33. package/build/prompts/test-maintenance/drift-analysis-prompt.js +3 -2
  34. package/build/prompts/test-maintenance/driftAnalysisSections.js +5 -3
  35. package/build/prompts/test-maintenance/driftAnalysisShared.js +4 -2
  36. package/build/prompts/test-maintenance/uiDriftAnalysisSections.js +7 -4
  37. package/build/prompts/test-recommendation/recommendationSections.js +19 -8
  38. package/build/prompts/test-recommendation/registerRecommendTestsPrompt.js +5 -2
  39. package/build/prompts/test-recommendation/test-recommendation-prompt.js +10 -7
  40. package/build/prompts/testbot/testbot-prompts.js +123 -55
  41. package/build/recommendation/answers.js +18 -9
  42. package/build/recommendation/pullRequestText.js +1 -1
  43. package/build/recommendation/registerPlan.js +31 -17
  44. package/build/recommendation/subjectStep.d.ts +8 -10
  45. package/build/recommendation/subjectStep.js +17 -16
  46. package/build/recommendation/types.d.ts +71 -17
  47. package/build/recommendation/types.js +9 -15
  48. package/build/recommendation/verifierContracts.d.ts +7 -3
  49. package/build/recommendation/verifierContracts.js +8 -4
  50. package/build/recommendation/verifiers/changedFile.js +11 -13
  51. package/build/recommendation/verifiers/citedPath.d.ts +8 -0
  52. package/build/recommendation/verifiers/citedPath.js +16 -2
  53. package/build/recommendation/verifiers/coverage.d.ts +2 -2
  54. package/build/recommendation/verifiers/coverage.js +190 -134
  55. package/build/recommendation/verifiers/defects.js +56 -16
  56. package/build/recommendation/verifiers/deliveredMatchesPlan.d.ts +7 -1
  57. package/build/recommendation/verifiers/deliveredMatchesPlan.js +28 -14
  58. package/build/recommendation/verifiers/endpointGrounded.js +14 -8
  59. package/build/recommendation/verifiers/existingCoverage.d.ts +6 -0
  60. package/build/recommendation/verifiers/existingCoverage.js +30 -21
  61. package/build/recommendation/verifiers/expectedOutcome.js +17 -8
  62. package/build/recommendation/verifiers/expectedValueSourced.js +54 -43
  63. package/build/recommendation/verifiers/issueTraceability.d.ts +5 -0
  64. package/build/recommendation/verifiers/issueTraceability.js +64 -7
  65. package/build/recommendation/verifiers/removedElementGuarded.js +19 -11
  66. package/build/recommendation/verifiers/reportedCategory.js +9 -4
  67. package/build/recommendation/verifiers/requirementSourced.js +34 -21
  68. package/build/recommendation/verifiers/screenRoute.js +15 -10
  69. package/build/recommendation/verifiers/statedDifference.js +15 -8
  70. package/build/recommendation/verifiers/uiElementGrounded.js +50 -16
  71. package/build/resources/analysisResources.js +7 -3
  72. package/build/resources/progressResource.js +4 -2
  73. package/build/resources/sutSetupResource.js +20 -2
  74. package/build/resources/testbotResource.js +19 -1
  75. package/build/services/AnalyticsService.js +3 -1
  76. package/build/services/ScenarioGenerationService.js +5 -5
  77. package/build/services/TestDiscoveryService.js +21 -5
  78. package/build/services/TestExecutionService.js +63 -21
  79. package/build/services/TestGenerationService.d.ts +1 -1
  80. package/build/services/TestGenerationService.js +43 -24
  81. package/build/skills/enhanceAssertionsSkill.d.ts +45 -0
  82. package/build/skills/enhanceAssertionsSkill.js +103 -0
  83. package/build/skills/fixTestImportErrorsSkill.d.ts +2 -2
  84. package/build/skills/fixTestImportErrorsSkill.js +2 -2
  85. package/build/skills/skillFiles.d.ts +38 -0
  86. package/build/skills/skillFiles.js +94 -0
  87. package/build/skills/validateAssertionAlignmentSkill.d.ts +34 -0
  88. package/build/skills/validateAssertionAlignmentSkill.js +59 -0
  89. package/build/tool-phases.js +4 -0
  90. package/build/tools/auth/loginTool.js +3 -1
  91. package/build/tools/auth/logoutTool.js +3 -1
  92. package/build/tools/code-refactor/alignAssertionsTool.d.ts +2 -0
  93. package/build/tools/code-refactor/alignAssertionsTool.js +51 -0
  94. package/build/tools/code-refactor/assertion-state.d.ts +1 -1
  95. package/build/tools/code-refactor/assertion-state.js +1 -1
  96. package/build/tools/code-refactor/assertionOperations.d.ts +44 -0
  97. package/build/tools/code-refactor/assertionOperations.js +82 -0
  98. package/build/tools/code-refactor/assertionSkillTools.d.ts +3 -0
  99. package/build/tools/code-refactor/assertionSkillTools.js +86 -0
  100. package/build/tools/code-refactor/codeReuseTool.js +27 -3
  101. package/build/tools/code-refactor/enhanceAssertionsTool.js +19 -83
  102. package/build/tools/code-refactor/gate-markers.d.ts +51 -0
  103. package/build/tools/code-refactor/gate-markers.js +95 -0
  104. package/build/tools/code-refactor/retrofit-state.d.ts +3 -1
  105. package/build/tools/code-refactor/retrofit-state.js +44 -2
  106. package/build/tools/code-refactor/reuse-outcome.d.ts +23 -1
  107. package/build/tools/code-refactor/reuse-outcome.js +36 -13
  108. package/build/tools/code-refactor/reuse-state.d.ts +90 -16
  109. package/build/tools/code-refactor/reuse-state.js +191 -61
  110. package/build/tools/code-refactor/utils-verify-gates.d.ts +4 -0
  111. package/build/tools/code-refactor/utils-verify-gates.js +252 -27
  112. package/build/tools/code-refactor/verify-gates.d.ts +15 -1
  113. package/build/tools/code-refactor/verify-gates.js +36 -4
  114. package/build/tools/enrichTestWithMocksTool.d.ts +1 -1
  115. package/build/tools/enrichTestWithMocksTool.js +9 -5
  116. package/build/tools/executeSkyrampTestTool.d.ts +22 -1
  117. package/build/tools/executeSkyrampTestTool.js +571 -271
  118. package/build/tools/execution-video-state.js +1 -1
  119. package/build/tools/fixErrorTool.js +5 -6
  120. package/build/tools/generate-tests/batchMockGenerationTool.js +1 -1
  121. package/build/tools/generate-tests/generateBatchScenarioRestTool.js +114 -73
  122. package/build/tools/generate-tests/generateContractRestTool.js +34 -16
  123. package/build/tools/generate-tests/generateE2ERestTool.d.ts +1 -0
  124. package/build/tools/generate-tests/generateE2ERestTool.js +9 -1
  125. package/build/tools/generate-tests/generateIntegrationRestTool.js +22 -7
  126. package/build/tools/generate-tests/generateMockRestTool.js +3 -1
  127. package/build/tools/generate-tests/generateUIRestTool.d.ts +2 -0
  128. package/build/tools/generate-tests/generateUIRestTool.js +11 -2
  129. package/build/tools/generate-tests/loadTestSchema.js +1 -3
  130. package/build/tools/generate-tests/planGuard.js +6 -3
  131. package/build/tools/generate-tests/scenarioFileIdentity.js +4 -1
  132. package/build/tools/generate-tests/scenarioLint.js +17 -5
  133. package/build/tools/generate-tests/trace-reuse-guard.js +5 -2
  134. package/build/tools/generateEnrichedIntegrationTestTool.js +9 -3
  135. package/build/tools/one-click/oneClickTool.js +3 -1
  136. package/build/tools/preflightMockCheckTool.js +23 -7
  137. package/build/tools/runExistingTestsTool.d.ts +1 -1
  138. package/build/tools/runExistingTestsTool.js +43 -21
  139. package/build/tools/submitReportTool.d.ts +51 -12
  140. package/build/tools/submitReportTool.js +860 -161
  141. package/build/tools/test-management/actionsTool.js +210 -51
  142. package/build/tools/test-management/analyzeChangesTool.d.ts +4 -5
  143. package/build/tools/test-management/analyzeChangesTool.js +127 -68
  144. package/build/tools/test-management/analyzeTestHealthTool.js +35 -13
  145. package/build/tools/test-management/registerTestPlanTool.d.ts +44 -34
  146. package/build/tools/test-management/registerTestPlanTool.js +255 -111
  147. package/build/tools/test-management/resolveScreenTool.js +33 -9
  148. package/build/tools/trace/startTraceCollectionTool.js +3 -1
  149. package/build/tools/trace/stopTraceCollectionTool.js +41 -5
  150. package/build/tools/verifyTestDependenciesTool.d.ts +3 -0
  151. package/build/tools/verifyTestDependenciesTool.js +54 -0
  152. package/build/tools/workspace/initScanWorkspaceTool.js +9 -3
  153. package/build/tools/workspace/initializeWorkspaceTool.js +3 -1
  154. package/build/types/AssertionOutcome.d.ts +1 -1
  155. package/build/types/EnhanceType.d.ts +6 -0
  156. package/build/types/EnhanceType.js +1 -0
  157. package/build/types/ExternalTestExecution.d.ts +2 -2
  158. package/build/types/RepositoryAnalysis.d.ts +0 -40
  159. package/build/types/ReuseOutcome.d.ts +96 -4
  160. package/build/types/ReuseOutcome.js +16 -0
  161. package/build/types/StepMethod.js +20 -6
  162. package/build/types/TestAnalysis.d.ts +10 -2
  163. package/build/types/TestExecution.d.ts +45 -0
  164. package/build/types/TestRecommendation.d.ts +1 -1
  165. package/build/types/TestRecommendation.js +4 -1
  166. package/build/types/TestTypes.d.ts +13 -0
  167. package/build/types/TestTypes.js +34 -3
  168. package/build/types/TestbotPromptOptions.d.ts +9 -1
  169. package/build/types/TestbotReport.d.ts +45 -9
  170. package/build/utils/AnalysisStateManager.d.ts +137 -27
  171. package/build/utils/AnalysisStateManager.js +227 -43
  172. package/build/utils/assertion-verify/api-shared-lints.js +34 -16
  173. package/build/utils/assertion-verify/metrics.js +39 -6
  174. package/build/utils/assertion-verify/ui-lints.js +4 -2
  175. package/build/utils/branchDiff.js +47 -12
  176. package/build/utils/canonicalJson.js +3 -1
  177. package/build/utils/dartRouteExtractor.js +36 -7
  178. package/build/utils/fixAttempts.d.ts +26 -0
  179. package/build/utils/fixAttempts.js +109 -0
  180. package/build/utils/frontendSelectors.js +23 -4
  181. package/build/utils/generatedTestRecord.d.ts +19 -0
  182. package/build/utils/generatedTestRecord.js +61 -0
  183. package/build/utils/gitStaging.js +7 -2
  184. package/build/utils/initAgent.js +26 -6
  185. package/build/utils/language-helper.js +39 -45
  186. package/build/utils/pathMatching.js +2 -1
  187. package/build/utils/pathSignatures.js +6 -2
  188. package/build/utils/planMatchKeys.d.ts +2 -2
  189. package/build/utils/planMatchKeys.js +20 -14
  190. package/build/utils/pom-catalog-parse.js +7 -2
  191. package/build/utils/pom-scope/import-expansion.js +6 -1
  192. package/build/utils/pom-scope/index.js +50 -12
  193. package/build/utils/pom-scope/scoring.js +13 -3
  194. package/build/utils/pom-scope/selector-extractor.js +16 -3
  195. package/build/utils/pom-scope/strip.d.ts +8 -0
  196. package/build/utils/pom-scope/strip.js +238 -0
  197. package/build/utils/pom-scope/testIdDiscovery.js +14 -2
  198. package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.d.ts +1 -1
  199. package/build/utils/pom-verify/__fixtures__/af-style/asset-list.page.js +4 -2
  200. package/build/utils/pom-verify/__fixtures__/af-style/report.iframe.page.js +3 -1
  201. package/build/utils/pom-verify/__fixtures__/af-style/workflow-footer.page.js +3 -1
  202. package/build/utils/pom-verify/bindings.js +5 -1
  203. package/build/utils/pom-verify/calls.js +9 -2
  204. package/build/utils/pom-verify/verify.js +27 -5
  205. package/build/utils/pr-comment-parser.js +20 -7
  206. package/build/utils/proxy-terminal.d.ts +19 -1
  207. package/build/utils/proxy-terminal.js +346 -21
  208. package/build/utils/removedUiElements.js +1 -1
  209. package/build/utils/reportLanguage.js +35 -7
  210. package/build/utils/reportVerification.d.ts +14 -8
  211. package/build/utils/reportVerification.js +19 -19
  212. package/build/utils/repositorySlug.d.ts +32 -0
  213. package/build/utils/repositorySlug.js +77 -0
  214. package/build/utils/reuseRouting.js +6 -2
  215. package/build/utils/runSerialized.d.ts +3 -0
  216. package/build/utils/runSerialized.js +39 -0
  217. package/build/utils/screenRoutes.js +74 -18
  218. package/build/utils/sourceRouteExtractor.js +13 -6
  219. package/build/utils/telemetry.d.ts +1 -0
  220. package/build/utils/telemetry.js +8 -5
  221. package/build/utils/testDependencyPolicy.d.ts +9 -0
  222. package/build/utils/testDependencyPolicy.js +788 -0
  223. package/build/utils/testExecutionRecord.d.ts +90 -0
  224. package/build/utils/testExecutionRecord.js +267 -0
  225. package/build/utils/testFileClassification.js +3 -1
  226. package/build/utils/trace-parser.js +62 -14
  227. package/build/utils/urlPath.js +3 -1
  228. package/build/utils/utils-verify/action-key.d.ts +4 -0
  229. package/build/utils/utils-verify/action-key.js +2 -2
  230. package/build/utils/utils-verify/allow.d.ts +122 -3
  231. package/build/utils/utils-verify/allow.js +146 -21
  232. package/build/utils/utils-verify/body-reach.d.ts +120 -0
  233. package/build/utils/utils-verify/body-reach.js +335 -0
  234. package/build/utils/utils-verify/call-sites.d.ts +6 -1
  235. package/build/utils/utils-verify/call-sites.js +72 -8
  236. package/build/utils/utils-verify/delivered-imports.d.ts +43 -0
  237. package/build/utils/utils-verify/delivered-imports.js +84 -0
  238. package/build/utils/utils-verify/fixed-sleep.d.ts +96 -0
  239. package/build/utils/utils-verify/fixed-sleep.js +461 -0
  240. package/build/utils/utils-verify/in-house.d.ts +93 -0
  241. package/build/utils/utils-verify/in-house.js +719 -0
  242. package/build/utils/utils-verify/incumbent.d.ts +3 -0
  243. package/build/utils/utils-verify/incumbent.js +75 -0
  244. package/build/utils/utils-verify/index.d.ts +1 -0
  245. package/build/utils/utils-verify/index.js +1 -0
  246. package/build/utils/utils-verify/language-spec.d.ts +26 -10
  247. package/build/utils/utils-verify/language-spec.js +217 -20
  248. package/build/utils/utils-verify/locate.d.ts +26 -0
  249. package/build/utils/utils-verify/locate.js +125 -23
  250. package/build/utils/utils-verify/module-name.d.ts +40 -0
  251. package/build/utils/utils-verify/module-name.js +98 -0
  252. package/build/utils/utils-verify/parse.d.ts +46 -6
  253. package/build/utils/utils-verify/parse.js +176 -38
  254. package/build/utils/utils-verify/retrofit-equivalence.d.ts +5 -0
  255. package/build/utils/utils-verify/retrofit-equivalence.js +4 -2
  256. package/build/utils/utils-verify/stage.d.ts +5 -0
  257. package/build/utils/utils-verify/stage.js +47 -2
  258. package/build/utils/utils-verify/status-once.d.ts +62 -0
  259. package/build/utils/utils-verify/status-once.js +207 -0
  260. package/build/utils/utils-verify/typecheck.d.ts +61 -0
  261. package/build/utils/utils-verify/typecheck.js +338 -0
  262. package/build/utils/utils-verify/verify.d.ts +76 -1
  263. package/build/utils/utils-verify/verify.js +516 -44
  264. package/build/utils/versions.d.ts +3 -3
  265. package/build/utils/versions.js +1 -1
  266. package/build/utils/workspaceAuth.js +107 -37
  267. package/build/workspace/queryParamResolution.js +11 -4
  268. package/build/workspace/workspace.js +7 -7
  269. package/node_modules/playwright/ThirdPartyNotices.txt +19 -19
  270. package/node_modules/playwright/lib/mcp/skyramp/assertTool.js +8 -2
  271. package/node_modules/playwright/lib/mcp/skyramp/common/cssValue.js +87 -0
  272. package/node_modules/playwright/lib/mcp/skyramp/loadTraceTool.js +31 -0
  273. package/node_modules/playwright/lib/mcp/skyramp/skyRampImport.js +3 -0
  274. package/node_modules/playwright/lib/mcp/skyramp/traceRecordingBackend.js +181 -15
  275. package/node_modules/playwright/lib/mcp/test/skyRampExport.js +24 -0
  276. package/node_modules/playwright/lib/transform/babelBundleImpl.js +2353 -190
  277. package/node_modules/playwright/node_modules/playwright-core/ThirdPartyNotices.txt +62 -34
  278. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/.package-lock.json +72 -41
  279. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.js +1 -1
  280. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/dist/serve-static.mjs +1 -1
  281. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/@hono/node-server/package.json +2 -2
  282. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/README.md +16 -1
  283. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/index.js +4 -20
  284. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/read.js +17 -17
  285. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/json.js +60 -32
  286. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/raw.js +3 -3
  287. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/text.js +3 -3
  288. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/types/urlencoded.js +16 -20
  289. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/lib/utils.js +18 -16
  290. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/LICENSE +22 -0
  291. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/README.md +71 -0
  292. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.d.ts +46 -0
  293. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js +176 -0
  294. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/dist/index.js.map +1 -0
  295. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/node_modules/content-type/package.json +52 -0
  296. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/body-parser/package.json +23 -10
  297. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/CHANGELOG.md +21 -14
  298. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/isObject.d.ts +1 -1
  299. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/package.json +6 -7
  300. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/es-object-atoms/tsconfig.json +1 -0
  301. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/index.js +266 -45
  302. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/schemes.js +9 -4
  303. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/lib/utils.js +396 -92
  304. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/package.json +1 -1
  305. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/component-safe-serialization.test.js +163 -0
  306. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/equal.test.js +31 -3
  307. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/fixtures/uri-js-parse.json +2 -0
  308. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-canonical.test.js +34 -0
  309. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/ipv6-validation.test.js +124 -0
  310. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-percent.test.js +77 -0
  311. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/malformed-urn.test.js +61 -0
  312. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/parse.test.js +7 -3
  313. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
  314. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/reserved-path-normalization.test.js +109 -0
  315. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/scheme-validation.test.js +124 -0
  316. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security-normalization.test.js +101 -0
  317. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/security.test.js +301 -3
  318. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/urn-full-input.test.js +29 -0
  319. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/fast-uri/test/websocket-query-preservation.test.js +24 -0
  320. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/CHANGELOG.md +7 -0
  321. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/index.d.ts +0 -1
  322. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hasown/package.json +4 -5
  323. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/client.js +30 -16
  324. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/client/utils.js +4 -1
  325. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/context.js +32 -13
  326. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/accepts/accepts.js +36 -2
  327. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
  328. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/ssg.js +1 -1
  329. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/ssg/utils.js +30 -10
  330. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/helper/streaming/sse.js +5 -4
  331. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/hono-base.js +10 -8
  332. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/base.js +44 -23
  333. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/components.js +25 -26
  334. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/context.js +5 -5
  335. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/render.js +2 -0
  336. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
  337. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
  338. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +3 -3
  339. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
  340. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
  341. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
  342. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/cors/index.js +17 -14
  343. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/csrf/index.js +1 -1
  344. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/digest.js +47 -1
  345. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/etag/index.js +7 -4
  346. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
  347. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
  348. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
  349. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
  350. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/pretty-json/index.js +3 -1
  351. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/middleware/secure-headers/secure-headers.js +16 -7
  352. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/request.js +20 -13
  353. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/linear-router/router.js +7 -2
  354. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/pattern-router/router.js +3 -9
  355. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +65 -59
  356. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +71 -128
  357. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +14 -5
  358. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/node.js +47 -70
  359. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/trie-router/router.js +3 -11
  360. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router/utils.js +27 -0
  361. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/router.js +1 -1
  362. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/accept.js +1 -1
  363. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/body.js +21 -3
  364. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/cookie.js +4 -3
  365. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/ipaddr.js +5 -3
  366. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/stream.js +12 -3
  367. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/cjs/utils/url.js +19 -11
  368. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/client.js +30 -16
  369. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/client/utils.js +4 -1
  370. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/context.js +32 -13
  371. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/accepts/accepts.js +36 -2
  372. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/proxy/index.js +4 -0
  373. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/ssg.js +1 -1
  374. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/ssg/utils.js +30 -10
  375. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/helper/streaming/sse.js +5 -4
  376. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/hono-base.js +10 -8
  377. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/base.js +41 -23
  378. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/components.js +26 -27
  379. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/context.js +6 -6
  380. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/render.js +2 -0
  381. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/dom/server.js +5 -1
  382. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/hooks/index.js +16 -13
  383. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/intrinsic-element/components.js +4 -4
  384. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/jsx/streaming.js +5 -6
  385. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cache/index.js +103 -8
  386. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/compress/index.js +5 -0
  387. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/cors/index.js +17 -14
  388. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/csrf/index.js +1 -1
  389. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/digest.js +47 -1
  390. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/etag/index.js +7 -4
  391. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
  392. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
  393. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/language/language.js +10 -6
  394. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
  395. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/pretty-json/index.js +3 -1
  396. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/middleware/secure-headers/secure-headers.js +16 -7
  397. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/request.js +21 -14
  398. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/linear-router/router.js +7 -2
  399. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/pattern-router/router.js +3 -9
  400. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/node.js +61 -58
  401. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/router.js +77 -129
  402. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/reg-exp-router/trie.js +14 -5
  403. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/node.js +47 -70
  404. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/trie-router/router.js +3 -11
  405. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router/utils.js +5 -0
  406. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/router.js +1 -1
  407. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/adapter/aws-lambda/types.d.ts +9 -0
  408. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/client/types.d.ts +1 -1
  409. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/context.d.ts +6 -2
  410. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/hono-base.d.ts +4 -3
  411. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/base.d.ts +7 -2
  412. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
  413. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
  414. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
  415. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
  416. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
  417. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
  418. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/combine/index.d.ts +1 -1
  419. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
  420. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
  421. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
  422. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
  423. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
  424. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/middleware/secure-headers/permissions-policy.d.ts +3 -3
  425. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +4 -1
  426. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
  427. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/node.d.ts +1 -2
  428. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/trie-router/router.d.ts +0 -1
  429. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router/utils.d.ts +1 -0
  430. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/router.d.ts +1 -1
  431. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
  432. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/types/utils/url.d.ts +5 -0
  433. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/accept.js +1 -1
  434. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/body.js +21 -3
  435. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/cookie.js +5 -4
  436. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/ipaddr.js +5 -3
  437. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/stream.js +12 -3
  438. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/dist/utils/url.js +17 -10
  439. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/hono/package.json +11 -4
  440. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/README.md +173 -143
  441. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.d.ts +11 -0
  442. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/address-error.js.map +1 -1
  443. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.d.ts +49 -0
  444. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js +79 -4
  445. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/common.js.map +1 -1
  446. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.d.ts +78 -5
  447. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js +119 -24
  448. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv4.js.map +1 -1
  449. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.d.ts +151 -10
  450. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js +316 -90
  451. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/ipv6.js.map +1 -1
  452. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
  453. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js +45 -2
  454. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v4/constants.js.map +1 -1
  455. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
  456. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js +50 -3
  457. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  458. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/ip-address/package.json +6 -4
  459. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/.github/THREAT_MODEL.md +3 -3
  460. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/CHANGELOG.md +26 -0
  461. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/README.md +19 -1
  462. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/dist/qs.js +25 -25
  463. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/eslint.config.mjs +1 -1
  464. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/parse.js +16 -6
  465. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/stringify.js +23 -8
  466. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/lib/utils.js +57 -11
  467. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/package.json +8 -7
  468. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/parse.js +419 -0
  469. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/stringify.js +317 -0
  470. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/qs/test/utils.js +206 -0
  471. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/CHANGELOG.md +10 -0
  472. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/README.md +1 -1
  473. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/index.js +5 -2
  474. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/package.json +10 -10
  475. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/side-channel/test/index.js +16 -0
  476. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/index.js +8 -18
  477. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/LICENSE +22 -0
  478. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/README.md +71 -0
  479. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.d.ts +46 -0
  480. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js +176 -0
  481. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/dist/index.js.map +1 -0
  482. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/node_modules/content-type/package.json +52 -0
  483. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/node_modules/type-is/package.json +9 -5
  484. package/node_modules/playwright/node_modules/playwright-core/bundles/mcp/package-lock.json +72 -41
  485. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/.package-lock.json +6 -6
  486. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/README.md +23 -1
  487. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/index.js +265 -86
  488. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/brace-expansion/package.json +1 -1
  489. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/README.md +173 -143
  490. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.d.ts +11 -0
  491. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/address-error.js.map +1 -1
  492. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.d.ts +49 -0
  493. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js +79 -4
  494. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/common.js.map +1 -1
  495. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.d.ts +78 -5
  496. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js +119 -24
  497. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv4.js.map +1 -1
  498. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.d.ts +151 -10
  499. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js +316 -90
  500. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/ipv6.js.map +1 -1
  501. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.d.ts +12 -0
  502. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js +45 -2
  503. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v4/constants.js.map +1 -1
  504. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.d.ts +14 -0
  505. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js +50 -3
  506. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/dist/v6/constants.js.map +1 -1
  507. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/node_modules/ip-address/package.json +6 -4
  508. package/node_modules/playwright/node_modules/playwright-core/bundles/utils/package-lock.json +6 -6
  509. package/node_modules/playwright/node_modules/playwright-core/lib/cli/program.js +18 -9
  510. package/node_modules/playwright/node_modules/playwright-core/lib/mcpBundleImpl/index.js +47 -47
  511. package/node_modules/playwright/node_modules/playwright-core/lib/server/codegen/skyramp/jsonlReader.js +3 -0
  512. package/node_modules/playwright/node_modules/playwright-core/lib/server/recorder/recorderRunner.js +42 -0
  513. package/node_modules/playwright/node_modules/playwright-core/lib/utilsBundleImpl/index.js +121 -121
  514. package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/{index.B7KbSQcC.js → index.BAkLd5DX.js} +1 -1
  515. package/node_modules/playwright/node_modules/playwright-core/lib/vite/traceViewer/index.html +1 -1
  516. package/node_modules/playwright/node_modules/playwright-core/package.json +1 -1
  517. package/node_modules/playwright/node_modules/playwright-core/src/cli/program.ts +31 -9
  518. package/node_modules/playwright/node_modules/playwright-core/src/server/codegen/skyramp/jsonlReader.ts +1 -0
  519. package/node_modules/playwright/node_modules/playwright-core/src/server/recorder/recorderRunner.ts +57 -1
  520. package/node_modules/playwright/package.json +2 -2
  521. package/package.json +7 -6
  522. package/plugin/prompts/code-reuse/hand-off.md +30 -0
  523. package/plugin/prompts/generate-tests/generation.md +1 -1
  524. package/plugin/prompts/plan-tests.md +14 -14
  525. package/plugin/prompts/testbot-task1.md +4 -2
  526. package/plugin/skills/enhance-assertions/SKILL.md +25 -0
  527. package/plugin/skills/enhance-assertions/reference/contract.md +51 -0
  528. package/plugin/skills/enhance-assertions/reference/integration.md +58 -0
  529. package/plugin/skills/enhance-assertions/reference/shared-rules.md +220 -0
  530. package/plugin/skills/enhance-assertions/reference/ui.md +373 -0
  531. package/plugin/skills/fix-test-import-errors/SKILL.md +44 -50
  532. package/plugin/skills/validate-assertion-alignment-post-execution/SKILL.md +32 -0
  533. package/plugin/skills/validate-assertion-alignment-post-execution/reference/checks.md +44 -0
  534. package/plugin/skills/validate-assertion-alignment-post-execution/reference/evidence.md +47 -0
  535. package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.d.ts +0 -2
  536. package/build/prompts/enhance-assertions/contractProviderAssertionsPrompt.js +0 -29
  537. package/build/prompts/enhance-assertions/integrationAssertionsPrompt.d.ts +0 -2
  538. package/build/prompts/enhance-assertions/integrationAssertionsPrompt.js +0 -36
  539. package/build/prompts/enhance-assertions/sharedAssertionRules.d.ts +0 -16
  540. package/build/prompts/enhance-assertions/sharedAssertionRules.js +0 -284
  541. package/build/prompts/enhance-assertions/uiAssertionsPrompt.d.ts +0 -2
  542. package/build/prompts/enhance-assertions/uiAssertionsPrompt.js +0 -388
  543. 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
- else if (/\//.test(address)) {
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 (e) {
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 < 0n || bigInt > (1n << BigInt(constants6.BITS)) - 1n) {
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 (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) {
189
- result = constants6.RE_URL_WITH_PORT.exec(url);
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 if (url.indexOf('/') !== -1) {
202
- // Remove the protocol prefix
203
- url = url.replace(/^[a-z0-9]+:\/\//, '');
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 > 65536) {
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
- return {
232
- address: new Address6(host),
233
- port,
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." or just "."
344
- let address = arpaFormAddress.replace(/(\.ip6\.arpa)?\.$/, '');
345
- const semicolonAmount = 7;
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 parts = address.split('.').reverse();
351
- for (let i = semicolonAmount; i > 0; i--) {
352
- const insertIndex = i * 4;
353
- parts.splice(insertIndex, 0, ':');
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
- address = parts.join('');
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
- * Often referred to as the Broadcast
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 last host address in the range given by this address's subnet ie
429
- * the last address prior to the Broadcast Address
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.isInSubnet(entry[0])) {
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.address4 = new ipv4_1.Address4(this.parsedAddress4);
642
- for (let i = 0; i < this.address4.groups; i++) {
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
- return ipv4_1.Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16).padStart(8, '0'));
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.address;
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
- v4Bits.slice(0, beforeU) +
880
- '00000000' +
881
- v4Bits.slice(beforeU) +
882
- '0'.repeat(128 - 72 - (32 - beforeU));
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.isInSubnet(prefix6)) {
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 valueWithoutPadding = this.bigInt().toString(16);
931
- const leadingPad = '0'.repeat(valueWithoutPadding.length % 2);
932
- const value = `${leadingPad}${valueWithoutPadding}`;
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 local address, false otherwise
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
- // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10'
986
- if (this.getBitsBase2(0, 64) ===
987
- '1111111010000000000000000000000000000000000000000000000000000000') {
988
- return true;
1066
+ const embedded = this.embeddedIPv4();
1067
+ if (embedded) {
1068
+ return embedded.isLinkLocal();
989
1069
  }
990
- return false;
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.isInSubnet(IPV4_MAPPED_SUBNET);
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.isInSubnet(TEREDO_SUBNET);
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.isInSubnet(SIX_TO_FOUR_SUBNET);
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.isInSubnet(ULA_SUBNET);
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.isInSubnet(DOCUMENTATION_SUBNET);
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 DOCUMENTATION_SUBNET = new Address6('2001:db8::/32');
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