@jitsusama/agentic-harness.core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -0
- package/dist/advisor/charter.d.ts +14 -0
- package/dist/advisor/charter.js +48 -0
- package/dist/advisor/findings.d.ts +43 -0
- package/dist/advisor/findings.js +82 -0
- package/dist/advisor/index.d.ts +24 -0
- package/dist/advisor/index.js +23 -0
- package/dist/advisor/settings.d.ts +16 -0
- package/dist/advisor/settings.js +30 -0
- package/dist/advisor/substantive.d.ts +14 -0
- package/dist/advisor/substantive.js +33 -0
- package/dist/advisor/tools.d.ts +38 -0
- package/dist/advisor/tools.js +202 -0
- package/dist/attribution/commit-hook.d.ts +53 -0
- package/dist/attribution/commit-hook.js +133 -0
- package/dist/attribution/gh-footer.d.ts +27 -0
- package/dist/attribution/gh-footer.js +80 -0
- package/dist/attribution/index.d.ts +11 -0
- package/dist/attribution/index.js +11 -0
- package/dist/attribution/model-name.d.ts +11 -0
- package/dist/attribution/model-name.js +26 -0
- package/dist/bin/attribution.d.ts +36 -0
- package/dist/bin/attribution.js +82 -0
- package/dist/bin/cli.d.ts +14 -0
- package/dist/bin/cli.js +236 -0
- package/dist/bin/gate-deps.d.ts +23 -0
- package/dist/bin/gate-deps.js +61 -0
- package/dist/bin/guardians.d.ts +51 -0
- package/dist/bin/guardians.js +174 -0
- package/dist/bin/memory.d.ts +16 -0
- package/dist/bin/memory.js +81 -0
- package/dist/bin/notes.d.ts +30 -0
- package/dist/bin/notes.js +67 -0
- package/dist/bin/process-exec.d.ts +14 -0
- package/dist/bin/process-exec.js +31 -0
- package/dist/bin/quest.d.ts +38 -0
- package/dist/bin/quest.js +187 -0
- package/dist/bin/slack-auth.d.ts +49 -0
- package/dist/bin/slack-auth.js +107 -0
- package/dist/clock/index.d.ts +46 -0
- package/dist/clock/index.js +72 -0
- package/dist/command/cwd.d.ts +21 -0
- package/dist/command/cwd.js +60 -0
- package/dist/command/edit.d.ts +14 -0
- package/dist/command/edit.js +22 -0
- package/dist/command/flags.d.ts +29 -0
- package/dist/command/flags.js +111 -0
- package/dist/command/index.d.ts +16 -0
- package/dist/command/index.js +12 -0
- package/dist/command/tokenize.d.ts +7 -0
- package/dist/command/tokenize.js +315 -0
- package/dist/command/types.d.ts +66 -0
- package/dist/command/types.js +9 -0
- package/dist/completion/index.d.ts +17 -0
- package/dist/completion/index.js +16 -0
- package/dist/completion/investigate.d.ts +63 -0
- package/dist/completion/investigate.js +198 -0
- package/dist/completion/resolve.d.ts +29 -0
- package/dist/completion/resolve.js +42 -0
- package/dist/completion/side.d.ts +51 -0
- package/dist/completion/side.js +93 -0
- package/dist/completion/types.d.ts +84 -0
- package/dist/completion/types.js +14 -0
- package/dist/exec/exec.d.ts +38 -0
- package/dist/exec/exec.js +51 -0
- package/dist/exec/index.d.ts +8 -0
- package/dist/exec/index.js +8 -0
- package/dist/gate/decision.d.ts +52 -0
- package/dist/gate/decision.js +68 -0
- package/dist/gate/deps.d.ts +14 -0
- package/dist/gate/deps.js +1 -0
- package/dist/gate/index.d.ts +2 -0
- package/dist/gate/index.js +1 -0
- package/dist/git-cli/index.d.ts +47 -0
- package/dist/git-cli/index.js +127 -0
- package/dist/github-cli/command-spec.d.ts +14 -0
- package/dist/github-cli/command-spec.js +18 -0
- package/dist/github-cli/index.d.ts +71 -0
- package/dist/github-cli/index.js +188 -0
- package/dist/google/apis/calendar.d.ts +64 -0
- package/dist/google/apis/calendar.js +297 -0
- package/dist/google/apis/docs.d.ts +29 -0
- package/dist/google/apis/docs.js +154 -0
- package/dist/google/apis/drive.d.ts +46 -0
- package/dist/google/apis/drive.js +189 -0
- package/dist/google/apis/gmail.d.ts +67 -0
- package/dist/google/apis/gmail.js +374 -0
- package/dist/google/apis/index.d.ts +10 -0
- package/dist/google/apis/index.js +10 -0
- package/dist/google/apis/sheets.d.ts +16 -0
- package/dist/google/apis/sheets.js +54 -0
- package/dist/google/apis/slides.d.ts +16 -0
- package/dist/google/apis/slides.js +40 -0
- package/dist/google/auth/browser.d.ts +5 -0
- package/dist/google/auth/browser.js +27 -0
- package/dist/google/auth/credentials.d.ts +26 -0
- package/dist/google/auth/credentials.js +69 -0
- package/dist/google/auth/errors.d.ts +15 -0
- package/dist/google/auth/errors.js +26 -0
- package/dist/google/auth/index.d.ts +12 -0
- package/dist/google/auth/index.js +12 -0
- package/dist/google/auth/oauth-app.d.ts +15 -0
- package/dist/google/auth/oauth-app.js +20 -0
- package/dist/google/auth/oauth.d.ts +46 -0
- package/dist/google/auth/oauth.js +146 -0
- package/dist/google/auth/server.d.ts +13 -0
- package/dist/google/auth/server.js +70 -0
- package/dist/google/auth/setup-instructions.d.ts +16 -0
- package/dist/google/auth/setup-instructions.js +24 -0
- package/dist/google/auth/store.d.ts +19 -0
- package/dist/google/auth/store.js +27 -0
- package/dist/google/index.d.ts +13 -0
- package/dist/google/index.js +12 -0
- package/dist/google/paths.d.ts +17 -0
- package/dist/google/paths.js +28 -0
- package/dist/google/renderers/calendar.d.ts +23 -0
- package/dist/google/renderers/calendar.js +312 -0
- package/dist/google/renderers/drive.d.ts +31 -0
- package/dist/google/renderers/drive.js +214 -0
- package/dist/google/renderers/email.d.ts +16 -0
- package/dist/google/renderers/email.js +130 -0
- package/dist/google/renderers/index.d.ts +8 -0
- package/dist/google/renderers/index.js +8 -0
- package/dist/google/types.d.ts +143 -0
- package/dist/google/types.js +27 -0
- package/dist/governance/distill.d.ts +31 -0
- package/dist/governance/distill.js +78 -0
- package/dist/governance/index.d.ts +11 -0
- package/dist/governance/index.js +10 -0
- package/dist/governance/render.d.ts +13 -0
- package/dist/governance/render.js +23 -0
- package/dist/governance/store.d.ts +32 -0
- package/dist/governance/store.js +102 -0
- package/dist/governance/types.d.ts +19 -0
- package/dist/governance/types.js +9 -0
- package/dist/guardian/index.d.ts +7 -0
- package/dist/guardian/index.js +7 -0
- package/dist/guardian/types.d.ts +37 -0
- package/dist/guardian/types.js +12 -0
- package/dist/internal/github/cli.d.ts +40 -0
- package/dist/internal/github/cli.js +102 -0
- package/dist/internal/guardian/commit-file.d.ts +7 -0
- package/dist/internal/guardian/commit-file.js +36 -0
- package/dist/internal/guardian/commit-format.d.ts +35 -0
- package/dist/internal/guardian/commit-format.js +63 -0
- package/dist/internal/guardian/commit-shell.d.ts +38 -0
- package/dist/internal/guardian/commit-shell.js +134 -0
- package/dist/internal/guardian/history-gate.d.ts +41 -0
- package/dist/internal/guardian/history-gate.js +76 -0
- package/dist/internal/guardian/prose-gate.d.ts +31 -0
- package/dist/internal/guardian/prose-gate.js +50 -0
- package/dist/internal/guardian/redirect-gate.d.ts +41 -0
- package/dist/internal/guardian/redirect-gate.js +114 -0
- package/dist/internal/guardian/section-gate.d.ts +20 -0
- package/dist/internal/guardian/section-gate.js +36 -0
- package/dist/internal/guardian/title-gate.d.ts +20 -0
- package/dist/internal/guardian/title-gate.js +36 -0
- package/dist/internal/json-array.d.ts +11 -0
- package/dist/internal/json-array.js +40 -0
- package/dist/internal/lsp/registry.d.ts +12 -0
- package/dist/internal/lsp/registry.js +16 -0
- package/dist/internal/notes/discovery.d.ts +59 -0
- package/dist/internal/notes/discovery.js +91 -0
- package/dist/internal/notes/frontmatter.d.ts +52 -0
- package/dist/internal/notes/frontmatter.js +163 -0
- package/dist/internal/notes/id.d.ts +42 -0
- package/dist/internal/notes/id.js +80 -0
- package/dist/internal/notes/io.d.ts +25 -0
- package/dist/internal/notes/io.js +51 -0
- package/dist/internal/notes/sanitize.d.ts +19 -0
- package/dist/internal/notes/sanitize.js +35 -0
- package/dist/internal/process-global.d.ts +20 -0
- package/dist/internal/process-global.js +28 -0
- package/dist/internal/quest/alias-index.d.ts +61 -0
- package/dist/internal/quest/alias-index.js +69 -0
- package/dist/internal/quest/append-journey.d.ts +22 -0
- package/dist/internal/quest/append-journey.js +63 -0
- package/dist/internal/quest/bash-write.d.ts +49 -0
- package/dist/internal/quest/bash-write.js +208 -0
- package/dist/internal/quest/dates.d.ts +14 -0
- package/dist/internal/quest/dates.js +20 -0
- package/dist/internal/quest/discovery.d.ts +96 -0
- package/dist/internal/quest/discovery.js +354 -0
- package/dist/internal/quest/fields.d.ts +37 -0
- package/dist/internal/quest/fields.js +94 -0
- package/dist/internal/quest/frontmatter.d.ts +88 -0
- package/dist/internal/quest/frontmatter.js +630 -0
- package/dist/internal/quest/git-signals.d.ts +53 -0
- package/dist/internal/quest/git-signals.js +192 -0
- package/dist/internal/quest/id.d.ts +50 -0
- package/dist/internal/quest/id.js +116 -0
- package/dist/internal/quest/io.d.ts +54 -0
- package/dist/internal/quest/io.js +233 -0
- package/dist/internal/quest/mentions.d.ts +45 -0
- package/dist/internal/quest/mentions.js +70 -0
- package/dist/internal/quest/mutate.d.ts +38 -0
- package/dist/internal/quest/mutate.js +83 -0
- package/dist/internal/quest/process-liveness.d.ts +98 -0
- package/dist/internal/quest/process-liveness.js +216 -0
- package/dist/internal/quest/quest-doc.d.ts +116 -0
- package/dist/internal/quest/quest-doc.js +239 -0
- package/dist/internal/quest/ranking.d.ts +48 -0
- package/dist/internal/quest/ranking.js +114 -0
- package/dist/internal/quest/reopen.d.ts +65 -0
- package/dist/internal/quest/reopen.js +113 -0
- package/dist/internal/quest/resolve-cwd.d.ts +32 -0
- package/dist/internal/quest/resolve-cwd.js +89 -0
- package/dist/internal/quest/sanitize.d.ts +42 -0
- package/dist/internal/quest/sanitize.js +69 -0
- package/dist/internal/quest/scaffold.d.ts +59 -0
- package/dist/internal/quest/scaffold.js +169 -0
- package/dist/internal/quest/scratch.d.ts +27 -0
- package/dist/internal/quest/scratch.js +106 -0
- package/dist/internal/quest/session-liveness.d.ts +125 -0
- package/dist/internal/quest/session-liveness.js +386 -0
- package/dist/internal/quest/session-ownership.d.ts +22 -0
- package/dist/internal/quest/session-ownership.js +100 -0
- package/dist/internal/quest/session-registry.d.ts +221 -0
- package/dist/internal/quest/session-registry.js +266 -0
- package/dist/internal/quest/status.d.ts +10 -0
- package/dist/internal/quest/status.js +15 -0
- package/dist/internal/quest/structural-journal.d.ts +41 -0
- package/dist/internal/quest/structural-journal.js +67 -0
- package/dist/internal/quest/structural.d.ts +43 -0
- package/dist/internal/quest/structural.js +77 -0
- package/dist/internal/quest/toc.d.ts +28 -0
- package/dist/internal/quest/toc.js +90 -0
- package/dist/internal/quest/trees.d.ts +53 -0
- package/dist/internal/quest/trees.js +145 -0
- package/dist/internal/quest/url-fetchers.d.ts +50 -0
- package/dist/internal/quest/url-fetchers.js +97 -0
- package/dist/internal/quest/write-classifier.d.ts +46 -0
- package/dist/internal/quest/write-classifier.js +59 -0
- package/dist/internal/refs/builtins.d.ts +32 -0
- package/dist/internal/refs/builtins.js +179 -0
- package/dist/internal/refs/registry.d.ts +25 -0
- package/dist/internal/refs/registry.js +42 -0
- package/dist/internal/registry/global-symbol-registry.d.ts +37 -0
- package/dist/internal/registry/global-symbol-registry.js +55 -0
- package/dist/internal/review/registry.d.ts +12 -0
- package/dist/internal/review/registry.js +16 -0
- package/dist/internal/sqlite/db.d.ts +16 -0
- package/dist/internal/sqlite/db.js +26 -0
- package/dist/internal/terminal/builtins.d.ts +8 -0
- package/dist/internal/terminal/builtins.js +14 -0
- package/dist/internal/terminal/drivers/fallback.d.ts +8 -0
- package/dist/internal/terminal/drivers/fallback.js +31 -0
- package/dist/internal/terminal/drivers/shared.d.ts +39 -0
- package/dist/internal/terminal/drivers/shared.js +51 -0
- package/dist/internal/terminal/drivers/tmux.d.ts +14 -0
- package/dist/internal/terminal/drivers/tmux.js +88 -0
- package/dist/internal/terminal/drivers/wezterm.d.ts +35 -0
- package/dist/internal/terminal/drivers/wezterm.js +175 -0
- package/dist/internal/terminal/registry.d.ts +12 -0
- package/dist/internal/terminal/registry.js +16 -0
- package/dist/internal/tree/builtins.d.ts +8 -0
- package/dist/internal/tree/builtins.js +10 -0
- package/dist/internal/tree/providers/git-worktree.d.ts +20 -0
- package/dist/internal/tree/providers/git-worktree.js +279 -0
- package/dist/internal/tree/registry.d.ts +12 -0
- package/dist/internal/tree/registry.js +16 -0
- package/dist/lsp/config.d.ts +77 -0
- package/dist/lsp/config.js +154 -0
- package/dist/lsp/external.d.ts +13 -0
- package/dist/lsp/external.js +52 -0
- package/dist/lsp/format.d.ts +11 -0
- package/dist/lsp/format.js +54 -0
- package/dist/lsp/index.d.ts +17 -0
- package/dist/lsp/index.js +16 -0
- package/dist/lsp/offsets.d.ts +22 -0
- package/dist/lsp/offsets.js +51 -0
- package/dist/lsp/registry.d.ts +28 -0
- package/dist/lsp/registry.js +45 -0
- package/dist/lsp/standalone/backend.d.ts +42 -0
- package/dist/lsp/standalone/backend.js +150 -0
- package/dist/lsp/standalone/document.d.ts +45 -0
- package/dist/lsp/standalone/document.js +81 -0
- package/dist/lsp/standalone/server.d.ts +84 -0
- package/dist/lsp/standalone/server.js +521 -0
- package/dist/lsp/types.d.ts +119 -0
- package/dist/lsp/types.js +13 -0
- package/dist/memory/db.d.ts +15 -0
- package/dist/memory/db.js +25 -0
- package/dist/memory/index.d.ts +12 -0
- package/dist/memory/index.js +11 -0
- package/dist/memory/paths.d.ts +19 -0
- package/dist/memory/paths.js +33 -0
- package/dist/memory/scope.d.ts +14 -0
- package/dist/memory/scope.js +22 -0
- package/dist/memory/store.d.ts +12 -0
- package/dist/memory/store.js +146 -0
- package/dist/memory/types.d.ts +80 -0
- package/dist/memory/types.js +6 -0
- package/dist/notes/types.d.ts +50 -0
- package/dist/notes/types.js +23 -0
- package/dist/notes/verbs/create.d.ts +5 -0
- package/dist/notes/verbs/create.js +55 -0
- package/dist/notes/verbs/mutate.d.ts +8 -0
- package/dist/notes/verbs/mutate.js +152 -0
- package/dist/notes/verbs/queries.d.ts +15 -0
- package/dist/notes/verbs/queries.js +116 -0
- package/dist/notes/verbs/reindex.d.ts +12 -0
- package/dist/notes/verbs/reindex.js +35 -0
- package/dist/notes/verbs/shared.d.ts +37 -0
- package/dist/notes/verbs/shared.js +29 -0
- package/dist/observability/index.d.ts +13 -0
- package/dist/observability/index.js +12 -0
- package/dist/observability/recorder.d.ts +50 -0
- package/dist/observability/recorder.js +77 -0
- package/dist/observability/store.d.ts +22 -0
- package/dist/observability/store.js +213 -0
- package/dist/observability/types.d.ts +82 -0
- package/dist/observability/types.js +1 -0
- package/dist/process/index.d.ts +9 -0
- package/dist/process/index.js +9 -0
- package/dist/process/process.d.ts +95 -0
- package/dist/process/process.js +153 -0
- package/dist/prose/block.d.ts +9 -0
- package/dist/prose/block.js +43 -0
- package/dist/prose/detect.d.ts +50 -0
- package/dist/prose/detect.js +217 -0
- package/dist/prose/gate.d.ts +14 -0
- package/dist/prose/gate.js +21 -0
- package/dist/prose/index.d.ts +4 -0
- package/dist/prose/index.js +4 -0
- package/dist/prose/wrap.d.ts +9 -0
- package/dist/prose/wrap.js +47 -0
- package/dist/quest/actions.d.ts +20 -0
- package/dist/quest/actions.js +107 -0
- package/dist/quest/config.d.ts +79 -0
- package/dist/quest/config.js +83 -0
- package/dist/quest/index.d.ts +29 -0
- package/dist/quest/index.js +28 -0
- package/dist/quest/lifecycle.d.ts +365 -0
- package/dist/quest/lifecycle.js +900 -0
- package/dist/quest/lookup.d.ts +243 -0
- package/dist/quest/lookup.js +496 -0
- package/dist/quest/machine.d.ts +48 -0
- package/dist/quest/machine.js +96 -0
- package/dist/quest/render-rows.d.ts +166 -0
- package/dist/quest/render-rows.js +214 -0
- package/dist/quest/state.d.ts +111 -0
- package/dist/quest/state.js +46 -0
- package/dist/quest/types.d.ts +224 -0
- package/dist/quest/types.js +10 -0
- package/dist/quest/verbs/alias.d.ts +9 -0
- package/dist/quest/verbs/alias.js +129 -0
- package/dist/quest/verbs/lifecycle.d.ts +36 -0
- package/dist/quest/verbs/lifecycle.js +407 -0
- package/dist/quest/verbs/queries.d.ts +24 -0
- package/dist/quest/verbs/queries.js +241 -0
- package/dist/quest/verbs/reorder.d.ts +15 -0
- package/dist/quest/verbs/reorder.js +85 -0
- package/dist/quest/verbs/shared.d.ts +63 -0
- package/dist/quest/verbs/shared.js +35 -0
- package/dist/quest/verbs/stage.d.ts +39 -0
- package/dist/quest/verbs/stage.js +506 -0
- package/dist/quest/verbs/structural.d.ts +23 -0
- package/dist/quest/verbs/structural.js +310 -0
- package/dist/quest/verbs/tree-ops.d.ts +20 -0
- package/dist/quest/verbs/tree-ops.js +289 -0
- package/dist/refs/index.d.ts +13 -0
- package/dist/refs/index.js +12 -0
- package/dist/refs/lookup.d.ts +53 -0
- package/dist/refs/lookup.js +102 -0
- package/dist/refs/register.d.ts +34 -0
- package/dist/refs/register.js +44 -0
- package/dist/refs/types.d.ts +81 -0
- package/dist/refs/types.js +17 -0
- package/dist/remote/index.d.ts +9 -0
- package/dist/remote/index.js +9 -0
- package/dist/remote/name.d.ts +22 -0
- package/dist/remote/name.js +30 -0
- package/dist/result/cite.d.ts +84 -0
- package/dist/result/cite.js +127 -0
- package/dist/result/counts.d.ts +15 -0
- package/dist/result/counts.js +17 -0
- package/dist/result/details.d.ts +61 -0
- package/dist/result/details.js +121 -0
- package/dist/result/digest.d.ts +37 -0
- package/dist/result/digest.js +227 -0
- package/dist/result/follow.d.ts +29 -0
- package/dist/result/follow.js +37 -0
- package/dist/result/index.d.ts +26 -0
- package/dist/result/index.js +26 -0
- package/dist/result/listing.d.ts +62 -0
- package/dist/result/listing.js +72 -0
- package/dist/result/location.d.ts +67 -0
- package/dist/result/location.js +125 -0
- package/dist/result/query.d.ts +67 -0
- package/dist/result/query.js +144 -0
- package/dist/result/spill.d.ts +41 -0
- package/dist/result/spill.js +121 -0
- package/dist/result/store.d.ts +83 -0
- package/dist/result/store.js +214 -0
- package/dist/result/view.d.ts +31 -0
- package/dist/result/view.js +38 -0
- package/dist/review/anchor.d.ts +84 -0
- package/dist/review/anchor.js +89 -0
- package/dist/review/ask/agents.d.ts +80 -0
- package/dist/review/ask/agents.js +296 -0
- package/dist/review/ask/anchorable.d.ts +35 -0
- package/dist/review/ask/anchorable.js +76 -0
- package/dist/review/ask/answer.d.ts +54 -0
- package/dist/review/ask/answer.js +209 -0
- package/dist/review/ask/audit.d.ts +71 -0
- package/dist/review/ask/audit.js +158 -0
- package/dist/review/ask/collect.d.ts +41 -0
- package/dist/review/ask/collect.js +82 -0
- package/dist/review/ask/council.d.ts +290 -0
- package/dist/review/ask/council.js +386 -0
- package/dist/review/ask/critique.d.ts +69 -0
- package/dist/review/ask/critique.js +157 -0
- package/dist/review/ask/harvest.d.ts +119 -0
- package/dist/review/ask/harvest.js +409 -0
- package/dist/review/ask/identity.d.ts +93 -0
- package/dist/review/ask/identity.js +134 -0
- package/dist/review/ask/judge.d.ts +37 -0
- package/dist/review/ask/judge.js +140 -0
- package/dist/review/ask/persona.d.ts +84 -0
- package/dist/review/ask/persona.js +127 -0
- package/dist/review/ask/progress.d.ts +117 -0
- package/dist/review/ask/progress.js +137 -0
- package/dist/review/ask/prompt.d.ts +131 -0
- package/dist/review/ask/prompt.js +242 -0
- package/dist/review/ask/roster.d.ts +94 -0
- package/dist/review/ask/roster.js +338 -0
- package/dist/review/ask/run.d.ts +435 -0
- package/dist/review/ask/run.js +340 -0
- package/dist/review/ask/span.d.ts +70 -0
- package/dist/review/ask/span.js +166 -0
- package/dist/review/ask/stack-round.d.ts +66 -0
- package/dist/review/ask/stack-round.js +125 -0
- package/dist/review/ask/start.d.ts +48 -0
- package/dist/review/ask/start.js +118 -0
- package/dist/review/ask/store.d.ts +83 -0
- package/dist/review/ask/store.js +226 -0
- package/dist/review/ask/wire.d.ts +89 -0
- package/dist/review/ask/wire.js +204 -0
- package/dist/review/attach.d.ts +161 -0
- package/dist/review/attach.js +357 -0
- package/dist/review/authoring.d.ts +84 -0
- package/dist/review/authoring.js +203 -0
- package/dist/review/backed.d.ts +90 -0
- package/dist/review/backed.js +168 -0
- package/dist/review/bind.d.ts +75 -0
- package/dist/review/bind.js +223 -0
- package/dist/review/budget.d.ts +133 -0
- package/dist/review/budget.js +278 -0
- package/dist/review/capabilities.d.ts +217 -0
- package/dist/review/capabilities.js +46 -0
- package/dist/review/change.d.ts +155 -0
- package/dist/review/change.js +15 -0
- package/dist/review/checks.d.ts +56 -0
- package/dist/review/checks.js +11 -0
- package/dist/review/config.d.ts +71 -0
- package/dist/review/config.js +125 -0
- package/dist/review/conventions.d.ts +35 -0
- package/dist/review/conventions.js +58 -0
- package/dist/review/conversation.d.ts +98 -0
- package/dist/review/conversation.js +16 -0
- package/dist/review/decided.d.ts +58 -0
- package/dist/review/decided.js +67 -0
- package/dist/review/diff.d.ts +116 -0
- package/dist/review/diff.js +237 -0
- package/dist/review/draft/continuation.d.ts +23 -0
- package/dist/review/draft/continuation.js +32 -0
- package/dist/review/draft/fanout.d.ts +57 -0
- package/dist/review/draft/fanout.js +46 -0
- package/dist/review/draft/handle.d.ts +55 -0
- package/dist/review/draft/handle.js +110 -0
- package/dist/review/draft/plan.d.ts +112 -0
- package/dist/review/draft/plan.js +343 -0
- package/dist/review/draft/publish.d.ts +38 -0
- package/dist/review/draft/publish.js +118 -0
- package/dist/review/draft/render.d.ts +32 -0
- package/dist/review/draft/render.js +100 -0
- package/dist/review/draft/state.d.ts +98 -0
- package/dist/review/draft/state.js +83 -0
- package/dist/review/draft/store.d.ts +33 -0
- package/dist/review/draft/store.js +100 -0
- package/dist/review/elsewhere.d.ts +27 -0
- package/dist/review/elsewhere.js +39 -0
- package/dist/review/engine.d.ts +106 -0
- package/dist/review/engine.js +243 -0
- package/dist/review/events.d.ts +59 -0
- package/dist/review/events.js +35 -0
- package/dist/review/failed.d.ts +46 -0
- package/dist/review/failed.js +56 -0
- package/dist/review/finding.d.ts +81 -0
- package/dist/review/finding.js +85 -0
- package/dist/review/fix.d.ts +147 -0
- package/dist/review/fix.js +175 -0
- package/dist/review/followup.d.ts +84 -0
- package/dist/review/followup.js +123 -0
- package/dist/review/index.d.ts +134 -0
- package/dist/review/index.js +80 -0
- package/dist/review/keys.d.ts +23 -0
- package/dist/review/keys.js +40 -0
- package/dist/review/landing.d.ts +37 -0
- package/dist/review/landing.js +68 -0
- package/dist/review/lenses.d.ts +132 -0
- package/dist/review/lenses.js +430 -0
- package/dist/review/propose-from.d.ts +76 -0
- package/dist/review/propose-from.js +86 -0
- package/dist/review/provider.d.ts +306 -0
- package/dist/review/provider.js +16 -0
- package/dist/review/providers/git/index.d.ts +23 -0
- package/dist/review/providers/git/index.js +214 -0
- package/dist/review/providers/github/authoring.d.ts +22 -0
- package/dist/review/providers/github/authoring.js +350 -0
- package/dist/review/providers/github/claims.d.ts +49 -0
- package/dist/review/providers/github/claims.js +136 -0
- package/dist/review/providers/github/conversation.d.ts +18 -0
- package/dist/review/providers/github/conversation.js +455 -0
- package/dist/review/providers/github/fields.d.ts +30 -0
- package/dist/review/providers/github/fields.js +47 -0
- package/dist/review/providers/github/index.d.ts +15 -0
- package/dist/review/providers/github/index.js +110 -0
- package/dist/review/providers/github/proposals.d.ts +14 -0
- package/dist/review/providers/github/proposals.js +298 -0
- package/dist/review/providers/github/queue.d.ts +46 -0
- package/dist/review/providers/github/queue.js +122 -0
- package/dist/review/providers/github/stacking.d.ts +20 -0
- package/dist/review/providers/github/stacking.js +107 -0
- package/dist/review/queue.d.ts +43 -0
- package/dist/review/queue.js +56 -0
- package/dist/review/reactable.d.ts +93 -0
- package/dist/review/reactable.js +140 -0
- package/dist/review/register.d.ts +52 -0
- package/dist/review/register.js +53 -0
- package/dist/review/resolve.d.ts +58 -0
- package/dist/review/resolve.js +150 -0
- package/dist/review/retarget.d.ts +73 -0
- package/dist/review/retarget.js +82 -0
- package/dist/review/revisited.d.ts +77 -0
- package/dist/review/revisited.js +121 -0
- package/dist/review/stack.d.ts +110 -0
- package/dist/review/stack.js +52 -0
- package/dist/sections/block.d.ts +9 -0
- package/dist/sections/block.js +42 -0
- package/dist/sections/detect.d.ts +31 -0
- package/dist/sections/detect.js +67 -0
- package/dist/sections/gate.d.ts +21 -0
- package/dist/sections/gate.js +22 -0
- package/dist/sections/index.d.ts +5 -0
- package/dist/sections/index.js +5 -0
- package/dist/sections/sanctioned.d.ts +13 -0
- package/dist/sections/sanctioned.js +21 -0
- package/dist/shell/index.d.ts +8 -0
- package/dist/shell/index.js +8 -0
- package/dist/shell/parse.d.ts +125 -0
- package/dist/shell/parse.js +298 -0
- package/dist/slack/api/channels.d.ts +12 -0
- package/dist/slack/api/channels.js +28 -0
- package/dist/slack/api/client.d.ts +94 -0
- package/dist/slack/api/client.js +272 -0
- package/dist/slack/api/files.d.ts +95 -0
- package/dist/slack/api/files.js +223 -0
- package/dist/slack/api/index.d.ts +11 -0
- package/dist/slack/api/index.js +11 -0
- package/dist/slack/api/messages.d.ts +98 -0
- package/dist/slack/api/messages.js +292 -0
- package/dist/slack/api/reactions.d.ts +47 -0
- package/dist/slack/api/reactions.js +50 -0
- package/dist/slack/api/resolve-conversations.d.ts +43 -0
- package/dist/slack/api/resolve-conversations.js +130 -0
- package/dist/slack/api/resolve-messages.d.ts +29 -0
- package/dist/slack/api/resolve-messages.js +93 -0
- package/dist/slack/api/resolve-users.d.ts +27 -0
- package/dist/slack/api/resolve-users.js +73 -0
- package/dist/slack/api/search.d.ts +86 -0
- package/dist/slack/api/search.js +186 -0
- package/dist/slack/api/users.d.ts +12 -0
- package/dist/slack/api/users.js +33 -0
- package/dist/slack/auth/browser-extract.d.ts +33 -0
- package/dist/slack/auth/browser-extract.js +201 -0
- package/dist/slack/auth/browser.d.ts +5 -0
- package/dist/slack/auth/browser.js +25 -0
- package/dist/slack/auth/credentials.d.ts +14 -0
- package/dist/slack/auth/credentials.js +24 -0
- package/dist/slack/auth/errors.d.ts +9 -0
- package/dist/slack/auth/errors.js +19 -0
- package/dist/slack/auth/extract.d.ts +23 -0
- package/dist/slack/auth/extract.js +44 -0
- package/dist/slack/auth/index.d.ts +12 -0
- package/dist/slack/auth/index.js +11 -0
- package/dist/slack/auth/oauth-app.d.ts +11 -0
- package/dist/slack/auth/oauth-app.js +20 -0
- package/dist/slack/auth/oauth.d.ts +31 -0
- package/dist/slack/auth/oauth.js +82 -0
- package/dist/slack/auth/server.d.ts +14 -0
- package/dist/slack/auth/server.js +75 -0
- package/dist/slack/auth/store.d.ts +17 -0
- package/dist/slack/auth/store.js +27 -0
- package/dist/slack/block-message.d.ts +9 -0
- package/dist/slack/block-message.js +30 -0
- package/dist/slack/blocks.d.ts +94 -0
- package/dist/slack/blocks.js +765 -0
- package/dist/slack/content-gate.d.ts +12 -0
- package/dist/slack/content-gate.js +22 -0
- package/dist/slack/detect.d.ts +31 -0
- package/dist/slack/detect.js +125 -0
- package/dist/slack/index.d.ts +18 -0
- package/dist/slack/index.js +17 -0
- package/dist/slack/paths.d.ts +28 -0
- package/dist/slack/paths.js +46 -0
- package/dist/slack/renderers/channel.d.ts +6 -0
- package/dist/slack/renderers/channel.js +27 -0
- package/dist/slack/renderers/index.d.ts +9 -0
- package/dist/slack/renderers/index.js +9 -0
- package/dist/slack/renderers/message.d.ts +21 -0
- package/dist/slack/renderers/message.js +214 -0
- package/dist/slack/renderers/reactions.d.ts +8 -0
- package/dist/slack/renderers/reactions.js +43 -0
- package/dist/slack/renderers/search.d.ts +6 -0
- package/dist/slack/renderers/search.js +39 -0
- package/dist/slack/renderers/user.d.ts +6 -0
- package/dist/slack/renderers/user.js +32 -0
- package/dist/slack/resolvers/cache.d.ts +29 -0
- package/dist/slack/resolvers/cache.js +70 -0
- package/dist/slack/resolvers/conversation-cache.d.ts +42 -0
- package/dist/slack/resolvers/conversation-cache.js +128 -0
- package/dist/slack/resolvers/conversation.d.ts +44 -0
- package/dist/slack/resolvers/conversation.js +229 -0
- package/dist/slack/resolvers/index.d.ts +8 -0
- package/dist/slack/resolvers/index.js +8 -0
- package/dist/slack/resolvers/target.d.ts +19 -0
- package/dist/slack/resolvers/target.js +45 -0
- package/dist/slack/resolvers/url.d.ts +20 -0
- package/dist/slack/resolvers/url.js +22 -0
- package/dist/slack/resolvers/user.d.ts +54 -0
- package/dist/slack/resolvers/user.js +134 -0
- package/dist/slack/types.d.ts +180 -0
- package/dist/slack/types.js +13 -0
- package/dist/tdd/attest.d.ts +21 -0
- package/dist/tdd/attest.js +21 -0
- package/dist/tdd/discipline.d.ts +11 -0
- package/dist/tdd/discipline.js +28 -0
- package/dist/tdd/index.d.ts +14 -0
- package/dist/tdd/index.js +13 -0
- package/dist/tdd/machine.d.ts +48 -0
- package/dist/tdd/machine.js +139 -0
- package/dist/tdd/presentation.d.ts +34 -0
- package/dist/tdd/presentation.js +38 -0
- package/dist/tdd/queries.d.ts +10 -0
- package/dist/tdd/queries.js +22 -0
- package/dist/terminal/index.d.ts +12 -0
- package/dist/terminal/index.js +11 -0
- package/dist/terminal/register.d.ts +21 -0
- package/dist/terminal/register.js +31 -0
- package/dist/terminal/resolve.d.ts +63 -0
- package/dist/terminal/resolve.js +117 -0
- package/dist/terminal/types.d.ts +134 -0
- package/dist/terminal/types.js +19 -0
- package/dist/thinking/index.d.ts +20 -0
- package/dist/thinking/index.js +27 -0
- package/dist/title/block.d.ts +9 -0
- package/dist/title/block.js +32 -0
- package/dist/title/detect.d.ts +25 -0
- package/dist/title/detect.js +154 -0
- package/dist/title/gate.d.ts +19 -0
- package/dist/title/gate.js +21 -0
- package/dist/title/index.d.ts +3 -0
- package/dist/title/index.js +3 -0
- package/dist/tree/index.d.ts +18 -0
- package/dist/tree/index.js +17 -0
- package/dist/tree/register.d.ts +21 -0
- package/dist/tree/register.js +31 -0
- package/dist/tree/resolve.d.ts +20 -0
- package/dist/tree/resolve.js +31 -0
- package/dist/tree/types.d.ts +83 -0
- package/dist/tree/types.js +12 -0
- package/dist/ui/count.d.ts +29 -0
- package/dist/ui/count.js +35 -0
- package/dist/ui/path.d.ts +25 -0
- package/dist/ui/path.js +40 -0
- package/dist/verify/index.d.ts +17 -0
- package/dist/verify/index.js +14 -0
- package/dist/verify/project.d.ts +21 -0
- package/dist/verify/project.js +49 -0
- package/dist/verify/resolve.d.ts +26 -0
- package/dist/verify/resolve.js +27 -0
- package/dist/verify/run.d.ts +31 -0
- package/dist/verify/run.js +145 -0
- package/dist/web/a11y/announcements.d.ts +67 -0
- package/dist/web/a11y/announcements.js +116 -0
- package/dist/web/a11y/budget.d.ts +75 -0
- package/dist/web/a11y/budget.js +97 -0
- package/dist/web/a11y/focus.d.ts +37 -0
- package/dist/web/a11y/focus.js +106 -0
- package/dist/web/a11y/index.d.ts +19 -0
- package/dist/web/a11y/index.js +25 -0
- package/dist/web/a11y/naming.d.ts +23 -0
- package/dist/web/a11y/naming.js +55 -0
- package/dist/web/a11y/outline.d.ts +23 -0
- package/dist/web/a11y/outline.js +42 -0
- package/dist/web/a11y/reading.d.ts +12 -0
- package/dist/web/a11y/reading.js +101 -0
- package/dist/web/a11y/scope.d.ts +23 -0
- package/dist/web/a11y/scope.js +99 -0
- package/dist/web/a11y/states.d.ts +22 -0
- package/dist/web/a11y/states.js +53 -0
- package/dist/web/a11y/tree.d.ts +124 -0
- package/dist/web/a11y/tree.js +269 -0
- package/dist/web/a11y/walk.d.ts +225 -0
- package/dist/web/a11y/walk.js +568 -0
- package/dist/web/a11y/walkprobe.d.ts +44 -0
- package/dist/web/a11y/walkprobe.js +365 -0
- package/dist/web/audit/axe.d.ts +219 -0
- package/dist/web/audit/axe.js +322 -0
- package/dist/web/audit/behind.d.ts +63 -0
- package/dist/web/audit/behind.js +142 -0
- package/dist/web/audit/capture.d.ts +43 -0
- package/dist/web/audit/capture.js +185 -0
- package/dist/web/audit/colour.d.ts +85 -0
- package/dist/web/audit/colour.js +189 -0
- package/dist/web/audit/contrast.d.ts +74 -0
- package/dist/web/audit/contrast.js +104 -0
- package/dist/web/audit/health.d.ts +27 -0
- package/dist/web/audit/health.js +57 -0
- package/dist/web/audit/index.d.ts +22 -0
- package/dist/web/audit/index.js +22 -0
- package/dist/web/audit/pair.d.ts +55 -0
- package/dist/web/audit/pair.js +157 -0
- package/dist/web/audit/probe.d.ts +31 -0
- package/dist/web/audit/probe.js +189 -0
- package/dist/web/audit/report.d.ts +22 -0
- package/dist/web/audit/report.js +250 -0
- package/dist/web/audit/structure.d.ts +126 -0
- package/dist/web/audit/structure.js +595 -0
- package/dist/web/audit/sweep.d.ts +66 -0
- package/dist/web/audit/sweep.js +117 -0
- package/dist/web/audit/target.d.ts +89 -0
- package/dist/web/audit/target.js +168 -0
- package/dist/web/audit/verdict.d.ts +48 -0
- package/dist/web/audit/verdict.js +52 -0
- package/dist/web/audit/visual.d.ts +161 -0
- package/dist/web/audit/visual.js +297 -0
- package/dist/web/browser.d.ts +213 -0
- package/dist/web/browser.js +927 -0
- package/dist/web/compare/images.d.ts +45 -0
- package/dist/web/compare/images.js +101 -0
- package/dist/web/compare/index.d.ts +15 -0
- package/dist/web/compare/index.js +15 -0
- package/dist/web/compare/provenance.d.ts +48 -0
- package/dist/web/compare/provenance.js +86 -0
- package/dist/web/compare/regions.d.ts +78 -0
- package/dist/web/compare/regions.js +211 -0
- package/dist/web/cookies/extract.d.ts +26 -0
- package/dist/web/cookies/extract.js +167 -0
- package/dist/web/cookies/index.d.ts +8 -0
- package/dist/web/cookies/index.js +7 -0
- package/dist/web/cookies/inject.d.ts +13 -0
- package/dist/web/cookies/inject.js +27 -0
- package/dist/web/cookies/setup.d.ts +31 -0
- package/dist/web/cookies/setup.js +94 -0
- package/dist/web/design/index.d.ts +9 -0
- package/dist/web/design/index.js +9 -0
- package/dist/web/design/inventory.d.ts +126 -0
- package/dist/web/design/inventory.js +324 -0
- package/dist/web/design/probe.d.ts +24 -0
- package/dist/web/design/probe.js +88 -0
- package/dist/web/element/actionable.d.ts +34 -0
- package/dist/web/element/actionable.js +48 -0
- package/dist/web/element/animations.d.ts +48 -0
- package/dist/web/element/animations.js +74 -0
- package/dist/web/element/box.d.ts +53 -0
- package/dist/web/element/box.js +58 -0
- package/dist/web/element/hover.d.ts +75 -0
- package/dist/web/element/hover.js +172 -0
- package/dist/web/element/index.d.ts +17 -0
- package/dist/web/element/index.js +17 -0
- package/dist/web/element/listeners.d.ts +72 -0
- package/dist/web/element/listeners.js +98 -0
- package/dist/web/element/measure.d.ts +40 -0
- package/dist/web/element/measure.js +118 -0
- package/dist/web/element/probes.d.ts +108 -0
- package/dist/web/element/probes.js +195 -0
- package/dist/web/element/pseudo.d.ts +51 -0
- package/dist/web/element/pseudo.js +96 -0
- package/dist/web/element/view.d.ts +30 -0
- package/dist/web/element/view.js +117 -0
- package/dist/web/element/visibility.d.ts +42 -0
- package/dist/web/element/visibility.js +67 -0
- package/dist/web/envelope/artifacts.d.ts +23 -0
- package/dist/web/envelope/artifacts.js +45 -0
- package/dist/web/envelope/index.d.ts +9 -0
- package/dist/web/envelope/index.js +9 -0
- package/dist/web/envelope/naming.d.ts +23 -0
- package/dist/web/envelope/naming.js +43 -0
- package/dist/web/envelope/paged.d.ts +42 -0
- package/dist/web/envelope/paged.js +99 -0
- package/dist/web/envelope/sink.d.ts +43 -0
- package/dist/web/envelope/sink.js +67 -0
- package/dist/web/environment/devices.d.ts +65 -0
- package/dist/web/environment/devices.js +82 -0
- package/dist/web/environment/emulation.d.ts +124 -0
- package/dist/web/environment/emulation.js +258 -0
- package/dist/web/environment/index.d.ts +15 -0
- package/dist/web/environment/index.js +15 -0
- package/dist/web/environment/probes.d.ts +18 -0
- package/dist/web/environment/probes.js +40 -0
- package/dist/web/environment/shaping.d.ts +90 -0
- package/dist/web/environment/shaping.js +141 -0
- package/dist/web/environment/status.d.ts +51 -0
- package/dist/web/environment/status.js +109 -0
- package/dist/web/environment/storage.d.ts +55 -0
- package/dist/web/environment/storage.js +142 -0
- package/dist/web/environment/tabs.d.ts +32 -0
- package/dist/web/environment/tabs.js +47 -0
- package/dist/web/environment/view.d.ts +10 -0
- package/dist/web/environment/view.js +42 -0
- package/dist/web/evaluate/index.d.ts +6 -0
- package/dist/web/evaluate/index.js +6 -0
- package/dist/web/evaluate/outcome.d.ts +74 -0
- package/dist/web/evaluate/outcome.js +91 -0
- package/dist/web/evaluate/probe.d.ts +31 -0
- package/dist/web/evaluate/probe.js +303 -0
- package/dist/web/index.d.ts +47 -0
- package/dist/web/index.js +47 -0
- package/dist/web/input/index.d.ts +11 -0
- package/dist/web/input/index.js +11 -0
- package/dist/web/input/keys.d.ts +48 -0
- package/dist/web/input/keys.js +189 -0
- package/dist/web/input/pointer.d.ts +56 -0
- package/dist/web/input/pointer.js +77 -0
- package/dist/web/input/touch.d.ts +61 -0
- package/dist/web/input/touch.js +83 -0
- package/dist/web/mermaid.d.ts +69 -0
- package/dist/web/mermaid.js +223 -0
- package/dist/web/paths.d.ts +16 -0
- package/dist/web/paths.js +27 -0
- package/dist/web/perf/heap.d.ts +42 -0
- package/dist/web/perf/heap.js +73 -0
- package/dist/web/perf/index.d.ts +14 -0
- package/dist/web/perf/index.js +14 -0
- package/dist/web/perf/layers.d.ts +98 -0
- package/dist/web/perf/layers.js +165 -0
- package/dist/web/perf/probe.d.ts +26 -0
- package/dist/web/perf/probe.js +123 -0
- package/dist/web/perf/profile.d.ts +53 -0
- package/dist/web/perf/profile.js +97 -0
- package/dist/web/perf/trace.d.ts +152 -0
- package/dist/web/perf/trace.js +429 -0
- package/dist/web/perf/view.d.ts +6 -0
- package/dist/web/perf/view.js +86 -0
- package/dist/web/perf/vitals.d.ts +141 -0
- package/dist/web/perf/vitals.js +175 -0
- package/dist/web/reader.d.ts +131 -0
- package/dist/web/reader.js +340 -0
- package/dist/web/screenshot.d.ts +50 -0
- package/dist/web/screenshot.js +108 -0
- package/dist/web/search.d.ts +49 -0
- package/dist/web/search.js +137 -0
- package/dist/web/session/artifacts.d.ts +32 -0
- package/dist/web/session/artifacts.js +47 -0
- package/dist/web/session/emulation.d.ts +118 -0
- package/dist/web/session/emulation.js +307 -0
- package/dist/web/session/recording.d.ts +51 -0
- package/dist/web/session/recording.js +64 -0
- package/dist/web/session/settling.d.ts +42 -0
- package/dist/web/session/settling.js +104 -0
- package/dist/web/session/shaping.d.ts +48 -0
- package/dist/web/session/shaping.js +113 -0
- package/dist/web/session/sourcemaps.d.ts +64 -0
- package/dist/web/session/sourcemaps.js +135 -0
- package/dist/web/session/telemetry.d.ts +219 -0
- package/dist/web/session/telemetry.js +486 -0
- package/dist/web/session/wires.d.ts +22 -0
- package/dist/web/session/wires.js +11 -0
- package/dist/web/session.d.ts +1153 -0
- package/dist/web/session.js +3400 -0
- package/dist/web/snapshot/deep.d.ts +36 -0
- package/dist/web/snapshot/deep.js +91 -0
- package/dist/web/snapshot/flatten.d.ts +101 -0
- package/dist/web/snapshot/flatten.js +131 -0
- package/dist/web/snapshot/index.d.ts +8 -0
- package/dist/web/snapshot/index.js +10 -0
- package/dist/web/snapshot/presented.d.ts +32 -0
- package/dist/web/snapshot/presented.js +74 -0
- package/dist/web/snapshot/query.d.ts +67 -0
- package/dist/web/snapshot/query.js +136 -0
- package/dist/web/sourcemap/index.d.ts +9 -0
- package/dist/web/sourcemap/index.js +9 -0
- package/dist/web/sourcemap/mappings.d.ts +111 -0
- package/dist/web/sourcemap/mappings.js +218 -0
- package/dist/web/styles/capture.d.ts +49 -0
- package/dist/web/styles/capture.js +85 -0
- package/dist/web/styles/cascade.d.ts +107 -0
- package/dist/web/styles/cascade.js +275 -0
- package/dist/web/styles/curation.d.ts +45 -0
- package/dist/web/styles/curation.js +282 -0
- package/dist/web/styles/index.d.ts +10 -0
- package/dist/web/styles/index.js +10 -0
- package/dist/web/target/index.d.ts +7 -0
- package/dist/web/target/index.js +7 -0
- package/dist/web/target/refusals.d.ts +59 -0
- package/dist/web/target/refusals.js +305 -0
- package/dist/web/target/target.d.ts +59 -0
- package/dist/web/target/target.js +94 -0
- package/dist/web/telemetry/buffer.d.ts +35 -0
- package/dist/web/telemetry/buffer.js +72 -0
- package/dist/web/telemetry/console.d.ts +127 -0
- package/dist/web/telemetry/console.js +217 -0
- package/dist/web/telemetry/dialogs.d.ts +41 -0
- package/dist/web/telemetry/dialogs.js +38 -0
- package/dist/web/telemetry/downloads.d.ts +42 -0
- package/dist/web/telemetry/downloads.js +65 -0
- package/dist/web/telemetry/failure.d.ts +31 -0
- package/dist/web/telemetry/failure.js +72 -0
- package/dist/web/telemetry/har.d.ts +97 -0
- package/dist/web/telemetry/har.js +227 -0
- package/dist/web/telemetry/index.d.ts +18 -0
- package/dist/web/telemetry/index.js +18 -0
- package/dist/web/telemetry/lifecycle.d.ts +69 -0
- package/dist/web/telemetry/lifecycle.js +120 -0
- package/dist/web/telemetry/network.d.ts +152 -0
- package/dist/web/telemetry/network.js +130 -0
- package/dist/web/telemetry/requests.d.ts +31 -0
- package/dist/web/telemetry/requests.js +119 -0
- package/dist/web/telemetry/sockets.d.ts +56 -0
- package/dist/web/telemetry/sockets.js +101 -0
- package/dist/web/telemetry/view.d.ts +16 -0
- package/dist/web/telemetry/view.js +125 -0
- package/dist/web/wait/conditions.d.ts +87 -0
- package/dist/web/wait/conditions.js +100 -0
- package/dist/web/wait/index.d.ts +6 -0
- package/dist/web/wait/index.js +6 -0
- package/dist/web/wait/settle.d.ts +54 -0
- package/dist/web/wait/settle.js +84 -0
- package/dist/work/ask.d.ts +45 -0
- package/dist/work/ask.js +85 -0
- package/dist/work/author.d.ts +61 -0
- package/dist/work/author.js +144 -0
- package/dist/work/broker.d.ts +151 -0
- package/dist/work/broker.js +165 -0
- package/dist/work/events.d.ts +98 -0
- package/dist/work/events.js +57 -0
- package/dist/work/history.d.ts +69 -0
- package/dist/work/history.js +174 -0
- package/dist/work/index.d.ts +49 -0
- package/dist/work/index.js +33 -0
- package/dist/work/inplay.d.ts +43 -0
- package/dist/work/inplay.js +42 -0
- package/dist/work/memory.d.ts +84 -0
- package/dist/work/memory.js +203 -0
- package/dist/work/objection.d.ts +92 -0
- package/dist/work/objection.js +72 -0
- package/dist/work/provider.d.ts +79 -0
- package/dist/work/provider.js +45 -0
- package/dist/work/providers/git.d.ts +29 -0
- package/dist/work/providers/git.js +87 -0
- package/dist/work/publish.d.ts +53 -0
- package/dist/work/publish.js +139 -0
- package/dist/work/rebase.d.ts +78 -0
- package/dist/work/rebase.js +261 -0
- package/dist/work/reclaim.d.ts +56 -0
- package/dist/work/reclaim.js +52 -0
- package/dist/work/register.d.ts +29 -0
- package/dist/work/register.js +41 -0
- package/dist/work/stack.d.ts +126 -0
- package/dist/work/stack.js +243 -0
- package/dist/work/stacks.d.ts +156 -0
- package/dist/work/stacks.js +524 -0
- package/dist/work/survey.d.ts +52 -0
- package/dist/work/survey.js +58 -0
- package/dist/work/tidy.d.ts +147 -0
- package/dist/work/tidy.js +136 -0
- package/dist/work/tree.d.ts +120 -0
- package/dist/work/tree.js +69 -0
- package/dist/work/unattended.d.ts +40 -0
- package/dist/work/unattended.js +57 -0
- package/package.json +145 -0
|
@@ -0,0 +1,1153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A browser session: one tab, driven by observe-then-act.
|
|
3
|
+
*
|
|
4
|
+
* observe renders the page's accessibility tree as a
|
|
5
|
+
* role-and-name outline (plus optional screenshot and
|
|
6
|
+
* readable text); act targets an element the way the model
|
|
7
|
+
* named it, role plus accessible name, disambiguated by
|
|
8
|
+
* container or ordinal, using the browser's own accessibility
|
|
9
|
+
* matching. Opaque node handles never reach the model.
|
|
10
|
+
*
|
|
11
|
+
* web_read is a one-shot over a session; the browser drive
|
|
12
|
+
* tool holds one open across tool calls. Same code path,
|
|
13
|
+
* different lifetime.
|
|
14
|
+
*/
|
|
15
|
+
import { type Announcement, type AxNode, type FocusHolder, type TreeScope, type WalkCapture } from "./a11y/index.js";
|
|
16
|
+
import type { Comparison } from "./compare/index.js";
|
|
17
|
+
import { type Animation, type BoxModel, type DelegatedListeners, type HoverReport, type Listener, type Measurement, type PseudoState, type PseudoVariant, type VisibilityVerdict } from "./element/index.js";
|
|
18
|
+
import { type Divergence, type EmulationState, type NetworkRule, type ObservedEnvironment, type SavedState, type SessionStatus, type StorageSnapshot, type TabRecord, type ThrottleConditions } from "./environment/index.js";
|
|
19
|
+
import { type ChordRefusal, type Point, type PointerEventStep, type TouchStep } from "./input/index.js";
|
|
20
|
+
import { type Settled, type WaitCondition, type WaitOutcome } from "./wait/index.js";
|
|
21
|
+
import { type A11yFinding, type BehindReport, type CapturedTarget, type ConformanceBar, type ContrastLevel, type PageBox, type PairReport, type StructureNode, type VisualNode } from "./audit/index.js";
|
|
22
|
+
import { type StyleSample } from "./design/index.js";
|
|
23
|
+
import { type EvalFrame, type EvalOutcome } from "./evaluate/index.js";
|
|
24
|
+
import { type HeapComparison, type Hotspots, type LayerReport, type TraceCapture, type TraceProfile, type Vitals } from "./perf/index.js";
|
|
25
|
+
import { type IndexedNode } from "./snapshot/index.js";
|
|
26
|
+
import { type PropertyTrace, type StyleGroup } from "./styles/index.js";
|
|
27
|
+
import { type Target, type TargetRefusal } from "./target/index.js";
|
|
28
|
+
import { type DialogEvent, type DialogPolicy, type DownloadRecord, type LifecycleEvent, type LogEntry, type NetworkRequest, type Recorded, type SocketRecord } from "./telemetry/index.js";
|
|
29
|
+
/** How a page should be laid out for reading. */
|
|
30
|
+
export type PageForm = "outline" | "reading";
|
|
31
|
+
/** What else to gather while inspecting an element. */
|
|
32
|
+
export interface InspectOptions {
|
|
33
|
+
/** Exactly these properties instead of the curated set. */
|
|
34
|
+
readonly styles?: readonly string[];
|
|
35
|
+
/** Trace why this one property has the value it has. */
|
|
36
|
+
readonly why?: string;
|
|
37
|
+
/** Also report what is listening and what is moving. */
|
|
38
|
+
readonly behaviour?: boolean;
|
|
39
|
+
/** Hold each of these states and report what changes. */
|
|
40
|
+
readonly states?: readonly PseudoState[];
|
|
41
|
+
}
|
|
42
|
+
/** Everything the browser will say about one element. */
|
|
43
|
+
/**
|
|
44
|
+
* What came of measuring between two elements.
|
|
45
|
+
*
|
|
46
|
+
* A target refusal is passed through with the target that earned
|
|
47
|
+
* it, so the caller can say which of the two they named was the
|
|
48
|
+
* problem rather than making them inspect both to find out.
|
|
49
|
+
*/
|
|
50
|
+
export type MeasureResult = {
|
|
51
|
+
readonly ok: true;
|
|
52
|
+
readonly measurement: Measurement;
|
|
53
|
+
} | {
|
|
54
|
+
readonly ok: false;
|
|
55
|
+
readonly target: Target;
|
|
56
|
+
readonly refusal: TargetRefusal;
|
|
57
|
+
} | {
|
|
58
|
+
readonly ok: false;
|
|
59
|
+
readonly problem: string;
|
|
60
|
+
};
|
|
61
|
+
/** A font the browser really used, and how much of it. */
|
|
62
|
+
export interface RenderedFont {
|
|
63
|
+
readonly family: string;
|
|
64
|
+
readonly glyphs: number;
|
|
65
|
+
}
|
|
66
|
+
export interface Inspection {
|
|
67
|
+
readonly node: AxNode;
|
|
68
|
+
readonly visibility: VisibilityVerdict;
|
|
69
|
+
/**
|
|
70
|
+
* What the element actually says, as opposed to what it is
|
|
71
|
+
* called. A counter reading "42" has an accessible name that
|
|
72
|
+
* mentions no number.
|
|
73
|
+
*/
|
|
74
|
+
readonly text?: string;
|
|
75
|
+
/** What a field is holding, which its name never says. */
|
|
76
|
+
readonly value?: string;
|
|
77
|
+
/** Data and state attributes, which the a11y tree cannot see. */
|
|
78
|
+
readonly attributes?: Readonly<Record<string, string>>;
|
|
79
|
+
/** The fonts actually painted, as opposed to the stack asked for. */
|
|
80
|
+
readonly fonts?: readonly RenderedFont[];
|
|
81
|
+
readonly box?: BoxModel;
|
|
82
|
+
readonly styles?: readonly StyleGroup[];
|
|
83
|
+
readonly trace?: PropertyTrace;
|
|
84
|
+
readonly listeners?: readonly Listener[];
|
|
85
|
+
/**
|
|
86
|
+
* Handlers on ancestors, which events from here still reach.
|
|
87
|
+
* Delegation is how most frameworks bind, so without these an
|
|
88
|
+
* element that is listened to reads as one that is not.
|
|
89
|
+
*/
|
|
90
|
+
readonly delegated?: readonly DelegatedListeners[];
|
|
91
|
+
readonly animations?: readonly Animation[];
|
|
92
|
+
readonly variants?: readonly PseudoVariant[];
|
|
93
|
+
}
|
|
94
|
+
/** An inspection, or the refusal that stopped it. */
|
|
95
|
+
export type InspectResult = {
|
|
96
|
+
readonly ok: true;
|
|
97
|
+
readonly inspection: Inspection;
|
|
98
|
+
} | {
|
|
99
|
+
readonly ok: false;
|
|
100
|
+
readonly refusal: TargetRefusal;
|
|
101
|
+
};
|
|
102
|
+
/** What to photograph. */
|
|
103
|
+
export interface ShotOptions {
|
|
104
|
+
/** One element rather than the page. */
|
|
105
|
+
readonly target?: Target;
|
|
106
|
+
/** The whole scrollable page rather than what is on screen. */
|
|
107
|
+
readonly fullPage?: boolean;
|
|
108
|
+
/** Hold this state while capturing. */
|
|
109
|
+
readonly state?: PseudoState;
|
|
110
|
+
}
|
|
111
|
+
/** Where the images landed, and what had to be left out. */
|
|
112
|
+
export interface Shot {
|
|
113
|
+
readonly paths: readonly string[];
|
|
114
|
+
readonly truncated: boolean;
|
|
115
|
+
readonly width: number;
|
|
116
|
+
readonly height: number;
|
|
117
|
+
}
|
|
118
|
+
/** A capture, or the refusal that stopped it. */
|
|
119
|
+
export type ShotResult = {
|
|
120
|
+
readonly ok: true;
|
|
121
|
+
readonly shot: Shot;
|
|
122
|
+
} | {
|
|
123
|
+
readonly ok: false;
|
|
124
|
+
readonly refusal: TargetRefusal;
|
|
125
|
+
};
|
|
126
|
+
/** The result of observing a page. */
|
|
127
|
+
export interface Observation {
|
|
128
|
+
readonly url: string;
|
|
129
|
+
readonly title: string;
|
|
130
|
+
readonly outline: string;
|
|
131
|
+
/**
|
|
132
|
+
* The tree the outline was rendered from, already scoped.
|
|
133
|
+
*
|
|
134
|
+
* The rendered outline is for reading and the tree is for
|
|
135
|
+
* querying, and a caller who stores one so the other can be
|
|
136
|
+
* narrowed needs them to be the same capture. Deriving the tree
|
|
137
|
+
* again afterwards would read a page that has moved on.
|
|
138
|
+
*/
|
|
139
|
+
readonly tree: AxNode;
|
|
140
|
+
}
|
|
141
|
+
/** An action that operates on a named element. */
|
|
142
|
+
export type TargetedAction = {
|
|
143
|
+
kind: "click";
|
|
144
|
+
target: Target;
|
|
145
|
+
} | {
|
|
146
|
+
kind: "type";
|
|
147
|
+
target: Target;
|
|
148
|
+
text: string;
|
|
149
|
+
} | {
|
|
150
|
+
kind: "hover";
|
|
151
|
+
target: Target;
|
|
152
|
+
} | {
|
|
153
|
+
kind: "focus";
|
|
154
|
+
target: Target;
|
|
155
|
+
} | {
|
|
156
|
+
kind: "clear";
|
|
157
|
+
target: Target;
|
|
158
|
+
} | {
|
|
159
|
+
kind: "select";
|
|
160
|
+
target: Target;
|
|
161
|
+
text: string;
|
|
162
|
+
} | {
|
|
163
|
+
kind: "upload";
|
|
164
|
+
target: Target;
|
|
165
|
+
files: readonly string[];
|
|
166
|
+
} | {
|
|
167
|
+
kind: "scrollTo";
|
|
168
|
+
target: Target;
|
|
169
|
+
};
|
|
170
|
+
/** An action to perform against the page. */
|
|
171
|
+
export type PageAction = {
|
|
172
|
+
kind: "navigate";
|
|
173
|
+
url: string;
|
|
174
|
+
} | TargetedAction;
|
|
175
|
+
/** Why an act could not target an element, and what would work. */
|
|
176
|
+
export type ActFailure = {
|
|
177
|
+
ok: false;
|
|
178
|
+
refusal: TargetRefusal;
|
|
179
|
+
};
|
|
180
|
+
/** An element that never became ready, and what held it up. */
|
|
181
|
+
export interface Blocked {
|
|
182
|
+
readonly ready: false;
|
|
183
|
+
readonly waitedMs: number;
|
|
184
|
+
readonly blocker: string;
|
|
185
|
+
}
|
|
186
|
+
/** The outcome of an act call. */
|
|
187
|
+
export type ActResult = {
|
|
188
|
+
ok: true;
|
|
189
|
+
waitedMs?: number;
|
|
190
|
+
} | ActFailure | {
|
|
191
|
+
ok: false;
|
|
192
|
+
blocked: Blocked;
|
|
193
|
+
};
|
|
194
|
+
/** The outcome of reading one named branch of a page. */
|
|
195
|
+
export type ObserveResult = {
|
|
196
|
+
ok: true;
|
|
197
|
+
observation: Observation;
|
|
198
|
+
} | {
|
|
199
|
+
ok: false;
|
|
200
|
+
refusal: TargetRefusal;
|
|
201
|
+
};
|
|
202
|
+
/** How a session should behave for its whole life. */
|
|
203
|
+
export interface SessionOptions {
|
|
204
|
+
/**
|
|
205
|
+
* Carry the user's own Chrome cookies into this session, so
|
|
206
|
+
* internal apps that expect a signed-in browser are drivable.
|
|
207
|
+
* Off by default: a session is a clean user unless asked.
|
|
208
|
+
*/
|
|
209
|
+
readonly cookies?: boolean;
|
|
210
|
+
/**
|
|
211
|
+
* Where durable artifacts a user might want to look at (right
|
|
212
|
+
* now, comparison baselines) are written. Defaults to an
|
|
213
|
+
* adapter-neutral XDG data directory shared across whatever
|
|
214
|
+
* drives this library; an adapter with its own established
|
|
215
|
+
* convention for durable data passes its own root instead.
|
|
216
|
+
*/
|
|
217
|
+
readonly dataRoot?: string;
|
|
218
|
+
}
|
|
219
|
+
/** Chrome cookie injection was asked for but is not set up. */
|
|
220
|
+
export declare class CookieSetupNeeded extends Error {
|
|
221
|
+
constructor();
|
|
222
|
+
}
|
|
223
|
+
export declare class BrowserSession {
|
|
224
|
+
readonly name: string;
|
|
225
|
+
private page;
|
|
226
|
+
private cdp;
|
|
227
|
+
private readonly context;
|
|
228
|
+
private readonly options;
|
|
229
|
+
/** What every property computes to untouched, read once. */
|
|
230
|
+
private initialStyles?;
|
|
231
|
+
/** The recovery in flight, so nothing reads a tab mid-replacement. */
|
|
232
|
+
private recovery?;
|
|
233
|
+
/** The live view collaborators drive the browser through. */
|
|
234
|
+
private readonly wires;
|
|
235
|
+
/** The maps the page has declared, for authored positions. */
|
|
236
|
+
private readonly sourceMaps;
|
|
237
|
+
/** What this session pretends to be, and its keeper. */
|
|
238
|
+
private readonly emulation;
|
|
239
|
+
/** The rules and throttle this session's network answers to. */
|
|
240
|
+
private readonly shaper;
|
|
241
|
+
/** The disk side of this session: sink, stamps and ledger. */
|
|
242
|
+
private readonly artifacts;
|
|
243
|
+
/** The wait between a change and an honest reading of it. */
|
|
244
|
+
private readonly settler;
|
|
245
|
+
/** Everything this session overhears, and its buffers. */
|
|
246
|
+
private readonly telemetry;
|
|
247
|
+
private constructor();
|
|
248
|
+
/** Wall clock time of the last operation. See ready(). */
|
|
249
|
+
private usedAt;
|
|
250
|
+
/**
|
|
251
|
+
* Open a fresh session in a browser context of its own, so
|
|
252
|
+
* its cookies, storage and cache belong to it alone.
|
|
253
|
+
*/
|
|
254
|
+
static open(name: string, options?: SessionOptions): Promise<BrowserSession>;
|
|
255
|
+
/** Decide how dialogs will be answered from here on. */
|
|
256
|
+
setDialogPolicy(policy: DialogPolicy): void;
|
|
257
|
+
/** How dialogs are currently answered. */
|
|
258
|
+
get dialogs(): {
|
|
259
|
+
readonly policy: DialogPolicy;
|
|
260
|
+
readonly seen: readonly DialogEvent[];
|
|
261
|
+
};
|
|
262
|
+
/** Every request the page has made. */
|
|
263
|
+
requests(): readonly NetworkRequest[];
|
|
264
|
+
/**
|
|
265
|
+
* Write a capture out as an HTTP Archive.
|
|
266
|
+
*
|
|
267
|
+
* Bodies are fetched for the requests being exported, since an
|
|
268
|
+
* archive without them answers far fewer questions than one
|
|
269
|
+
* with them, and an export is already an explicit ask.
|
|
270
|
+
*/
|
|
271
|
+
exportHar(requests: readonly NetworkRequest[]): Promise<string>;
|
|
272
|
+
/**
|
|
273
|
+
* The body of one recorded reply, fetched on demand.
|
|
274
|
+
*
|
|
275
|
+
* Bodies are not captured as they stream past: most are never
|
|
276
|
+
* asked for, and holding every one would cost far more memory
|
|
277
|
+
* than the rest of the session put together. Chrome keeps them
|
|
278
|
+
* for the current document, so this asks only when asked.
|
|
279
|
+
*/
|
|
280
|
+
bodyOf(requestId: string): Promise<{
|
|
281
|
+
body: string;
|
|
282
|
+
base64Encoded: boolean;
|
|
283
|
+
} | undefined>;
|
|
284
|
+
/**
|
|
285
|
+
* What the page has said, from a cursor onward.
|
|
286
|
+
*
|
|
287
|
+
* The buffer survives navigation on purpose: a message logged
|
|
288
|
+
* just before a redirect is often the one that explains it.
|
|
289
|
+
*/
|
|
290
|
+
logs(since?: number): {
|
|
291
|
+
readonly entries: readonly Recorded<LogEntry>[];
|
|
292
|
+
readonly dropped: number;
|
|
293
|
+
readonly cursor: number;
|
|
294
|
+
};
|
|
295
|
+
/** Navigate the tab to a URL and wait for the network to settle. */
|
|
296
|
+
navigate(url: string): Promise<{
|
|
297
|
+
status?: number;
|
|
298
|
+
failure?: string;
|
|
299
|
+
}>;
|
|
300
|
+
/** Where the session currently is. */
|
|
301
|
+
get url(): string;
|
|
302
|
+
/**
|
|
303
|
+
* Fetch the page again.
|
|
304
|
+
*
|
|
305
|
+
* ignoreCache is the useful default for a developer, who
|
|
306
|
+
* reloads to see a change they just made. A reload that served
|
|
307
|
+
* the old file back would be the one thing it must not do.
|
|
308
|
+
*/
|
|
309
|
+
reload(): Promise<{
|
|
310
|
+
failure?: string;
|
|
311
|
+
}>;
|
|
312
|
+
/**
|
|
313
|
+
* Wait for the page to stop changing, so a read that follows
|
|
314
|
+
* describes where the page ended up rather than where it was.
|
|
315
|
+
*
|
|
316
|
+
* Returns what it found instead of throwing on a page that never
|
|
317
|
+
* settles: something that animates or polls for ever is still
|
|
318
|
+
* worth reading, as long as the answer does not pretend it was
|
|
319
|
+
* final.
|
|
320
|
+
*/
|
|
321
|
+
settlePage(budgetMs?: number): Promise<Settled>;
|
|
322
|
+
/** What the last settle saw, for a reader that wants to say so. */
|
|
323
|
+
get settledLast(): Settled | undefined;
|
|
324
|
+
/**
|
|
325
|
+
* Step through the history the session accumulated.
|
|
326
|
+
*
|
|
327
|
+
* Refuses rather than doing nothing at either end. Silently
|
|
328
|
+
* staying put looks identical to a page that ignored the
|
|
329
|
+
* request, and the caller then has no way to tell whether
|
|
330
|
+
* going back was possible at all.
|
|
331
|
+
*
|
|
332
|
+
* The refusal is driven by the thrown error, not by a null
|
|
333
|
+
* return. Puppeteer returns null whenever a navigation has no
|
|
334
|
+
* HTTP response, which includes about:blank and same-document
|
|
335
|
+
* moves, so reading null as failure reported a successful step
|
|
336
|
+
* back to about:blank as an impossible one. An absent entry is
|
|
337
|
+
* what throws.
|
|
338
|
+
*/
|
|
339
|
+
step(direction: "back" | "forward"): Promise<{
|
|
340
|
+
readonly ok: true;
|
|
341
|
+
readonly url: string;
|
|
342
|
+
} | {
|
|
343
|
+
readonly ok: false;
|
|
344
|
+
readonly refusal: string;
|
|
345
|
+
}>;
|
|
346
|
+
/**
|
|
347
|
+
* Render the page's accessibility outline, plus url and
|
|
348
|
+
* title. A scope narrows the tree before it is rendered; with
|
|
349
|
+
* none, the whole page is read.
|
|
350
|
+
*/
|
|
351
|
+
observe(scope?: TreeScope, form?: PageForm): Promise<Observation>;
|
|
352
|
+
/**
|
|
353
|
+
* Read one branch of the page, named the way the caller names
|
|
354
|
+
* anything else. Unlike a whole-page read this can fail, so
|
|
355
|
+
* it reports what would have worked instead.
|
|
356
|
+
*/
|
|
357
|
+
observeWithin(target: Target, scope?: TreeScope, form?: PageForm): Promise<ObserveResult>;
|
|
358
|
+
/** Wrap a tree as an observation of where the session is. */
|
|
359
|
+
private describe;
|
|
360
|
+
/** Perform an action, resolving semantic targets against the a11y tree. */
|
|
361
|
+
act(action: PageAction): Promise<ActResult>;
|
|
362
|
+
/**
|
|
363
|
+
* Tell each frame of a stack where it was written.
|
|
364
|
+
*
|
|
365
|
+
* A frame with no map keeps its generated position rather than
|
|
366
|
+
* being dropped: half a stack is worse than a raw one.
|
|
367
|
+
*/
|
|
368
|
+
resolveFrames(frames: readonly EvalFrame[]): Promise<readonly EvalFrame[]>;
|
|
369
|
+
/**
|
|
370
|
+
* Replace the dead tab with a live one.
|
|
371
|
+
*
|
|
372
|
+
* The context survives a tab crash and can still make pages,
|
|
373
|
+
* so the session keeps its identity, its cookies and every
|
|
374
|
+
* buffer it has filled; only the tab is new. Watchers have to
|
|
375
|
+
* be reinstalled because they were bound to a protocol channel
|
|
376
|
+
* that no longer answers.
|
|
377
|
+
*/
|
|
378
|
+
private recover;
|
|
379
|
+
/**
|
|
380
|
+
* Point the session at a tab and make it whole again.
|
|
381
|
+
*
|
|
382
|
+
* Every watcher is bound to one tab's protocol channel, so a
|
|
383
|
+
* session that changes tabs without reinstalling them goes on
|
|
384
|
+
* answering while quietly deaf to everything the new tab does.
|
|
385
|
+
* That is the same wound a crash leaves, which is why recovering
|
|
386
|
+
* from a crash and switching tabs are one piece of code: two
|
|
387
|
+
* copies would drift, and the half that drifted would fail
|
|
388
|
+
* silently in exactly this way.
|
|
389
|
+
*/
|
|
390
|
+
private bindTo;
|
|
391
|
+
/**
|
|
392
|
+
* Wait for any recovery to finish.
|
|
393
|
+
*
|
|
394
|
+
* Called before anything that touches the tab, so a read that
|
|
395
|
+
* arrives during a crash waits for the replacement instead of
|
|
396
|
+
* hanging on a renderer that is never coming back.
|
|
397
|
+
*/
|
|
398
|
+
/**
|
|
399
|
+
* Wait for the replacement tab, when one is coming.
|
|
400
|
+
*
|
|
401
|
+
* The crash announcement that starts a recovery can arrive
|
|
402
|
+
* after the failure it caused, so asking whether a recovery is
|
|
403
|
+
* under way immediately gets the wrong answer. This gives the
|
|
404
|
+
* announcement its moment and then waits the recovery out,
|
|
405
|
+
* reporting whether there was one, so a caller that died for
|
|
406
|
+
* some other reason is not left waiting on a tab nobody is
|
|
407
|
+
* replacing.
|
|
408
|
+
*/
|
|
409
|
+
private awaitReplacement;
|
|
410
|
+
private ready;
|
|
411
|
+
/** When this session last did anything, for the idle reaper. */
|
|
412
|
+
get lastUsedAt(): number;
|
|
413
|
+
/** Files the page has handed back. */
|
|
414
|
+
downloads(): readonly DownloadRecord[];
|
|
415
|
+
/**
|
|
416
|
+
* Record what the page's JavaScript is doing, for a while.
|
|
417
|
+
*
|
|
418
|
+
* A long task says three seconds went somewhere. This says
|
|
419
|
+
* where. The profiler is started, the page is left alone for
|
|
420
|
+
* the window asked for, and the samples are folded into time
|
|
421
|
+
* per function.
|
|
422
|
+
*
|
|
423
|
+
* Nothing is done to the page in between on purpose: whatever
|
|
424
|
+
* is being profiled has to be the page's own work, and a probe
|
|
425
|
+
* running during the window would appear in its own results.
|
|
426
|
+
*/
|
|
427
|
+
profile(forMs: number): Promise<Hotspots>;
|
|
428
|
+
/**
|
|
429
|
+
* Record a trace around some work, and say what it cost.
|
|
430
|
+
*
|
|
431
|
+
* The work runs inside the recording rather than before it,
|
|
432
|
+
* because a trace only holds what happened while it was on.
|
|
433
|
+
* Measured: a timer installed before the recording starts has
|
|
434
|
+
* no install event, so its lateness cannot be explained and a
|
|
435
|
+
* fetch begun earlier has no url. Tracing after the fact is
|
|
436
|
+
* not a weaker answer, it is no answer.
|
|
437
|
+
*
|
|
438
|
+
* The work's own result is handed back whatever the recording
|
|
439
|
+
* did, so a refused permit or a protocol failure costs the
|
|
440
|
+
* caller the trace and never the action.
|
|
441
|
+
*/
|
|
442
|
+
recordWhile<T>(profiles: readonly TraceProfile[], work: () => Promise<T>): Promise<{
|
|
443
|
+
readonly result: T;
|
|
444
|
+
readonly trace?: TraceCapture;
|
|
445
|
+
readonly refusal?: string;
|
|
446
|
+
}>;
|
|
447
|
+
/**
|
|
448
|
+
* Every frame id this session owns, its own and its children's.
|
|
449
|
+
*
|
|
450
|
+
* This is what separates our work from another session's in a
|
|
451
|
+
* recording that necessarily contains both.
|
|
452
|
+
*/
|
|
453
|
+
private ownFrameIds;
|
|
454
|
+
/** Every websocket conversation the page has held. */
|
|
455
|
+
sockets(): readonly SocketRecord[];
|
|
456
|
+
/**
|
|
457
|
+
* Measure what the page is holding, against the last measurement.
|
|
458
|
+
*
|
|
459
|
+
* A collection is forced first unless refused, because a heap
|
|
460
|
+
* that grew means nothing while uncollected garbage is still in
|
|
461
|
+
* it. The previous reading is kept on the session so a caller
|
|
462
|
+
* can measure, do the thing they suspect, and measure again
|
|
463
|
+
* without having to carry a number between calls.
|
|
464
|
+
*/
|
|
465
|
+
heap(collect?: boolean): Promise<HeapComparison>;
|
|
466
|
+
/** The previous heap reading, for the next comparison. */
|
|
467
|
+
private lastHeap?;
|
|
468
|
+
/**
|
|
469
|
+
* What the compositor is holding for this page, and why.
|
|
470
|
+
*
|
|
471
|
+
* LayerTree pushes nothing when it is enabled: the tree arrives
|
|
472
|
+
* only on layerTreeDidChange, and a page that has finished
|
|
473
|
+
* settling has no change left to report. Measured across seven
|
|
474
|
+
* candidates, a throwaway screenshot is the cheapest way to make
|
|
475
|
+
* Chrome recompose and hand the tree over, and the only one that
|
|
476
|
+
* alters nothing about the page. Scrolling moves the page,
|
|
477
|
+
* overriding device metrics disturbs an emulation the caller may
|
|
478
|
+
* have set, and toggling a style writes to the DOM.
|
|
479
|
+
*
|
|
480
|
+
* The domain goes off again afterwards, so a read leaves no
|
|
481
|
+
* instrumentation running behind it.
|
|
482
|
+
*/
|
|
483
|
+
/**
|
|
484
|
+
* Judge text against the background actually behind its glyphs.
|
|
485
|
+
*
|
|
486
|
+
* For the case axe hands back as needing a person: text over a
|
|
487
|
+
* gradient, a photograph, or anything else with no single
|
|
488
|
+
* background colour. Two shots of the same region, the second with
|
|
489
|
+
* the text hidden, give both the glyph mask and what lies under it.
|
|
490
|
+
*
|
|
491
|
+
* Hiding the text is a paint-only change, so nothing moves between
|
|
492
|
+
* the shots and the subtraction stays aligned. The inline style is
|
|
493
|
+
* put back in a finally, including the case where it had one of its
|
|
494
|
+
* own to begin with.
|
|
495
|
+
*/
|
|
496
|
+
contrastBehind(target: Target, bar?: ContrastLevel): Promise<{
|
|
497
|
+
ok: true;
|
|
498
|
+
report: BehindReport;
|
|
499
|
+
} | {
|
|
500
|
+
ok: false;
|
|
501
|
+
refusal: TargetRefusal;
|
|
502
|
+
}>;
|
|
503
|
+
/**
|
|
504
|
+
* Judge the contrast between two elements the caller named.
|
|
505
|
+
*
|
|
506
|
+
* Distinct from contrastBehind, which subtracts pixels to read the
|
|
507
|
+
* background under one element's glyphs. This compares two
|
|
508
|
+
* elements' stated colours, which is the only way to ask about a
|
|
509
|
+
* boundary: an icon against its card, a border against the page.
|
|
510
|
+
* Both sides are read from the computed style rather than the
|
|
511
|
+
* screen, so nothing is captured and nothing moves.
|
|
512
|
+
*/
|
|
513
|
+
contrastPair(one: Target, other: Target, bar?: ContrastLevel): Promise<{
|
|
514
|
+
ok: true;
|
|
515
|
+
report: PairReport;
|
|
516
|
+
} | {
|
|
517
|
+
ok: false;
|
|
518
|
+
target: Target;
|
|
519
|
+
refusal: TargetRefusal;
|
|
520
|
+
}>;
|
|
521
|
+
/** What one side of a contrast pairing paints. */
|
|
522
|
+
private paintedSide;
|
|
523
|
+
/**
|
|
524
|
+
* Make an element's own text stop painting, and put it back.
|
|
525
|
+
*
|
|
526
|
+
* Only colour and shadow are touched, because neither affects
|
|
527
|
+
* layout: the glyphs still occupy the same pixels, they simply
|
|
528
|
+
* leave no mark on them.
|
|
529
|
+
*/
|
|
530
|
+
private hideText;
|
|
531
|
+
layers(): Promise<LayerReport>;
|
|
532
|
+
/**
|
|
533
|
+
* What the page does on hover, and whether focus does it too.
|
|
534
|
+
*
|
|
535
|
+
* Two halves, because either alone lies. The stylesheets say
|
|
536
|
+
* which elements might hover, cheaply and in one round trip, but
|
|
537
|
+
* a declared rule the cascade beat changes nothing a person can
|
|
538
|
+
* see. So the scan only proposes candidates, and each one is then
|
|
539
|
+
* held in hover and in focus and read, which is the only account
|
|
540
|
+
* of what actually happens.
|
|
541
|
+
*
|
|
542
|
+
* Bounded because there is a round trip per candidate, measured
|
|
543
|
+
* at roughly 9ms for the pair of states.
|
|
544
|
+
*/
|
|
545
|
+
hovers(limit?: number): Promise<HoverReport>;
|
|
546
|
+
/** Which selectors carry a hover, as the page's own sheets say. */
|
|
547
|
+
private scanForHover;
|
|
548
|
+
/** Backend ids matching a selector, or none if it will not parse. */
|
|
549
|
+
private nodesMatching;
|
|
550
|
+
/** Hold hover, then focus, and read what each changed. */
|
|
551
|
+
private measureHover;
|
|
552
|
+
/** Why Chrome composited one layer, or nothing if it will not say. */
|
|
553
|
+
private reasonsFor;
|
|
554
|
+
/** A short name for the element behind a layer. */
|
|
555
|
+
private nameOfNode;
|
|
556
|
+
/** Give the compositor a moment to finish reporting. */
|
|
557
|
+
private settleLayers;
|
|
558
|
+
/** Socket events dropped to stay within the buffer's budget. */
|
|
559
|
+
get socketFramesDropped(): number;
|
|
560
|
+
/** Where the page has been. */
|
|
561
|
+
get history(): readonly LifecycleEvent[];
|
|
562
|
+
/**
|
|
563
|
+
* Put the emulation back exactly as it was.
|
|
564
|
+
*
|
|
565
|
+
* emulate merges, which is right for a caller adding one
|
|
566
|
+
* condition and wrong for anything that has to undo itself: a
|
|
567
|
+
* merge cannot clear a field, so a sweep that widened the
|
|
568
|
+
* viewport could never restore a session that had none. This
|
|
569
|
+
* replaces the state wholesale.
|
|
570
|
+
*/
|
|
571
|
+
restoreEmulation(state: EmulationState): Promise<void>;
|
|
572
|
+
/**
|
|
573
|
+
* Pretend to be a different visitor, then report what the page
|
|
574
|
+
* actually experiences.
|
|
575
|
+
*
|
|
576
|
+
* The intent is kept whole and re-applied in full, because
|
|
577
|
+
* Chrome's media emulation forgets anything a call omits, so
|
|
578
|
+
* asking for reduced motion after asking for dark mode would
|
|
579
|
+
* otherwise turn the dark mode back off.
|
|
580
|
+
*/
|
|
581
|
+
emulate(change?: EmulationState,
|
|
582
|
+
/** Overrides to take off, which an absent key cannot express. */
|
|
583
|
+
clear?: readonly (keyof EmulationState)[]): Promise<{
|
|
584
|
+
asked: EmulationState;
|
|
585
|
+
observed: ObservedEnvironment;
|
|
586
|
+
gaps: readonly Divergence[];
|
|
587
|
+
}>;
|
|
588
|
+
/** What this session has asked the browser to pretend. */
|
|
589
|
+
get emulated(): EmulationState;
|
|
590
|
+
/**
|
|
591
|
+
* Read what the page has kept.
|
|
592
|
+
*
|
|
593
|
+
* A store that cannot be read says why rather than coming
|
|
594
|
+
* back empty, since an empty store and an unreadable one lead
|
|
595
|
+
* to opposite conclusions.
|
|
596
|
+
*/
|
|
597
|
+
storage(wanted: {
|
|
598
|
+
local?: boolean;
|
|
599
|
+
session?: boolean;
|
|
600
|
+
cookies?: boolean;
|
|
601
|
+
clipboard?: boolean;
|
|
602
|
+
}): Promise<StorageSnapshot>;
|
|
603
|
+
/** One of the two DOM stores, keyed by this frame's origin. */
|
|
604
|
+
private domStorage;
|
|
605
|
+
/** Put a value into one of the DOM stores. */
|
|
606
|
+
setStored(isLocalStorage: boolean, key: string, value: string): Promise<void>;
|
|
607
|
+
/**
|
|
608
|
+
* Measure the space between two elements.
|
|
609
|
+
*
|
|
610
|
+
* The border box is the one measured, because that is the edge
|
|
611
|
+
* a designer sees and points at. Margins are the space itself,
|
|
612
|
+
* so measuring between margin boxes would report the gap that
|
|
613
|
+
* remains after the gap, which is nearly always zero.
|
|
614
|
+
*/
|
|
615
|
+
measure(a: Target, b: Target): Promise<MeasureResult>;
|
|
616
|
+
/**
|
|
617
|
+
* Every tab this session's context is holding open.
|
|
618
|
+
*
|
|
619
|
+
* A page that opens another one is doing something ordinary: a
|
|
620
|
+
* target of _blank, a sign-in or a payment handed to a second
|
|
621
|
+
* window. Until this existed the new tab was real, live and
|
|
622
|
+
* entirely invisible, and the click that made it looked like a
|
|
623
|
+
* click that did nothing.
|
|
624
|
+
*/
|
|
625
|
+
tabs(): Promise<readonly TabRecord[]>;
|
|
626
|
+
/**
|
|
627
|
+
* Drive a different tab from now on.
|
|
628
|
+
*
|
|
629
|
+
* The tab left behind is not closed. A sign-in that opened a
|
|
630
|
+
* second window usually wants the first one back afterwards, and
|
|
631
|
+
* closing it would make switching a one-way trip.
|
|
632
|
+
*/
|
|
633
|
+
switchTab(index: number): Promise<TabRecord | {
|
|
634
|
+
refusal: string;
|
|
635
|
+
}>;
|
|
636
|
+
/**
|
|
637
|
+
* Keep everything that makes this session signed in.
|
|
638
|
+
*
|
|
639
|
+
* Cookies and the two DOM stores together, because being logged
|
|
640
|
+
* in is rarely all in one of them: a session cookie and a token
|
|
641
|
+
* in local storage is the ordinary arrangement, and saving half
|
|
642
|
+
* of it produces a state that restores without signing anyone
|
|
643
|
+
* in.
|
|
644
|
+
*/
|
|
645
|
+
saveState(): Promise<SavedState>;
|
|
646
|
+
/**
|
|
647
|
+
* Wear a state saved earlier, and report exactly what landed.
|
|
648
|
+
*
|
|
649
|
+
* Cookies go to the browser, so they apply whatever page is
|
|
650
|
+
* open. The DOM stores are scoped to an origin, so they can only
|
|
651
|
+
* be written while the session is on the origin they came from,
|
|
652
|
+
* and the answer says when they were not rather than counting
|
|
653
|
+
* them as restored. A caller who is told they are signed in and
|
|
654
|
+
* is not will blame the site.
|
|
655
|
+
*/
|
|
656
|
+
loadState(state: SavedState): Promise<{
|
|
657
|
+
cookies: number;
|
|
658
|
+
local: number;
|
|
659
|
+
session: number;
|
|
660
|
+
wrongOrigin?: string;
|
|
661
|
+
}>;
|
|
662
|
+
/** Empty the stores named, and only those. */
|
|
663
|
+
clearStorage(wanted: {
|
|
664
|
+
local?: boolean;
|
|
665
|
+
session?: boolean;
|
|
666
|
+
cookies?: boolean;
|
|
667
|
+
}): Promise<void>;
|
|
668
|
+
/**
|
|
669
|
+
* Read the clipboard.
|
|
670
|
+
*
|
|
671
|
+
* Chrome refuses this unless the permission is granted against
|
|
672
|
+
* the browser context, not merely the origin, and unless the
|
|
673
|
+
* read is attributed to a user gesture. Both were measured;
|
|
674
|
+
* either alone still gets a refusal.
|
|
675
|
+
*/
|
|
676
|
+
private clipboard;
|
|
677
|
+
/** Put text on the clipboard. */
|
|
678
|
+
writeClipboard(text: string): Promise<void>;
|
|
679
|
+
/** Ask for clipboard access against this context. */
|
|
680
|
+
private grantClipboard;
|
|
681
|
+
/** The origin the current page's stores are keyed by. */
|
|
682
|
+
private origin;
|
|
683
|
+
/**
|
|
684
|
+
* Bend the network: mock a reply, block a request, slow it all
|
|
685
|
+
* down, or stop pretending.
|
|
686
|
+
*
|
|
687
|
+
* Interception is only attached while there is a rule to
|
|
688
|
+
* apply. Every paused request has to be answered or the page
|
|
689
|
+
* waits on it forever, so an interceptor with nothing to say
|
|
690
|
+
* is a liability rather than a neutral bystander.
|
|
691
|
+
*/
|
|
692
|
+
shape(change: {
|
|
693
|
+
rules?: readonly NetworkRule[];
|
|
694
|
+
/** Conditions, or the name of a profile such as slow-3g. */
|
|
695
|
+
throttle?: ThrottleConditions | string;
|
|
696
|
+
clear?: boolean;
|
|
697
|
+
}): Promise<{
|
|
698
|
+
rules: readonly NetworkRule[];
|
|
699
|
+
throttle: ThrottleConditions | undefined;
|
|
700
|
+
}>;
|
|
701
|
+
/**
|
|
702
|
+
* Press a chord, or a sequence of them.
|
|
703
|
+
*
|
|
704
|
+
* Dispatch goes through the driver's keyboard rather than the
|
|
705
|
+
* protocol directly, because the driver owns the layout table
|
|
706
|
+
* that turns a key name into a code, a virtual key number and
|
|
707
|
+
* the text it produces. Keeping a second opinion about that
|
|
708
|
+
* would be a second thing to be wrong about.
|
|
709
|
+
*/
|
|
710
|
+
press(keys: string): Promise<{
|
|
711
|
+
pressed: readonly string[];
|
|
712
|
+
} | {
|
|
713
|
+
refusal: ChordRefusal;
|
|
714
|
+
}>;
|
|
715
|
+
/** Send raw text as keystrokes, wherever focus happens to be. */
|
|
716
|
+
typeRaw(text: string): Promise<void>;
|
|
717
|
+
/** Dispatch a composed mouse gesture. */
|
|
718
|
+
pointerGesture(steps: readonly PointerEventStep[]): Promise<void>;
|
|
719
|
+
/** Scroll by wheel, which is not the same as scrolling by script. */
|
|
720
|
+
wheel(at: Point, byX: number, byY: number): Promise<void>;
|
|
721
|
+
/**
|
|
722
|
+
* Dispatch a composed touch gesture.
|
|
723
|
+
*
|
|
724
|
+
* Touch events reach the page whether or not touch emulation
|
|
725
|
+
* is on, so this never refuses. What emulation changes is what
|
|
726
|
+
* the page believes about itself: maxTouchPoints and the
|
|
727
|
+
* coarse-pointer media query. A page that decides at load time
|
|
728
|
+
* whether to attach touch handlers will not have attached any,
|
|
729
|
+
* and the gesture lands on nothing, so the caller is told
|
|
730
|
+
* rather than stopped.
|
|
731
|
+
*/
|
|
732
|
+
touchGesture(steps: readonly TouchStep[]): Promise<void>;
|
|
733
|
+
/**
|
|
734
|
+
* Walk the page with the Tab key and report what happened.
|
|
735
|
+
*
|
|
736
|
+
* This is one of the two reads that deliberately change the
|
|
737
|
+
* page, since there is no way to learn where focus goes
|
|
738
|
+
* without moving it. Focus is put back afterwards and the
|
|
739
|
+
* result says so.
|
|
740
|
+
*
|
|
741
|
+
* The walk runs to twice the number of focusable things plus a
|
|
742
|
+
* little, which is enough for a healthy page to come round
|
|
743
|
+
* twice and for a trap to show its cycle. Stopping sooner
|
|
744
|
+
* would report a trap as a short page.
|
|
745
|
+
*/
|
|
746
|
+
keyboardWalk(maxStops?: number): Promise<WalkCapture>;
|
|
747
|
+
/** Which way the document says it reads. */
|
|
748
|
+
private readingDirection;
|
|
749
|
+
/**
|
|
750
|
+
* The whole page flattened, frames and shadow content
|
|
751
|
+
* included.
|
|
752
|
+
*
|
|
753
|
+
* The style properties have to be named up front because the
|
|
754
|
+
* protocol returns their values as a bare array positioned
|
|
755
|
+
* against the request. Asking for a handful keeps the snapshot
|
|
756
|
+
* small; asking for none still gives geometry and structure.
|
|
757
|
+
*/
|
|
758
|
+
snapshot(styleProperties?: readonly string[]): Promise<readonly IndexedNode[]>;
|
|
759
|
+
/**
|
|
760
|
+
* Run an expression in the page and describe what came back.
|
|
761
|
+
*
|
|
762
|
+
* The value is serialized inside the page rather than by the
|
|
763
|
+
* protocol, because the protocol does not decline politely: a
|
|
764
|
+
* circular object rejects the whole call with "object
|
|
765
|
+
* reference chain is too long", losing the evaluation and any
|
|
766
|
+
* account of it together.
|
|
767
|
+
*
|
|
768
|
+
* The protocol can still fail for its own reasons, so that is
|
|
769
|
+
* caught too and returned as a refusal rather than thrown. An
|
|
770
|
+
* expression that kills the session is not a useful tool.
|
|
771
|
+
*/
|
|
772
|
+
evaluate(expression: string): Promise<EvalOutcome>;
|
|
773
|
+
/**
|
|
774
|
+
* Run axe-core against the page and read back its findings.
|
|
775
|
+
*
|
|
776
|
+
* axe is injected fresh on every call rather than kept across
|
|
777
|
+
* navigations. It is half a megabyte, but a navigation clears
|
|
778
|
+
* the world, and an audit that silently reported nothing
|
|
779
|
+
* because the library went away with the last page would be
|
|
780
|
+
* worse than a slow one.
|
|
781
|
+
*
|
|
782
|
+
* Only violations and incomplete results are asked for. Passes
|
|
783
|
+
* and inapplicable rules together outweigh them by an order of
|
|
784
|
+
* magnitude and answer a question nobody asks.
|
|
785
|
+
*
|
|
786
|
+
* The experimental rules are switched on. axe leaves them off,
|
|
787
|
+
* and five of them carry real WCAG criteria, so leaving them
|
|
788
|
+
* off means 2.5.3 (label in name) is never checked and 1.3.1
|
|
789
|
+
* is checked less thoroughly than it looks. An accessibility
|
|
790
|
+
* reviewer reported label in name as missing, and it was, in
|
|
791
|
+
* the sense that matters: the rule sat in the bundle unused.
|
|
792
|
+
* Their findings are reported as needing a person rather than
|
|
793
|
+
* as failures, since axe's own doubt travels with them.
|
|
794
|
+
*/
|
|
795
|
+
audit(bar?: ConformanceBar): Promise<readonly A11yFinding[]>;
|
|
796
|
+
/**
|
|
797
|
+
* The page as the structural rules need to see it.
|
|
798
|
+
*
|
|
799
|
+
* Two accounts from the browser, joined on the backend node id
|
|
800
|
+
* they share: the snapshot for attributes and layout, the
|
|
801
|
+
* accessibility tree for roles and names. Neither carries
|
|
802
|
+
* both, and every structural rule needs both.
|
|
803
|
+
*/
|
|
804
|
+
/**
|
|
805
|
+
* What holds focus at this moment, moving nothing.
|
|
806
|
+
*
|
|
807
|
+
* The keyboard walk answers what a whole page does; this answers
|
|
808
|
+
* where focus is right now, which is the question between
|
|
809
|
+
* actions. It reads rather than presses, so it can be asked after
|
|
810
|
+
* a click or a navigation without disturbing what it reports.
|
|
811
|
+
*/
|
|
812
|
+
focusHolder(): Promise<FocusHolder | undefined>;
|
|
813
|
+
structure(): Promise<readonly StructureNode[]>;
|
|
814
|
+
/**
|
|
815
|
+
* What the layout actually did, as the browser measured it.
|
|
816
|
+
*
|
|
817
|
+
* Read in one page-side pass rather than a protocol call per
|
|
818
|
+
* element: a page of any size would otherwise cost thousands
|
|
819
|
+
* of round trips to answer one question.
|
|
820
|
+
*/
|
|
821
|
+
/**
|
|
822
|
+
* Every pointer target on the page, with the facts WCAG 2.5.8
|
|
823
|
+
* needs to judge its size.
|
|
824
|
+
*
|
|
825
|
+
* Separate from layout() because the two ask different
|
|
826
|
+
* questions: layout wants everything drawn, this wants only
|
|
827
|
+
* what a finger has to hit, plus the two exceptions the
|
|
828
|
+
* criterion turns on.
|
|
829
|
+
*/
|
|
830
|
+
targets(): Promise<readonly CapturedTarget[]>;
|
|
831
|
+
layout(): Promise<{
|
|
832
|
+
readonly nodes: readonly VisualNode[];
|
|
833
|
+
readonly viewport: PageBox;
|
|
834
|
+
}>;
|
|
835
|
+
/**
|
|
836
|
+
* What the page is built from, sampled element by element.
|
|
837
|
+
*
|
|
838
|
+
* Read in one page-side pass, and filtered there rather than
|
|
839
|
+
* here: an inherited value is not a decision, and carrying
|
|
840
|
+
* every element's inherited colour back only to discard it
|
|
841
|
+
* would be most of the payload.
|
|
842
|
+
*/
|
|
843
|
+
styleSamples(): Promise<readonly StyleSample[]>;
|
|
844
|
+
/**
|
|
845
|
+
* Install the performance observers ahead of every page.
|
|
846
|
+
*
|
|
847
|
+
* Largest contentful paint and layout shift are events rather
|
|
848
|
+
* than state, so an observer registered after a page loads has
|
|
849
|
+
* missed them. The buffered flag recovers the timings but not
|
|
850
|
+
* the element that painted or the nodes that moved, which is
|
|
851
|
+
* the half worth having, so this goes in through the hook that
|
|
852
|
+
* runs before the document does.
|
|
853
|
+
*/
|
|
854
|
+
private watchVitals;
|
|
855
|
+
/** What the current page cost to show. */
|
|
856
|
+
vitals(): Promise<Vitals>;
|
|
857
|
+
/** Run a page-side source string and read back its value. */
|
|
858
|
+
private evaluateJson;
|
|
859
|
+
/** Whether the page believes it is being touched. */
|
|
860
|
+
get touchEmulated(): boolean;
|
|
861
|
+
/**
|
|
862
|
+
* Wait for the page to reach a state, and say what happened.
|
|
863
|
+
*
|
|
864
|
+
* The timeout is a real answer rather than an error. A page
|
|
865
|
+
* that never reaches the state is the finding, so the outcome
|
|
866
|
+
* carries what was true instead.
|
|
867
|
+
*/
|
|
868
|
+
waitFor(condition: WaitCondition, timeoutMs?: number): Promise<WaitOutcome>;
|
|
869
|
+
/** Look once: is the condition true right now? */
|
|
870
|
+
private check;
|
|
871
|
+
/**
|
|
872
|
+
* Everything this session has accumulated, in one reading.
|
|
873
|
+
*
|
|
874
|
+
* Emulation, interception and dialog policy all change what
|
|
875
|
+
* every other reading means, and none of them is visible in
|
|
876
|
+
* those readings, so they are gathered here.
|
|
877
|
+
*/
|
|
878
|
+
status(): Promise<SessionStatus>;
|
|
879
|
+
/** How the network is currently being bent. */
|
|
880
|
+
get shaping(): {
|
|
881
|
+
rules: readonly NetworkRule[];
|
|
882
|
+
throttle: ThrottleConditions | undefined;
|
|
883
|
+
};
|
|
884
|
+
/**
|
|
885
|
+
* What the page has announced since a cursor, with the cursor
|
|
886
|
+
* to read from next time and how many were dropped.
|
|
887
|
+
*/
|
|
888
|
+
heard(since?: number): Promise<{
|
|
889
|
+
entries: readonly Recorded<Announcement>[];
|
|
890
|
+
cursor: number;
|
|
891
|
+
dropped: number;
|
|
892
|
+
}>;
|
|
893
|
+
/** Close the tab and the context holding its state. */
|
|
894
|
+
close(): Promise<void>;
|
|
895
|
+
/**
|
|
896
|
+
* Everything worth knowing about one element.
|
|
897
|
+
*
|
|
898
|
+
* Each fact is asked of the browser rather than worked out
|
|
899
|
+
* here: the box from the layout engine, the occluder from a
|
|
900
|
+
* hit test, the styles from the cascade, the announcement from
|
|
901
|
+
* the accessibility tree.
|
|
902
|
+
*/
|
|
903
|
+
inspect(target: Target, options?: InspectOptions): Promise<InspectResult>;
|
|
904
|
+
/**
|
|
905
|
+
* Which fonts the browser actually painted with.
|
|
906
|
+
*
|
|
907
|
+
* A computed style reports the stack that was asked for, not
|
|
908
|
+
* what was used. "SF Pro, Helvetica, sans-serif" reads the same
|
|
909
|
+
* whether the first one loaded or the page quietly fell back to
|
|
910
|
+
* the third, which is most of the answer to why a screenshot
|
|
911
|
+
* from one machine does not match another.
|
|
912
|
+
*/
|
|
913
|
+
private fontsOf;
|
|
914
|
+
/**
|
|
915
|
+
* The element's own words, and the attributes it carries.
|
|
916
|
+
*
|
|
917
|
+
* The accessible name answers what a control is called, which
|
|
918
|
+
* is a different question from what it says. A counter reading
|
|
919
|
+
* "42", a status reading "3 items updated" and an input holding
|
|
920
|
+
* a typed email all have names that say none of that, so
|
|
921
|
+
* asserting on them meant dropping to a raw evaluate. Data
|
|
922
|
+
* attributes are here for the same reason: teams hang test
|
|
923
|
+
* state on them, and the accessibility tree cannot see them.
|
|
924
|
+
*/
|
|
925
|
+
private contentOf;
|
|
926
|
+
/**
|
|
927
|
+
* A handle on the element inside this session.
|
|
928
|
+
*
|
|
929
|
+
* Object identifiers belong to the protocol session that
|
|
930
|
+
* minted them, so puppeteer's own handles are unusable here.
|
|
931
|
+
* A backend node id is the identity both sides agree on.
|
|
932
|
+
*/
|
|
933
|
+
private objectFor;
|
|
934
|
+
/**
|
|
935
|
+
* Swap a text node for the element that paints it.
|
|
936
|
+
*
|
|
937
|
+
* A `StaticText` target resolves to a text node, which is right
|
|
938
|
+
* for reading its box and wrong for everything that touches
|
|
939
|
+
* style. Returns the original handle when it is already an
|
|
940
|
+
* element, so callers can promote unconditionally.
|
|
941
|
+
*/
|
|
942
|
+
private paintingElement;
|
|
943
|
+
/** Let go of a handle, whether or not the page still has it. */
|
|
944
|
+
private release;
|
|
945
|
+
/** Gather every fact about an element the browser will give. */
|
|
946
|
+
private inspectNode;
|
|
947
|
+
/**
|
|
948
|
+
* Photograph the page, or one element of it.
|
|
949
|
+
*
|
|
950
|
+
* Images never come back inline: a screenshot is far larger
|
|
951
|
+
* than any response budget and would crowd out the reading it
|
|
952
|
+
* was meant to illustrate. They go to the session's bundle
|
|
953
|
+
* directory and the answer carries the paths.
|
|
954
|
+
*
|
|
955
|
+
* A full-page capture is tiled, because a long page makes an
|
|
956
|
+
* image taller than a model will accept. The tiling and its
|
|
957
|
+
* ceiling are the ones web_read already uses, so a page reads
|
|
958
|
+
* the same either way.
|
|
959
|
+
*/
|
|
960
|
+
shoot(options?: ShotOptions): Promise<ShotResult>;
|
|
961
|
+
/** Force or release a state for the duration of a capture. */
|
|
962
|
+
private holdState;
|
|
963
|
+
/** Take the picture and write it out. */
|
|
964
|
+
private capture;
|
|
965
|
+
/**
|
|
966
|
+
* Compare the page now against a baseline of it, or record
|
|
967
|
+
* one when there is none.
|
|
968
|
+
*
|
|
969
|
+
* A missing baseline is not a failure. The first run of any
|
|
970
|
+
* comparison has nothing to compare against, and refusing
|
|
971
|
+
* would make the tool need a setup step it can perform itself.
|
|
972
|
+
*
|
|
973
|
+
* The elements are read after the shot rather than before, so
|
|
974
|
+
* a region is attributed against the layout that was actually
|
|
975
|
+
* photographed.
|
|
976
|
+
*/
|
|
977
|
+
compareToBaseline(label: string, options?: {
|
|
978
|
+
readonly update?: boolean;
|
|
979
|
+
readonly threshold?: number;
|
|
980
|
+
}): Promise<{
|
|
981
|
+
readonly comparison: Comparison | undefined;
|
|
982
|
+
readonly recorded?: string;
|
|
983
|
+
readonly artifacts: readonly string[];
|
|
984
|
+
}>;
|
|
985
|
+
/**
|
|
986
|
+
* Where this session's baselines live.
|
|
987
|
+
*
|
|
988
|
+
* Under the data directory, not the bundle root. This used to
|
|
989
|
+
* sit at BUNDLE_ROOT/baselines, which the bundle reaper treats
|
|
990
|
+
* as an ownerless directory (the name is not a pid) and deletes
|
|
991
|
+
* once it is six hours old. Writing a baseline touches the
|
|
992
|
+
* session subdirectory rather than its parent, so the parent's
|
|
993
|
+
* age kept climbing and a stable set of baselines was reaped on
|
|
994
|
+
* a timer. The next comparison then found nothing, recorded the
|
|
995
|
+
* current page as truth and reported a warning, which is data
|
|
996
|
+
* loss wearing a first run's clothes.
|
|
997
|
+
*
|
|
998
|
+
* A baseline is a durable artifact the user asked for and may
|
|
999
|
+
* want to look at, which is what dataDir is for.
|
|
1000
|
+
*/
|
|
1001
|
+
private baselineDir;
|
|
1002
|
+
/**
|
|
1003
|
+
* What a baseline was taken under, stored beside the image.
|
|
1004
|
+
*
|
|
1005
|
+
* Without this a comparison cannot tell a regression from a
|
|
1006
|
+
* change of subject: record on one page, navigate to another,
|
|
1007
|
+
* and the diff reports confident failures attributed to the
|
|
1008
|
+
* second page's elements. The size check alone cannot see it,
|
|
1009
|
+
* because two pages at one viewport are the same size.
|
|
1010
|
+
*/
|
|
1011
|
+
private provenance;
|
|
1012
|
+
/** Carry out an action against an element judged ready. */
|
|
1013
|
+
private perform;
|
|
1014
|
+
/**
|
|
1015
|
+
* Wait until an element can actually be acted on.
|
|
1016
|
+
*
|
|
1017
|
+
* A click on an element that is not ready does nothing and
|
|
1018
|
+
* says nothing, leaving a caller believing the page was acted
|
|
1019
|
+
* on. So readiness is established first, and when the budget
|
|
1020
|
+
* runs out the condition still in the way is reported rather
|
|
1021
|
+
* than the action being attempted regardless.
|
|
1022
|
+
*/
|
|
1023
|
+
private awaitReady;
|
|
1024
|
+
/** One look at whether an element is ready. */
|
|
1025
|
+
private readinessOf;
|
|
1026
|
+
/**
|
|
1027
|
+
* Whether something is painted over the element's centre.
|
|
1028
|
+
*
|
|
1029
|
+
* Only the centre, unlike a full inspection: this runs on
|
|
1030
|
+
* every poll, and the centre is where a click is aimed.
|
|
1031
|
+
*/
|
|
1032
|
+
private coveredAtCentre;
|
|
1033
|
+
/** What is listening on the element. */
|
|
1034
|
+
private listenersOf;
|
|
1035
|
+
/**
|
|
1036
|
+
* What is listening further up, which events from here reach.
|
|
1037
|
+
*
|
|
1038
|
+
* The protocol reads listeners off one object at a time and can
|
|
1039
|
+
* walk down into children but not up, so the ancestors are
|
|
1040
|
+
* collected in the page and each one asked separately. A live
|
|
1041
|
+
* button whose click was handled on the body reported nothing
|
|
1042
|
+
* listening, which is the answer that most invites the wrong
|
|
1043
|
+
* conclusion from an inspection meant to explain a dead click.
|
|
1044
|
+
*/
|
|
1045
|
+
private delegatedTo;
|
|
1046
|
+
/** Ask each ancestor in the array what is listening on it. */
|
|
1047
|
+
private listenersUp;
|
|
1048
|
+
/** What is moving on the element. */
|
|
1049
|
+
private animationsOf;
|
|
1050
|
+
/**
|
|
1051
|
+
* How the element looks in each state, against how it looks at
|
|
1052
|
+
* rest.
|
|
1053
|
+
*
|
|
1054
|
+
* The forced state is always released afterwards, including
|
|
1055
|
+
* when a reading throws part way through. Leaving a page stuck
|
|
1056
|
+
* in a forced hover would quietly corrupt every later
|
|
1057
|
+
* observation of it.
|
|
1058
|
+
*/
|
|
1059
|
+
private variantsOf;
|
|
1060
|
+
/**
|
|
1061
|
+
* Let whatever the forced state started finish before reading.
|
|
1062
|
+
*
|
|
1063
|
+
* Without this the reading catches a transition at its resting
|
|
1064
|
+
* values and reports that the state changes nothing, which is
|
|
1065
|
+
* exactly backwards.
|
|
1066
|
+
*/
|
|
1067
|
+
private settleForcedState;
|
|
1068
|
+
/** The front-end node id, which the CSS agent works in. */
|
|
1069
|
+
private frontendNodeFor;
|
|
1070
|
+
/** The element's four boxes, or nothing when it has none. */
|
|
1071
|
+
private boxOf;
|
|
1072
|
+
/** Every computed property of the element, as the browser has it. */
|
|
1073
|
+
private stylesOf;
|
|
1074
|
+
/**
|
|
1075
|
+
* What every property computes to untouched, read once per
|
|
1076
|
+
* session. These decide which values were actually chosen.
|
|
1077
|
+
*/
|
|
1078
|
+
private initials;
|
|
1079
|
+
/** Why one property has the value it has. */
|
|
1080
|
+
private traceOf;
|
|
1081
|
+
/**
|
|
1082
|
+
* Tell each declaration in a trace where it was written.
|
|
1083
|
+
*
|
|
1084
|
+
* A build step that rewrote the CSS makes the reported line
|
|
1085
|
+
* useless in the same way a minified stack frame is: it names
|
|
1086
|
+
* a file nobody edits. The winner is usually the declaration
|
|
1087
|
+
* somebody wants to go and change, so it is the one that most
|
|
1088
|
+
* needs an address that exists.
|
|
1089
|
+
*/
|
|
1090
|
+
private authorTrace;
|
|
1091
|
+
/** The area a person can currently see. */
|
|
1092
|
+
private viewport;
|
|
1093
|
+
/**
|
|
1094
|
+
* How far the page has been scrolled, in CSS pixels.
|
|
1095
|
+
*
|
|
1096
|
+
* Read from the browser's own layout metrics rather than from the
|
|
1097
|
+
* page, so a capture does not have to run script to be correct.
|
|
1098
|
+
* Answers zero when the metrics are unavailable, which is what the
|
|
1099
|
+
* offset was assumed to be before it was asked for at all.
|
|
1100
|
+
*/
|
|
1101
|
+
private scrollOffset;
|
|
1102
|
+
/**
|
|
1103
|
+
* What is painted over the element, if anything.
|
|
1104
|
+
*
|
|
1105
|
+
* The centre and the corners, since a full inspection should
|
|
1106
|
+
* report an element clipped at one edge. Anything the element
|
|
1107
|
+
* contains counts as itself, since a click there still reaches
|
|
1108
|
+
* it.
|
|
1109
|
+
*/
|
|
1110
|
+
private occluderOf;
|
|
1111
|
+
/**
|
|
1112
|
+
* Who receives a click, when it is not us.
|
|
1113
|
+
*
|
|
1114
|
+
* The point is chosen inside the page rather than out here. Both
|
|
1115
|
+
* halves of the question used to be asked separately, the box
|
|
1116
|
+
* from the box model and the hit from `DOM.getNodeForLocation`,
|
|
1117
|
+
* and they disagree by the scroll offset, so anything the driver
|
|
1118
|
+
* had to scroll to was reported as covered by whatever sat at
|
|
1119
|
+
* the wrong point.
|
|
1120
|
+
*/
|
|
1121
|
+
private hitTest;
|
|
1122
|
+
private resolve;
|
|
1123
|
+
/**
|
|
1124
|
+
* The backend node id behind a handle, or undefined if it has gone.
|
|
1125
|
+
*
|
|
1126
|
+
* This asks puppeteer rather than sending DOM.describeNode ourselves
|
|
1127
|
+
* because a remote object id is scoped to the session that minted it,
|
|
1128
|
+
* and these handles were minted by puppeteer's session, not ours.
|
|
1129
|
+
* Resolving them through this.cdp fails for every handle, which reads
|
|
1130
|
+
* as "no candidate matched" and refuses every act.
|
|
1131
|
+
*/
|
|
1132
|
+
private backendIdOf;
|
|
1133
|
+
private axTree;
|
|
1134
|
+
/**
|
|
1135
|
+
* Each same-origin child frame's tree, and what owns it.
|
|
1136
|
+
*
|
|
1137
|
+
* Chrome answers for one frame at a time, so a page built from
|
|
1138
|
+
* embeds read as a row of empty boxes: the outline stopped at
|
|
1139
|
+
* the Iframe node and said nothing about stopping. Everything
|
|
1140
|
+
* downstream inherited that, so a keyboard walk skipped an
|
|
1141
|
+
* embedded form and an audit passed a page it had not seen.
|
|
1142
|
+
*
|
|
1143
|
+
* Breadth-first, parents before children, because the splice
|
|
1144
|
+
* attaches each frame to an owner that must already be in the
|
|
1145
|
+
* tree by the time its turn comes.
|
|
1146
|
+
*
|
|
1147
|
+
* A frame that cannot be read is left out rather than reported
|
|
1148
|
+
* as empty. Cross-origin frames are the common case and are a
|
|
1149
|
+
* real limit, not a fault; the count of what could not be read
|
|
1150
|
+
* belongs to the callers that already report it.
|
|
1151
|
+
*/
|
|
1152
|
+
private frameTrees;
|
|
1153
|
+
}
|