@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,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Running a check under several conditions at once.
|
|
3
|
+
*
|
|
4
|
+
* Most layout and contrast faults are conditional. A page is
|
|
5
|
+
* fine at 1280 and unusable at 375; a colour pair passes in
|
|
6
|
+
* light and fails in dark. Checking one condition and reporting
|
|
7
|
+
* a pass is how those ship.
|
|
8
|
+
*
|
|
9
|
+
* The table comes first and the detail second, because the
|
|
10
|
+
* useful question is almost never "what is wrong" but "where
|
|
11
|
+
* does it start going wrong". A run of passes ending in two
|
|
12
|
+
* failures at the narrow end says more than either verdict does
|
|
13
|
+
* alone.
|
|
14
|
+
*/
|
|
15
|
+
import { renderVerdict } from "./verdict.js";
|
|
16
|
+
/** The worst standing among several. */
|
|
17
|
+
export function worstOf(standings) {
|
|
18
|
+
if (standings.includes("fail"))
|
|
19
|
+
return "fail";
|
|
20
|
+
return standings.includes("warn") ? "warn" : "pass";
|
|
21
|
+
}
|
|
22
|
+
const MARK = {
|
|
23
|
+
pass: "pass",
|
|
24
|
+
warn: "warn",
|
|
25
|
+
fail: "FAIL",
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Say where a sweep started going wrong.
|
|
29
|
+
*
|
|
30
|
+
* Conditions are reported in the order they were run, never
|
|
31
|
+
* sorted by severity, because their order is the finding: a
|
|
32
|
+
* table that reads pass, pass, fail, fail names a breakpoint,
|
|
33
|
+
* and the same rows sorted worst-first name nothing.
|
|
34
|
+
*/
|
|
35
|
+
export function renderSweep(conditions, options = {}) {
|
|
36
|
+
if (conditions.length === 0) {
|
|
37
|
+
return renderVerdict({ standing: "warn", headline: "No conditions were swept." }, "");
|
|
38
|
+
}
|
|
39
|
+
if (options.only) {
|
|
40
|
+
const found = conditions.find((condition) => condition.label === options.only);
|
|
41
|
+
return found
|
|
42
|
+
? found.detail
|
|
43
|
+
: `Nothing was run at '${options.only}'. Ran: ${conditions
|
|
44
|
+
.map((condition) => condition.label)
|
|
45
|
+
.join(", ")}.`;
|
|
46
|
+
}
|
|
47
|
+
const standing = worstOf(conditions.map((condition) => condition.standing));
|
|
48
|
+
const failing = conditions.filter((condition) => condition.standing === "fail");
|
|
49
|
+
const width = Math.max(...conditions.map((condition) => condition.label.length));
|
|
50
|
+
const rows = conditions.map((condition) => ` ${condition.label.padEnd(width)} ${MARK[condition.standing].padEnd(4)} ${condition.headline}`);
|
|
51
|
+
return renderVerdict({
|
|
52
|
+
standing,
|
|
53
|
+
headline: headlineFor(conditions, failing),
|
|
54
|
+
measured: `Ran the same check under ${conditions.length} conditions.`,
|
|
55
|
+
}, [...rows, "", "Name a condition to see its report in full."].join("\n"));
|
|
56
|
+
}
|
|
57
|
+
function headlineFor(conditions, failing) {
|
|
58
|
+
if (failing.length === 0) {
|
|
59
|
+
const warned = conditions.filter((condition) => condition.standing === "warn");
|
|
60
|
+
return warned.length === 0
|
|
61
|
+
? `Clean under all ${conditions.length} conditions.`
|
|
62
|
+
: `Nothing failed, but ${warned.length} of ${conditions.length} ` +
|
|
63
|
+
"conditions raised something.";
|
|
64
|
+
}
|
|
65
|
+
if (failing.length === conditions.length) {
|
|
66
|
+
return `Fails under all ${conditions.length} conditions.`;
|
|
67
|
+
}
|
|
68
|
+
// Naming the boundary is the point of sweeping at all.
|
|
69
|
+
return `Fails at ${listOf(failing.map((condition) => condition.label))}, and passes elsewhere.`;
|
|
70
|
+
}
|
|
71
|
+
/** Join names the way a person would say them aloud. */
|
|
72
|
+
function listOf(names) {
|
|
73
|
+
if (names.length <= 1)
|
|
74
|
+
return names[0] ?? "";
|
|
75
|
+
return `${names.slice(0, -1).join(", ")} and ${names.at(-1)}`;
|
|
76
|
+
}
|
|
77
|
+
/** The widths a sweep uses when the caller names none. */
|
|
78
|
+
export const DEFAULT_WIDTHS = [375, 768, 1280, 1920];
|
|
79
|
+
/** Turn a list of widths into conditions to sweep. */
|
|
80
|
+
export function widthsToSweep(widths = DEFAULT_WIDTHS) {
|
|
81
|
+
return widths.map((width) => ({
|
|
82
|
+
label: `${width}px`,
|
|
83
|
+
setting: { width },
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Read a verdict's standing back out of a rendered report.
|
|
88
|
+
*
|
|
89
|
+
* A report that carries no verdict head reads as "warn", never
|
|
90
|
+
* "pass". This defaulted to pass once, and because two drill-down
|
|
91
|
+
* renderers returned bare prose, a swept rule query reported PASS
|
|
92
|
+
* at every width while the named rule was failing at all of them.
|
|
93
|
+
* Approval is the one answer a parser must never invent: prefer
|
|
94
|
+
* the standing a caller passes as data, and treat this as the
|
|
95
|
+
* fallback for prose we did not produce.
|
|
96
|
+
*/
|
|
97
|
+
export function standingOf(report) {
|
|
98
|
+
if (report.startsWith("FAIL"))
|
|
99
|
+
return "fail";
|
|
100
|
+
if (report.startsWith("PASS"))
|
|
101
|
+
return "pass";
|
|
102
|
+
return "warn";
|
|
103
|
+
}
|
|
104
|
+
/** Read a verdict's headline back out of a rendered report. */
|
|
105
|
+
export function headlineOf(report) {
|
|
106
|
+
const first = report.split("\n")[0] ?? "";
|
|
107
|
+
return first.replace(/^(PASS|WARN|FAIL)\s+/, "");
|
|
108
|
+
}
|
|
109
|
+
/** Build a condition from a rendered report. */
|
|
110
|
+
export function conditionFrom(label, report) {
|
|
111
|
+
return {
|
|
112
|
+
label,
|
|
113
|
+
standing: standingOf(report),
|
|
114
|
+
headline: headlineOf(report),
|
|
115
|
+
detail: report,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Judging how big a thing you have to hit is.
|
|
3
|
+
*
|
|
4
|
+
* WCAG 2.2 added Target Size (Minimum) at 24 by 24 CSS pixels,
|
|
5
|
+
* and it is more interesting than a measurement because of its
|
|
6
|
+
* exceptions. A small target sitting in open space passes; the
|
|
7
|
+
* same target crowded against its neighbours does not. Checking
|
|
8
|
+
* the size and skipping the spacing rule would fail links in
|
|
9
|
+
* prose and pass a row of cramped icon buttons, which is
|
|
10
|
+
* precisely backwards.
|
|
11
|
+
*/
|
|
12
|
+
import type { Rect } from "../element/box.js";
|
|
13
|
+
import type { A11yFinding } from "./axe.js";
|
|
14
|
+
/**
|
|
15
|
+
* Something a person is expected to hit.
|
|
16
|
+
*
|
|
17
|
+
* Named for the criterion rather than called a Target, because
|
|
18
|
+
* a target elsewhere in this library is an element named by
|
|
19
|
+
* role and accessible name so it can be acted on. Two meanings
|
|
20
|
+
* for one word in one library is a trap worth avoiding.
|
|
21
|
+
*/
|
|
22
|
+
export interface HitTarget {
|
|
23
|
+
readonly id: string;
|
|
24
|
+
readonly rect: Rect;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the target sits in a line of text, which the
|
|
27
|
+
* specification excepts outright. Inline is a fact about
|
|
28
|
+
* layout and must come from the browser, never from a guess
|
|
29
|
+
* about the element's tag.
|
|
30
|
+
*/
|
|
31
|
+
readonly inline?: boolean;
|
|
32
|
+
/** Whether the browser, not the page, decides its size. */
|
|
33
|
+
readonly userAgentControlled?: boolean;
|
|
34
|
+
/** Whether the page offers the same action somewhere bigger. */
|
|
35
|
+
readonly hasLargerAlternative?: boolean;
|
|
36
|
+
/** Whether this exact size is essential to what it does. */
|
|
37
|
+
readonly essential?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** 2.5.8 Target Size (Minimum), level AA. */
|
|
40
|
+
export declare const MINIMUM_TARGET_PX = 24;
|
|
41
|
+
/** 2.5.5 Target Size (Enhanced), level AAA. */
|
|
42
|
+
export declare const ENHANCED_TARGET_PX = 44;
|
|
43
|
+
/** Which of the two target-size criteria is being applied. */
|
|
44
|
+
export type TargetLevel = "AA" | "AAA";
|
|
45
|
+
/** Why an undersized target is nonetheless allowed. */
|
|
46
|
+
export type TargetException = "inline" | "user-agent" | "alternative" | "essential" | "spacing";
|
|
47
|
+
/** What was concluded about one target. */
|
|
48
|
+
export interface TargetVerdict {
|
|
49
|
+
readonly id: string;
|
|
50
|
+
readonly width: number;
|
|
51
|
+
readonly height: number;
|
|
52
|
+
readonly required: number;
|
|
53
|
+
readonly passes: boolean;
|
|
54
|
+
/** Present when it is undersized but excepted. */
|
|
55
|
+
readonly exception?: TargetException;
|
|
56
|
+
/** What it is crowded by, when spacing is what failed it. */
|
|
57
|
+
readonly crowdedBy?: readonly string[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Judge one target against its neighbours.
|
|
61
|
+
*
|
|
62
|
+
* The order of the exceptions follows the specification: the
|
|
63
|
+
* outright ones are checked before the spacing rule, since a
|
|
64
|
+
* target that is excepted for being inline is never measured
|
|
65
|
+
* against its neighbours at all.
|
|
66
|
+
*/
|
|
67
|
+
export declare function judgeTarget(target: HitTarget, neighbours: readonly HitTarget[], level?: TargetLevel): TargetVerdict;
|
|
68
|
+
/** Judge every target against every other. */
|
|
69
|
+
export declare function judgeTargets(targets: readonly HitTarget[], level?: TargetLevel): readonly TargetVerdict[];
|
|
70
|
+
/** Say what the target sweep found. */
|
|
71
|
+
export declare function renderTargets(verdicts: readonly TargetVerdict[]): string;
|
|
72
|
+
/**
|
|
73
|
+
* A captured target, as the page reports it.
|
|
74
|
+
*
|
|
75
|
+
* Carries the selector alongside the facts the judgment needs,
|
|
76
|
+
* so a finding can point at something a reader can find.
|
|
77
|
+
*/
|
|
78
|
+
export interface CapturedTarget extends HitTarget {
|
|
79
|
+
readonly selector: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Turn target verdicts into findings, so they merge with the
|
|
83
|
+
* rest of the accessibility report instead of living apart.
|
|
84
|
+
*
|
|
85
|
+
* Failures are violations of a real criterion. An excepted
|
|
86
|
+
* target is not reported at all: the exception is the criterion
|
|
87
|
+
* working as written, not a thing to look at.
|
|
88
|
+
*/
|
|
89
|
+
export declare function targetFindings(targets: readonly CapturedTarget[], level?: TargetLevel): readonly A11yFinding[];
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Judging how big a thing you have to hit is.
|
|
3
|
+
*
|
|
4
|
+
* WCAG 2.2 added Target Size (Minimum) at 24 by 24 CSS pixels,
|
|
5
|
+
* and it is more interesting than a measurement because of its
|
|
6
|
+
* exceptions. A small target sitting in open space passes; the
|
|
7
|
+
* same target crowded against its neighbours does not. Checking
|
|
8
|
+
* the size and skipping the spacing rule would fail links in
|
|
9
|
+
* prose and pass a row of cramped icon buttons, which is
|
|
10
|
+
* precisely backwards.
|
|
11
|
+
*/
|
|
12
|
+
/** 2.5.8 Target Size (Minimum), level AA. */
|
|
13
|
+
export const MINIMUM_TARGET_PX = 24;
|
|
14
|
+
/** 2.5.5 Target Size (Enhanced), level AAA. */
|
|
15
|
+
export const ENHANCED_TARGET_PX = 44;
|
|
16
|
+
function centre(rect) {
|
|
17
|
+
return { x: rect.x + rect.width / 2, y: rect.y + rect.height / 2 };
|
|
18
|
+
}
|
|
19
|
+
/** Whether a target is under the size the rule asks for. */
|
|
20
|
+
function undersized(target, required) {
|
|
21
|
+
return target.rect.width < required || target.rect.height < required;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Whether an undersized target's circle clashes with a
|
|
25
|
+
* neighbour.
|
|
26
|
+
*
|
|
27
|
+
* The rule is two rules wearing one name. An undersized
|
|
28
|
+
* target's circle must not intersect another target, meaning
|
|
29
|
+
* that target's actual box, and must not intersect the circle
|
|
30
|
+
* of another undersized target. Treating every neighbour as a
|
|
31
|
+
* circle passes a small control sitting hard against the edge
|
|
32
|
+
* of a large one, which is exactly the crowding the criterion
|
|
33
|
+
* exists to catch.
|
|
34
|
+
*/
|
|
35
|
+
function clashes(target, other, required) {
|
|
36
|
+
const radius = required / 2;
|
|
37
|
+
const from = centre(target.rect);
|
|
38
|
+
if (undersized(other, required)) {
|
|
39
|
+
const to = centre(other.rect);
|
|
40
|
+
return Math.hypot(from.x - to.x, from.y - to.y) < required;
|
|
41
|
+
}
|
|
42
|
+
// Against a full-size neighbour it is the circle against that
|
|
43
|
+
// neighbour's box: the nearest point of the box to the centre.
|
|
44
|
+
const nearestX = Math.max(other.rect.x, Math.min(from.x, other.rect.x + other.rect.width));
|
|
45
|
+
const nearestY = Math.max(other.rect.y, Math.min(from.y, other.rect.y + other.rect.height));
|
|
46
|
+
return Math.hypot(from.x - nearestX, from.y - nearestY) < radius;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Judge one target against its neighbours.
|
|
50
|
+
*
|
|
51
|
+
* The order of the exceptions follows the specification: the
|
|
52
|
+
* outright ones are checked before the spacing rule, since a
|
|
53
|
+
* target that is excepted for being inline is never measured
|
|
54
|
+
* against its neighbours at all.
|
|
55
|
+
*/
|
|
56
|
+
export function judgeTarget(target, neighbours, level = "AA") {
|
|
57
|
+
const required = level === "AAA" ? ENHANCED_TARGET_PX : MINIMUM_TARGET_PX;
|
|
58
|
+
const { width, height } = target.rect;
|
|
59
|
+
const base = { id: target.id, width, height, required };
|
|
60
|
+
if (width >= required && height >= required) {
|
|
61
|
+
return { ...base, passes: true };
|
|
62
|
+
}
|
|
63
|
+
// The outright exceptions do not care about the neighbours.
|
|
64
|
+
const excepted = outrightException(target);
|
|
65
|
+
if (excepted)
|
|
66
|
+
return { ...base, passes: true, exception: excepted };
|
|
67
|
+
// Enhanced has no spacing exception; it is a plain minimum.
|
|
68
|
+
if (level === "AAA")
|
|
69
|
+
return { ...base, passes: false };
|
|
70
|
+
const crowdedBy = neighbours
|
|
71
|
+
.filter((other) => other.id !== target.id)
|
|
72
|
+
.filter((other) => clashes(target, other, required))
|
|
73
|
+
.map((other) => other.id);
|
|
74
|
+
if (crowdedBy.length === 0) {
|
|
75
|
+
return { ...base, passes: true, exception: "spacing" };
|
|
76
|
+
}
|
|
77
|
+
return { ...base, passes: false, crowdedBy };
|
|
78
|
+
}
|
|
79
|
+
function outrightException(target) {
|
|
80
|
+
if (target.inline)
|
|
81
|
+
return "inline";
|
|
82
|
+
if (target.userAgentControlled)
|
|
83
|
+
return "user-agent";
|
|
84
|
+
if (target.hasLargerAlternative)
|
|
85
|
+
return "alternative";
|
|
86
|
+
if (target.essential)
|
|
87
|
+
return "essential";
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
/** Judge every target against every other. */
|
|
91
|
+
export function judgeTargets(targets, level = "AA") {
|
|
92
|
+
return targets.map((target) => judgeTarget(target, targets, level));
|
|
93
|
+
}
|
|
94
|
+
/** How many failures to name before summarising the rest. */
|
|
95
|
+
const MAX_NAMED = 10;
|
|
96
|
+
/** Say what the target sweep found. */
|
|
97
|
+
export function renderTargets(verdicts) {
|
|
98
|
+
if (verdicts.length === 0)
|
|
99
|
+
return "No targets to measure.";
|
|
100
|
+
const failed = verdicts.filter((verdict) => !verdict.passes);
|
|
101
|
+
const excepted = verdicts.filter((verdict) => verdict.exception);
|
|
102
|
+
const required = verdicts[0]?.required ?? MINIMUM_TARGET_PX;
|
|
103
|
+
if (failed.length === 0) {
|
|
104
|
+
const tail = excepted.length === 0
|
|
105
|
+
? ""
|
|
106
|
+
: ` ${excepted.length} were under ${required} pixels but excepted.`;
|
|
107
|
+
return `All ${verdicts.length} targets meet ${required} by ${required}.${tail}`;
|
|
108
|
+
}
|
|
109
|
+
const lines = [
|
|
110
|
+
`${failed.length} of ${verdicts.length} targets are smaller than ` +
|
|
111
|
+
`${required} by ${required} with nothing excepting them.`,
|
|
112
|
+
"",
|
|
113
|
+
];
|
|
114
|
+
for (const verdict of failed.slice(0, MAX_NAMED)) {
|
|
115
|
+
const size = `${round(verdict.width)} by ${round(verdict.height)}`;
|
|
116
|
+
const crowd = verdict.crowdedBy && verdict.crowdedBy.length > 0
|
|
117
|
+
? `, crowded by ${verdict.crowdedBy.join(", ")}`
|
|
118
|
+
: "";
|
|
119
|
+
lines.push(` ${verdict.id} ${size}${crowd}`);
|
|
120
|
+
}
|
|
121
|
+
if (failed.length > MAX_NAMED) {
|
|
122
|
+
lines.push(` ... and ${failed.length - MAX_NAMED} more`);
|
|
123
|
+
}
|
|
124
|
+
return lines.join("\n");
|
|
125
|
+
}
|
|
126
|
+
function round(value) {
|
|
127
|
+
return Math.round(value * 10) / 10;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Turn target verdicts into findings, so they merge with the
|
|
131
|
+
* rest of the accessibility report instead of living apart.
|
|
132
|
+
*
|
|
133
|
+
* Failures are violations of a real criterion. An excepted
|
|
134
|
+
* target is not reported at all: the exception is the criterion
|
|
135
|
+
* working as written, not a thing to look at.
|
|
136
|
+
*/
|
|
137
|
+
export function targetFindings(targets, level = "AA") {
|
|
138
|
+
const byId = new Map(targets.map((target) => [target.id, target]));
|
|
139
|
+
const failed = judgeTargets(targets, level).filter((verdict) => !verdict.passes);
|
|
140
|
+
if (failed.length === 0)
|
|
141
|
+
return [];
|
|
142
|
+
const required = failed[0]?.required ?? MINIMUM_TARGET_PX;
|
|
143
|
+
return [
|
|
144
|
+
{
|
|
145
|
+
rule: "target-is-big-enough",
|
|
146
|
+
kind: "violation",
|
|
147
|
+
impact: "serious",
|
|
148
|
+
authority: "wcag",
|
|
149
|
+
criteria: [level === "AAA" ? "2.5.5" : "2.5.8"],
|
|
150
|
+
levels: [level],
|
|
151
|
+
help: `A pointer target smaller than ${required} by ${required} ` +
|
|
152
|
+
"pixels, with no larger alternative and not enough clear " +
|
|
153
|
+
"space around it to be excepted.",
|
|
154
|
+
nodes: failed.map((verdict) => ({
|
|
155
|
+
selector: byId.get(verdict.id)?.selector ?? verdict.id,
|
|
156
|
+
html: "",
|
|
157
|
+
messages: [
|
|
158
|
+
`Measured ${Math.round(verdict.width)} by ` +
|
|
159
|
+
`${Math.round(verdict.height)} pixels` +
|
|
160
|
+
(verdict.crowdedBy && verdict.crowdedBy.length > 0
|
|
161
|
+
? `, and too close to ${verdict.crowdedBy.length} other ` +
|
|
162
|
+
`${verdict.crowdedBy.length === 1 ? "target" : "targets"} to be excepted for spacing.`
|
|
163
|
+
: "."),
|
|
164
|
+
],
|
|
165
|
+
})),
|
|
166
|
+
},
|
|
167
|
+
];
|
|
168
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one line every check answers with.
|
|
3
|
+
*
|
|
4
|
+
* Five kinds of check produce five shapes of evidence, and a
|
|
5
|
+
* reader should not have to learn five ways of asking "is this
|
|
6
|
+
* all right". Every one of them now opens with the same three
|
|
7
|
+
* words and the same headline.
|
|
8
|
+
*
|
|
9
|
+
* A clean result reports what was measured rather than saying
|
|
10
|
+
* nothing. "No violations" and "no violations across 340
|
|
11
|
+
* elements and 91 rules" are the same verdict and very different
|
|
12
|
+
* reassurances: the first is what a broken checker also says.
|
|
13
|
+
*/
|
|
14
|
+
/** How a check came out. */
|
|
15
|
+
export type Standing = "pass" | "warn" | "fail";
|
|
16
|
+
/**
|
|
17
|
+
* Say a count with the noun that agrees with it.
|
|
18
|
+
*
|
|
19
|
+
* Lives with the verdict rather than in one report, because every
|
|
20
|
+
* check writes these sentences and "1 stops are hard to follow"
|
|
21
|
+
* is the kind of thing that makes a reader trust the numbers less
|
|
22
|
+
* than they should.
|
|
23
|
+
*/
|
|
24
|
+
export declare function count(many: number, one: string, plural?: string): string;
|
|
25
|
+
/** The verb that agrees with a count, for the same reason. */
|
|
26
|
+
export declare function wasWere(many: number): string;
|
|
27
|
+
/** The head of any check's answer. */
|
|
28
|
+
export interface Verdict {
|
|
29
|
+
readonly standing: Standing;
|
|
30
|
+
/** One line, said plainly, with the numbers behind it. */
|
|
31
|
+
readonly headline: string;
|
|
32
|
+
/** What was looked at, so a clean pass is not a shrug. */
|
|
33
|
+
readonly measured?: string;
|
|
34
|
+
}
|
|
35
|
+
/** Put a verdict at the head of a report. */
|
|
36
|
+
export declare function renderVerdict(verdict: Verdict, body: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Whether anything found was severe enough to fail.
|
|
39
|
+
*
|
|
40
|
+
* A thing nobody could decide is a warning, never a pass. That
|
|
41
|
+
* is the whole reason it is reported separately: an automated
|
|
42
|
+
* check that turns its own uncertainty into approval is worse
|
|
43
|
+
* than no check.
|
|
44
|
+
*/
|
|
45
|
+
export declare function standingFor(counts: {
|
|
46
|
+
readonly failures: number;
|
|
47
|
+
readonly warnings: number;
|
|
48
|
+
}): Standing;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one line every check answers with.
|
|
3
|
+
*
|
|
4
|
+
* Five kinds of check produce five shapes of evidence, and a
|
|
5
|
+
* reader should not have to learn five ways of asking "is this
|
|
6
|
+
* all right". Every one of them now opens with the same three
|
|
7
|
+
* words and the same headline.
|
|
8
|
+
*
|
|
9
|
+
* A clean result reports what was measured rather than saying
|
|
10
|
+
* nothing. "No violations" and "no violations across 340
|
|
11
|
+
* elements and 91 rules" are the same verdict and very different
|
|
12
|
+
* reassurances: the first is what a broken checker also says.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Say a count with the noun that agrees with it.
|
|
16
|
+
*
|
|
17
|
+
* Lives with the verdict rather than in one report, because every
|
|
18
|
+
* check writes these sentences and "1 stops are hard to follow"
|
|
19
|
+
* is the kind of thing that makes a reader trust the numbers less
|
|
20
|
+
* than they should.
|
|
21
|
+
*/
|
|
22
|
+
export function count(many, one, plural = `${one}s`) {
|
|
23
|
+
return `${many} ${many === 1 ? one : plural}`;
|
|
24
|
+
}
|
|
25
|
+
/** The verb that agrees with a count, for the same reason. */
|
|
26
|
+
export function wasWere(many) {
|
|
27
|
+
return many === 1 ? "was" : "were";
|
|
28
|
+
}
|
|
29
|
+
const MARK = {
|
|
30
|
+
pass: "PASS",
|
|
31
|
+
warn: "WARN",
|
|
32
|
+
fail: "FAIL",
|
|
33
|
+
};
|
|
34
|
+
/** Put a verdict at the head of a report. */
|
|
35
|
+
export function renderVerdict(verdict, body) {
|
|
36
|
+
const head = `${MARK[verdict.standing]} ${verdict.headline}`;
|
|
37
|
+
const measured = verdict.measured === undefined ? "" : `\n${verdict.measured}`;
|
|
38
|
+
return body === "" ? `${head}${measured}` : `${head}${measured}\n\n${body}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Whether anything found was severe enough to fail.
|
|
42
|
+
*
|
|
43
|
+
* A thing nobody could decide is a warning, never a pass. That
|
|
44
|
+
* is the whole reason it is reported separately: an automated
|
|
45
|
+
* check that turns its own uncertainty into approval is worse
|
|
46
|
+
* than no check.
|
|
47
|
+
*/
|
|
48
|
+
export function standingFor(counts) {
|
|
49
|
+
if (counts.failures > 0)
|
|
50
|
+
return "fail";
|
|
51
|
+
return counts.warnings > 0 ? "warn" : "pass";
|
|
52
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rules about what the layout actually did.
|
|
3
|
+
*
|
|
4
|
+
* A visual linter earns its keep or loses it on false positives.
|
|
5
|
+
* Every rule here reports only where the browser's own numbers
|
|
6
|
+
* leave no room for argument, and two well-known deliberate
|
|
7
|
+
* idioms are recognised rather than reported: content parked far
|
|
8
|
+
* off to the left, and the one-pixel clipped box used to hide
|
|
9
|
+
* text from sight but not from a screen reader. Flagging those
|
|
10
|
+
* would train the reader to ignore the whole report.
|
|
11
|
+
*
|
|
12
|
+
* Where a judgment is presentational rather than measured, it
|
|
13
|
+
* says so at the rule. Whether eight pixel text is too small is
|
|
14
|
+
* an opinion; whether an image failed to load is not.
|
|
15
|
+
*/
|
|
16
|
+
import { HIDDEN_BOX_PX } from "../snapshot/presented.js";
|
|
17
|
+
import type { A11yFinding } from "./axe.js";
|
|
18
|
+
/**
|
|
19
|
+
* The viewport WCAG 1.4.10 Reflow is specified at.
|
|
20
|
+
*
|
|
21
|
+
* The criterion asks that content reflow at 320 CSS pixels, so a
|
|
22
|
+
* capture wider than this has not tested it and must not cite
|
|
23
|
+
* it. A little headroom above 320 keeps a 375px phone capture,
|
|
24
|
+
* the usual narrow case, inside the claim.
|
|
25
|
+
*/
|
|
26
|
+
export declare const REFLOW_WIDTH = 400;
|
|
27
|
+
/** One element as the layout rules need to see it. */
|
|
28
|
+
export interface VisualNode {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly selector: string;
|
|
31
|
+
readonly tag: string;
|
|
32
|
+
/** Position and size in the page, from the browser. */
|
|
33
|
+
readonly rect: {
|
|
34
|
+
readonly x: number;
|
|
35
|
+
readonly y: number;
|
|
36
|
+
readonly width: number;
|
|
37
|
+
readonly height: number;
|
|
38
|
+
};
|
|
39
|
+
/** What the content wants, against what the box gives it. */
|
|
40
|
+
readonly scrollWidth: number;
|
|
41
|
+
readonly scrollHeight: number;
|
|
42
|
+
readonly clientWidth: number;
|
|
43
|
+
readonly clientHeight: number;
|
|
44
|
+
readonly overflowX: string;
|
|
45
|
+
readonly overflowY: string;
|
|
46
|
+
readonly fontSizePx: number;
|
|
47
|
+
readonly clipPath: string;
|
|
48
|
+
/** "ellipsis" when text is deliberately truncated with one. */
|
|
49
|
+
readonly textOverflow?: string;
|
|
50
|
+
/** A line count when the text is deliberately clamped. */
|
|
51
|
+
readonly lineClamp?: string;
|
|
52
|
+
/** How an image fills its box: cover and contain crop, they do not squash. */
|
|
53
|
+
readonly objectFit?: string;
|
|
54
|
+
/** An image's own dimensions, zero when it failed to load. */
|
|
55
|
+
readonly naturalWidth?: number;
|
|
56
|
+
readonly naturalHeight?: number;
|
|
57
|
+
/** Whether the browser finished trying to load it. */
|
|
58
|
+
readonly complete?: boolean;
|
|
59
|
+
readonly src?: string;
|
|
60
|
+
/** Text this element holds directly, trimmed. */
|
|
61
|
+
readonly text?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The page as a whole, which some rules need.
|
|
65
|
+
*
|
|
66
|
+
* Named PageBox rather than Viewport because it carries the
|
|
67
|
+
* document's full extent as well as the visible area, and
|
|
68
|
+
* because a Viewport elsewhere in this library means only the
|
|
69
|
+
* part a person can see.
|
|
70
|
+
*/
|
|
71
|
+
export interface PageBox {
|
|
72
|
+
readonly width: number;
|
|
73
|
+
readonly height: number;
|
|
74
|
+
readonly documentWidth: number;
|
|
75
|
+
readonly documentHeight: number;
|
|
76
|
+
/**
|
|
77
|
+
* How far the page was scrolled when this was captured.
|
|
78
|
+
*
|
|
79
|
+
* Rects are recorded in document coordinates, and a screenshot
|
|
80
|
+
* is in viewport coordinates. Anything joining the two needs
|
|
81
|
+
* the offset between them, and without it a visual diff
|
|
82
|
+
* attributed its regions to whatever happened to sit at those
|
|
83
|
+
* coordinates at the top of the page.
|
|
84
|
+
*/
|
|
85
|
+
readonly scrollX?: number;
|
|
86
|
+
readonly scrollY?: number;
|
|
87
|
+
}
|
|
88
|
+
/** Below this, text is hard to read for many people. */
|
|
89
|
+
export declare const SMALL_TEXT_PX = 10;
|
|
90
|
+
/** How far an image's shape may differ before it looks wrong. */
|
|
91
|
+
export declare const ASPECT_TOLERANCE = 0.1;
|
|
92
|
+
/**
|
|
93
|
+
* A box no larger than this is a hiding technique, not content.
|
|
94
|
+
*
|
|
95
|
+
* Owned by the page-side module that embeds it into the probes, so
|
|
96
|
+
* the threshold the browser is measured against and the one this
|
|
97
|
+
* analysis judges by cannot drift apart. Re-exported here because
|
|
98
|
+
* this is where consumers have always found it.
|
|
99
|
+
*/
|
|
100
|
+
export { HIDDEN_BOX_PX };
|
|
101
|
+
/**
|
|
102
|
+
* Whether an element is using a known way of hiding text from
|
|
103
|
+
* sight while leaving it to a screen reader.
|
|
104
|
+
*
|
|
105
|
+
* This is pattern recognition, not measurement: the browser has
|
|
106
|
+
* no notion of a visually-hidden idiom. It is here because the
|
|
107
|
+
* alternative is reporting every correctly built skip link on
|
|
108
|
+
* every page, which would make the clipping rule worthless.
|
|
109
|
+
*/
|
|
110
|
+
export declare function isVisuallyHidden(node: VisualNode): boolean;
|
|
111
|
+
/**
|
|
112
|
+
* The page scrolls sideways.
|
|
113
|
+
*
|
|
114
|
+
* Almost always a mistake, and a serious one on a narrow screen,
|
|
115
|
+
* where it makes every line of text require two-directional
|
|
116
|
+
* scrolling to read.
|
|
117
|
+
*/
|
|
118
|
+
export declare function horizontalOverflow(nodes: readonly VisualNode[], viewport: PageBox): readonly A11yFinding[];
|
|
119
|
+
/**
|
|
120
|
+
* Content cut off by the box it sits in.
|
|
121
|
+
*
|
|
122
|
+
* Measured, not guessed: the browser reports what the content
|
|
123
|
+
* wanted and what the box gave it, and a difference with
|
|
124
|
+
* overflow hidden means the rest is gone with no way to reach
|
|
125
|
+
* it.
|
|
126
|
+
*/
|
|
127
|
+
export declare function clippedContent(nodes: readonly VisualNode[]): readonly A11yFinding[];
|
|
128
|
+
/**
|
|
129
|
+
* Elements that escaped to the right of the document.
|
|
130
|
+
*
|
|
131
|
+
* Off to the left is the old way of hiding something, and does
|
|
132
|
+
* not extend the page. Off to the right does, so it drags the
|
|
133
|
+
* whole document wider and is nearly always an accident.
|
|
134
|
+
*/
|
|
135
|
+
export declare function escapedElements(nodes: readonly VisualNode[], viewport: PageBox): readonly A11yFinding[];
|
|
136
|
+
/**
|
|
137
|
+
* Images that did not load.
|
|
138
|
+
*
|
|
139
|
+
* The browser is unambiguous about this: it finished trying and
|
|
140
|
+
* has no dimensions to show for it.
|
|
141
|
+
*/
|
|
142
|
+
export declare function brokenImages(nodes: readonly VisualNode[]): readonly A11yFinding[];
|
|
143
|
+
/**
|
|
144
|
+
* Images drawn at a shape they were not.
|
|
145
|
+
*
|
|
146
|
+
* Measured against the image's own dimensions, so this is a
|
|
147
|
+
* comparison rather than an opinion; only the tolerance is
|
|
148
|
+
* chosen.
|
|
149
|
+
*/
|
|
150
|
+
export declare function distortedImages(nodes: readonly VisualNode[]): readonly A11yFinding[];
|
|
151
|
+
/**
|
|
152
|
+
* Text below a readable size.
|
|
153
|
+
*
|
|
154
|
+
* Presentational judgment, and labelled as one. WCAG sets no
|
|
155
|
+
* minimum font size, because it requires the page to survive
|
|
156
|
+
* being zoomed instead. This is here because text this small is
|
|
157
|
+
* usually an accident rather than a decision.
|
|
158
|
+
*/
|
|
159
|
+
export declare function tinyText(nodes: readonly VisualNode[]): readonly A11yFinding[];
|
|
160
|
+
/** Every layout rule, run against one capture. */
|
|
161
|
+
export declare function analyseVisual(nodes: readonly VisualNode[], viewport: PageBox): readonly A11yFinding[];
|