@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,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walking a page the way it is actually built.
|
|
3
|
+
*
|
|
4
|
+
* `document.querySelectorAll` stops at a shadow boundary and at
|
|
5
|
+
* a frame boundary, which means a probe using it sees a design
|
|
6
|
+
* system's markup as a row of empty custom elements. Measured on
|
|
7
|
+
* a two-component page: the flattened snapshot reports eighteen
|
|
8
|
+
* elements and this reported five, so the visual, design, target
|
|
9
|
+
* and keyboard captures each answered questions about a page
|
|
10
|
+
* that was mostly not there. The DOM snapshot pierces both, so
|
|
11
|
+
* the same library was answering the same question two ways.
|
|
12
|
+
*
|
|
13
|
+
* These are source strings rather than functions because they
|
|
14
|
+
* are injected into the page, and the bundler renames named
|
|
15
|
+
* inner bindings through a wrapper the page has never heard of.
|
|
16
|
+
*
|
|
17
|
+
* Same-origin only, for frames. A cross-origin iframe runs in
|
|
18
|
+
* another process and its document is unreachable from page
|
|
19
|
+
* script; nothing here can change that, so the count of frames
|
|
20
|
+
* that could not be entered is reported rather than hidden.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Declares `deepElements(root)` and `deepSelectorFor(el)`.
|
|
24
|
+
*
|
|
25
|
+
* `deepElements` returns every element under a root, descending
|
|
26
|
+
* through open shadow roots and same-origin frames. Closed
|
|
27
|
+
* shadow roots are not reachable by anyone, including us.
|
|
28
|
+
*
|
|
29
|
+
* `deepSelectorFor` names an element so a reader can find it
|
|
30
|
+
* again, crossing boundaries with the `>>` that Playwright and
|
|
31
|
+
* devtools both use: `my-card >> button` says the button lives
|
|
32
|
+
* inside that component's shadow root.
|
|
33
|
+
*/
|
|
34
|
+
export declare const DEEP_DOM = "\n\tconst __shadowOf = (el) => {\n\t\ttry { return el.shadowRoot; } catch { return null; }\n\t};\n\tconst __docOf = (el) => {\n\t\t// Reaching into a cross-origin frame throws by design.\n\t\ttry { return el.contentDocument; } catch { return null; }\n\t};\n\tlet __unreachableFrames = 0;\n\tconst deepElements = (root) => {\n\t\tconst out = [];\n\t\tconst visit = (node) => {\n\t\t\tfor (const el of node.querySelectorAll(\"*\")) {\n\t\t\t\tout.push(el);\n\t\t\t\tconst shadow = __shadowOf(el);\n\t\t\t\tif (shadow) visit(shadow);\n\t\t\t\tif (el.tagName === \"IFRAME\" || el.tagName === \"FRAME\") {\n\t\t\t\t\tconst doc = __docOf(el);\n\t\t\t\t\tif (doc && doc.documentElement) visit(doc);\n\t\t\t\t\telse __unreachableFrames++;\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tvisit(root || document);\n\t\treturn out;\n\t};\n\tconst __oneSelector = (el) => {\n\t\tconst tag = el.tagName.toLowerCase();\n\t\tif (el.id) return \"#\" + el.id;\n\t\tconst hook = el.getAttribute(\"data-testid\");\n\t\tif (hook) return tag + '[data-testid=\"' + hook + '\"]';\n\t\tconst first = el.classList && el.classList[0];\n\t\tif (first) return tag + \".\" + first;\n\t\tconst parent = el.parentElement;\n\t\tif (!parent) return tag;\n\t\tconst kin = [...parent.children].filter((c) => c.tagName === el.tagName);\n\t\tif (kin.length === 1) return tag;\n\t\treturn tag + \":nth-of-type(\" + (kin.indexOf(el) + 1) + \")\";\n\t};\n\t// Cross a boundary by naming the host, so the path can be\n\t// followed by hand: \"my-card >> button\".\n\tconst deepSelectorFor = (el) => {\n\t\tconst parts = [__oneSelector(el)];\n\t\tlet node = el;\n\t\tfor (let hops = 0; hops < 10; hops++) {\n\t\t\tconst root = node.getRootNode ? node.getRootNode() : null;\n\t\t\tconst host = root && root.host;\n\t\t\tconst frame = root && root.defaultView && root.defaultView.frameElement;\n\t\t\tconst crossing = host || frame;\n\t\t\tif (!crossing) break;\n\t\t\tparts.unshift(__oneSelector(crossing));\n\t\t\tnode = crossing;\n\t\t}\n\t\treturn parts.join(\" >> \");\n\t};\n";
|
|
35
|
+
/** How many frames the page would not let a probe enter. */
|
|
36
|
+
export declare const DEEP_UNREACHABLE = "__unreachableFrames";
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Walking a page the way it is actually built.
|
|
3
|
+
*
|
|
4
|
+
* `document.querySelectorAll` stops at a shadow boundary and at
|
|
5
|
+
* a frame boundary, which means a probe using it sees a design
|
|
6
|
+
* system's markup as a row of empty custom elements. Measured on
|
|
7
|
+
* a two-component page: the flattened snapshot reports eighteen
|
|
8
|
+
* elements and this reported five, so the visual, design, target
|
|
9
|
+
* and keyboard captures each answered questions about a page
|
|
10
|
+
* that was mostly not there. The DOM snapshot pierces both, so
|
|
11
|
+
* the same library was answering the same question two ways.
|
|
12
|
+
*
|
|
13
|
+
* These are source strings rather than functions because they
|
|
14
|
+
* are injected into the page, and the bundler renames named
|
|
15
|
+
* inner bindings through a wrapper the page has never heard of.
|
|
16
|
+
*
|
|
17
|
+
* Same-origin only, for frames. A cross-origin iframe runs in
|
|
18
|
+
* another process and its document is unreachable from page
|
|
19
|
+
* script; nothing here can change that, so the count of frames
|
|
20
|
+
* that could not be entered is reported rather than hidden.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Declares `deepElements(root)` and `deepSelectorFor(el)`.
|
|
24
|
+
*
|
|
25
|
+
* `deepElements` returns every element under a root, descending
|
|
26
|
+
* through open shadow roots and same-origin frames. Closed
|
|
27
|
+
* shadow roots are not reachable by anyone, including us.
|
|
28
|
+
*
|
|
29
|
+
* `deepSelectorFor` names an element so a reader can find it
|
|
30
|
+
* again, crossing boundaries with the `>>` that Playwright and
|
|
31
|
+
* devtools both use: `my-card >> button` says the button lives
|
|
32
|
+
* inside that component's shadow root.
|
|
33
|
+
*/
|
|
34
|
+
export const DEEP_DOM = `
|
|
35
|
+
const __shadowOf = (el) => {
|
|
36
|
+
try { return el.shadowRoot; } catch { return null; }
|
|
37
|
+
};
|
|
38
|
+
const __docOf = (el) => {
|
|
39
|
+
// Reaching into a cross-origin frame throws by design.
|
|
40
|
+
try { return el.contentDocument; } catch { return null; }
|
|
41
|
+
};
|
|
42
|
+
let __unreachableFrames = 0;
|
|
43
|
+
const deepElements = (root) => {
|
|
44
|
+
const out = [];
|
|
45
|
+
const visit = (node) => {
|
|
46
|
+
for (const el of node.querySelectorAll("*")) {
|
|
47
|
+
out.push(el);
|
|
48
|
+
const shadow = __shadowOf(el);
|
|
49
|
+
if (shadow) visit(shadow);
|
|
50
|
+
if (el.tagName === "IFRAME" || el.tagName === "FRAME") {
|
|
51
|
+
const doc = __docOf(el);
|
|
52
|
+
if (doc && doc.documentElement) visit(doc);
|
|
53
|
+
else __unreachableFrames++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
visit(root || document);
|
|
58
|
+
return out;
|
|
59
|
+
};
|
|
60
|
+
const __oneSelector = (el) => {
|
|
61
|
+
const tag = el.tagName.toLowerCase();
|
|
62
|
+
if (el.id) return "#" + el.id;
|
|
63
|
+
const hook = el.getAttribute("data-testid");
|
|
64
|
+
if (hook) return tag + '[data-testid="' + hook + '"]';
|
|
65
|
+
const first = el.classList && el.classList[0];
|
|
66
|
+
if (first) return tag + "." + first;
|
|
67
|
+
const parent = el.parentElement;
|
|
68
|
+
if (!parent) return tag;
|
|
69
|
+
const kin = [...parent.children].filter((c) => c.tagName === el.tagName);
|
|
70
|
+
if (kin.length === 1) return tag;
|
|
71
|
+
return tag + ":nth-of-type(" + (kin.indexOf(el) + 1) + ")";
|
|
72
|
+
};
|
|
73
|
+
// Cross a boundary by naming the host, so the path can be
|
|
74
|
+
// followed by hand: "my-card >> button".
|
|
75
|
+
const deepSelectorFor = (el) => {
|
|
76
|
+
const parts = [__oneSelector(el)];
|
|
77
|
+
let node = el;
|
|
78
|
+
for (let hops = 0; hops < 10; hops++) {
|
|
79
|
+
const root = node.getRootNode ? node.getRootNode() : null;
|
|
80
|
+
const host = root && root.host;
|
|
81
|
+
const frame = root && root.defaultView && root.defaultView.frameElement;
|
|
82
|
+
const crossing = host || frame;
|
|
83
|
+
if (!crossing) break;
|
|
84
|
+
parts.unshift(__oneSelector(crossing));
|
|
85
|
+
node = crossing;
|
|
86
|
+
}
|
|
87
|
+
return parts.join(" >> ");
|
|
88
|
+
};
|
|
89
|
+
`;
|
|
90
|
+
/** How many frames the page would not let a probe enter. */
|
|
91
|
+
export const DEEP_UNREACHABLE = "__unreachableFrames";
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The whole page, flattened into one addressable list.
|
|
3
|
+
*
|
|
4
|
+
* The protocol hands a snapshot over as a struct of parallel
|
|
5
|
+
* arrays with every string replaced by an index into one shared
|
|
6
|
+
* table, and rare properties held as sparse pairs. That shape is
|
|
7
|
+
* excellent to transmit and impossible to reason about, so this
|
|
8
|
+
* turns it into nodes you can look at.
|
|
9
|
+
*
|
|
10
|
+
* Two things it gets for free, which are otherwise painful.
|
|
11
|
+
* Shadow content is already inline under its host, with no
|
|
12
|
+
* separate root node, and the protocol marks every node of a
|
|
13
|
+
* shadow tree rather than only its root, so piercing needs no
|
|
14
|
+
* traversal at all. And every iframe arrives as another document
|
|
15
|
+
* linked from the node that hosts it, so the whole page, frames
|
|
16
|
+
* included, is one list once they are joined.
|
|
17
|
+
*
|
|
18
|
+
* Whether a node is rendered is not inferred from its styles: it
|
|
19
|
+
* is whether the browser gave it a layout entry, which is the
|
|
20
|
+
* browser's own answer, and the only one that accounts for an
|
|
21
|
+
* ancestor being hidden.
|
|
22
|
+
*/
|
|
23
|
+
/** Sparse properties: the nodes that have one, and the values. */
|
|
24
|
+
export interface RareValues {
|
|
25
|
+
readonly index: readonly number[];
|
|
26
|
+
readonly value?: readonly number[];
|
|
27
|
+
}
|
|
28
|
+
/** Node arrays, as the protocol packs them. */
|
|
29
|
+
export interface RawNodes {
|
|
30
|
+
readonly parentIndex: readonly number[];
|
|
31
|
+
readonly nodeType: readonly number[];
|
|
32
|
+
readonly nodeName: readonly number[];
|
|
33
|
+
readonly nodeValue: readonly number[];
|
|
34
|
+
readonly backendNodeId: readonly number[];
|
|
35
|
+
readonly attributes: readonly (readonly number[])[];
|
|
36
|
+
readonly shadowRootType?: RareValues;
|
|
37
|
+
readonly contentDocumentIndex?: RareValues;
|
|
38
|
+
readonly isClickable?: RareValues;
|
|
39
|
+
readonly pseudoType?: RareValues;
|
|
40
|
+
}
|
|
41
|
+
/** Layout arrays, covering only the nodes that were rendered. */
|
|
42
|
+
export interface RawLayout {
|
|
43
|
+
readonly nodeIndex: readonly number[];
|
|
44
|
+
readonly styles: readonly (readonly number[])[];
|
|
45
|
+
readonly bounds: readonly (readonly number[])[];
|
|
46
|
+
readonly text?: readonly number[];
|
|
47
|
+
}
|
|
48
|
+
/** One document: the page, or a frame within it. */
|
|
49
|
+
export interface RawDocument {
|
|
50
|
+
readonly documentURL: number;
|
|
51
|
+
readonly title?: number;
|
|
52
|
+
readonly nodes: RawNodes;
|
|
53
|
+
readonly layout: RawLayout;
|
|
54
|
+
readonly scrollOffsetX?: number;
|
|
55
|
+
readonly scrollOffsetY?: number;
|
|
56
|
+
}
|
|
57
|
+
/** DOMSnapshot.captureSnapshot, as it comes back. */
|
|
58
|
+
export interface RawSnapshot {
|
|
59
|
+
readonly documents: readonly RawDocument[];
|
|
60
|
+
readonly strings: readonly string[];
|
|
61
|
+
}
|
|
62
|
+
/** Where something is on the page. */
|
|
63
|
+
export interface Bounds {
|
|
64
|
+
readonly x: number;
|
|
65
|
+
readonly y: number;
|
|
66
|
+
readonly width: number;
|
|
67
|
+
readonly height: number;
|
|
68
|
+
}
|
|
69
|
+
/** One node, with everything known about it in one place. */
|
|
70
|
+
export interface IndexedNode {
|
|
71
|
+
/** Unique across every document in the snapshot. */
|
|
72
|
+
readonly id: string;
|
|
73
|
+
readonly documentIndex: number;
|
|
74
|
+
readonly documentUrl: string;
|
|
75
|
+
readonly nodeName: string;
|
|
76
|
+
readonly nodeType: number;
|
|
77
|
+
readonly backendNodeId: number;
|
|
78
|
+
readonly attributes: Readonly<Record<string, string>>;
|
|
79
|
+
/** The id of the parent, across frame boundaries. */
|
|
80
|
+
readonly parent?: string;
|
|
81
|
+
readonly styles: Readonly<Record<string, string>>;
|
|
82
|
+
readonly bounds?: Bounds;
|
|
83
|
+
readonly text?: string;
|
|
84
|
+
readonly clickable: boolean;
|
|
85
|
+
readonly inShadow: boolean;
|
|
86
|
+
/** Whether the browser laid it out at all. */
|
|
87
|
+
readonly rendered: boolean;
|
|
88
|
+
}
|
|
89
|
+
/** Whether this node is an element. */
|
|
90
|
+
export declare function isElement(node: IndexedNode): boolean;
|
|
91
|
+
/** Whether this node is a run of text. */
|
|
92
|
+
export declare function isText(node: IndexedNode): boolean;
|
|
93
|
+
/**
|
|
94
|
+
* Flatten a snapshot into addressable nodes.
|
|
95
|
+
*
|
|
96
|
+
* The style property names must be given in the same order they
|
|
97
|
+
* were requested in, because the protocol returns the values as
|
|
98
|
+
* a bare array positioned against that request and never names
|
|
99
|
+
* them again.
|
|
100
|
+
*/
|
|
101
|
+
export declare function flattenSnapshot(snapshot: RawSnapshot, styleProperties: readonly string[]): readonly IndexedNode[];
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The whole page, flattened into one addressable list.
|
|
3
|
+
*
|
|
4
|
+
* The protocol hands a snapshot over as a struct of parallel
|
|
5
|
+
* arrays with every string replaced by an index into one shared
|
|
6
|
+
* table, and rare properties held as sparse pairs. That shape is
|
|
7
|
+
* excellent to transmit and impossible to reason about, so this
|
|
8
|
+
* turns it into nodes you can look at.
|
|
9
|
+
*
|
|
10
|
+
* Two things it gets for free, which are otherwise painful.
|
|
11
|
+
* Shadow content is already inline under its host, with no
|
|
12
|
+
* separate root node, and the protocol marks every node of a
|
|
13
|
+
* shadow tree rather than only its root, so piercing needs no
|
|
14
|
+
* traversal at all. And every iframe arrives as another document
|
|
15
|
+
* linked from the node that hosts it, so the whole page, frames
|
|
16
|
+
* included, is one list once they are joined.
|
|
17
|
+
*
|
|
18
|
+
* Whether a node is rendered is not inferred from its styles: it
|
|
19
|
+
* is whether the browser gave it a layout entry, which is the
|
|
20
|
+
* browser's own answer, and the only one that accounts for an
|
|
21
|
+
* ancestor being hidden.
|
|
22
|
+
*/
|
|
23
|
+
/** Node types worth naming, rather than leaving as numbers. */
|
|
24
|
+
const ELEMENT_NODE = 1;
|
|
25
|
+
const TEXT_NODE = 3;
|
|
26
|
+
/** Whether this node is an element. */
|
|
27
|
+
export function isElement(node) {
|
|
28
|
+
return node.nodeType === ELEMENT_NODE;
|
|
29
|
+
}
|
|
30
|
+
/** Whether this node is a run of text. */
|
|
31
|
+
export function isText(node) {
|
|
32
|
+
return node.nodeType === TEXT_NODE;
|
|
33
|
+
}
|
|
34
|
+
/** Turn sparse pairs into something you can ask a question of. */
|
|
35
|
+
function sparse(rare) {
|
|
36
|
+
const found = new Map();
|
|
37
|
+
if (!rare)
|
|
38
|
+
return found;
|
|
39
|
+
rare.index.forEach((nodeIndex, at) => {
|
|
40
|
+
// A rare boolean has indices and no values: being listed is
|
|
41
|
+
// the whole message.
|
|
42
|
+
found.set(nodeIndex, rare.value?.[at] ?? 1);
|
|
43
|
+
});
|
|
44
|
+
return found;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Flatten a snapshot into addressable nodes.
|
|
48
|
+
*
|
|
49
|
+
* The style property names must be given in the same order they
|
|
50
|
+
* were requested in, because the protocol returns the values as
|
|
51
|
+
* a bare array positioned against that request and never names
|
|
52
|
+
* them again.
|
|
53
|
+
*/
|
|
54
|
+
export function flattenSnapshot(snapshot, styleProperties) {
|
|
55
|
+
const text = (index) => index === undefined || index < 0 ? "" : (snapshot.strings[index] ?? "");
|
|
56
|
+
const nodes = [];
|
|
57
|
+
// Which document each iframe host node opens, so a child
|
|
58
|
+
// document can be attached to the node that owns it.
|
|
59
|
+
const hostOfDocument = new Map();
|
|
60
|
+
snapshot.documents.forEach((document, documentIndex) => {
|
|
61
|
+
const { nodes: raw, layout } = document;
|
|
62
|
+
const documentUrl = text(document.documentURL);
|
|
63
|
+
const id = (nodeIndex) => `${documentIndex}:${nodeIndex}`;
|
|
64
|
+
const shadowRoots = sparse(raw.shadowRootType);
|
|
65
|
+
const clickable = sparse(raw.isClickable);
|
|
66
|
+
const contentDocuments = sparse(raw.contentDocumentIndex);
|
|
67
|
+
// Layout is indexed by its own position, so the mapping from
|
|
68
|
+
// a node back to its layout entry has to be built once.
|
|
69
|
+
const layoutOf = new Map();
|
|
70
|
+
layout.nodeIndex.forEach((nodeIndex, at) => {
|
|
71
|
+
layoutOf.set(nodeIndex, at);
|
|
72
|
+
});
|
|
73
|
+
for (const [nodeIndex, nameIndex] of raw.nodeName.entries()) {
|
|
74
|
+
const at = layoutOf.get(nodeIndex);
|
|
75
|
+
const parentIndex = raw.parentIndex[nodeIndex] ?? -1;
|
|
76
|
+
const attributes = {};
|
|
77
|
+
const packed = raw.attributes[nodeIndex] ?? [];
|
|
78
|
+
for (let pair = 0; pair + 1 < packed.length; pair += 2) {
|
|
79
|
+
attributes[text(packed[pair])] = text(packed[pair + 1]);
|
|
80
|
+
}
|
|
81
|
+
const styles = {};
|
|
82
|
+
if (at !== undefined) {
|
|
83
|
+
const values = layout.styles[at] ?? [];
|
|
84
|
+
styleProperties.forEach((property, position) => {
|
|
85
|
+
const value = text(values[position]);
|
|
86
|
+
if (value !== "")
|
|
87
|
+
styles[property] = value;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const box = at === undefined ? undefined : layout.bounds[at];
|
|
91
|
+
const own = text(layout.text?.[at ?? -1]);
|
|
92
|
+
nodes.push({
|
|
93
|
+
id: id(nodeIndex),
|
|
94
|
+
documentIndex,
|
|
95
|
+
documentUrl,
|
|
96
|
+
nodeName: text(nameIndex),
|
|
97
|
+
nodeType: raw.nodeType[nodeIndex] ?? 0,
|
|
98
|
+
backendNodeId: raw.backendNodeId[nodeIndex] ?? 0,
|
|
99
|
+
attributes,
|
|
100
|
+
...(parentIndex >= 0 ? { parent: id(parentIndex) } : {}),
|
|
101
|
+
styles,
|
|
102
|
+
...(box && box.length === 4
|
|
103
|
+
? {
|
|
104
|
+
bounds: {
|
|
105
|
+
x: box[0],
|
|
106
|
+
y: box[1],
|
|
107
|
+
width: box[2],
|
|
108
|
+
height: box[3],
|
|
109
|
+
},
|
|
110
|
+
}
|
|
111
|
+
: {}),
|
|
112
|
+
...(own === "" ? {} : { text: own }),
|
|
113
|
+
clickable: clickable.has(nodeIndex),
|
|
114
|
+
inShadow: shadowRoots.has(nodeIndex),
|
|
115
|
+
rendered: at !== undefined,
|
|
116
|
+
});
|
|
117
|
+
const opens = contentDocuments.get(nodeIndex);
|
|
118
|
+
if (opens !== undefined)
|
|
119
|
+
hostOfDocument.set(opens, id(nodeIndex));
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// Join the frames on: a frame's root has no parent of its own,
|
|
123
|
+
// so it takes the node that hosts it, and the page becomes one
|
|
124
|
+
// tree rather than several.
|
|
125
|
+
return nodes.map((node) => {
|
|
126
|
+
if (node.parent !== undefined)
|
|
127
|
+
return node;
|
|
128
|
+
const host = hostOfDocument.get(node.documentIndex);
|
|
129
|
+
return host === undefined ? node : { ...node, parent: host };
|
|
130
|
+
});
|
|
131
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page flattened into one addressable list, and the
|
|
3
|
+
* questions worth asking of it.
|
|
4
|
+
*/
|
|
5
|
+
export { DEEP_DOM, DEEP_UNREACHABLE } from "./deep.js";
|
|
6
|
+
export { type Bounds, flattenSnapshot, type IndexedNode, isElement, isText, type RareValues, type RawDocument, type RawLayout, type RawNodes, type RawSnapshot, } from "./flatten.js";
|
|
7
|
+
export { HIDDEN_BOX_PX, PRESENTED } from "./presented.js";
|
|
8
|
+
export { describeNode, describeStyles, find, matches, type Query, type Tally, tally, } from "./query.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The page flattened into one addressable list, and the
|
|
3
|
+
* questions worth asking of it.
|
|
4
|
+
*/
|
|
5
|
+
// The page-side traversal every capture shares, so a probe sees
|
|
6
|
+
// the page the snapshot sees rather than only the top document.
|
|
7
|
+
export { DEEP_DOM, DEEP_UNREACHABLE } from "./deep.js";
|
|
8
|
+
export { flattenSnapshot, isElement, isText, } from "./flatten.js";
|
|
9
|
+
export { HIDDEN_BOX_PX, PRESENTED } from "./presented.js";
|
|
10
|
+
export { describeNode, describeStyles, find, matches, tally, } from "./query.js";
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page-side answers to "is this actually being offered to
|
|
3
|
+
* anybody", shared by every probe that has to decide.
|
|
4
|
+
*
|
|
5
|
+
* This ships as a source string, like the deep traversal it sits
|
|
6
|
+
* beside, because it declares helpers of its own and the bundler
|
|
7
|
+
* renames named inner bindings through a wrapper the page has
|
|
8
|
+
* never heard of.
|
|
9
|
+
*
|
|
10
|
+
* It exists because four probes asked this question three
|
|
11
|
+
* different ways. Two settled for a bare checkVisibility(), which
|
|
12
|
+
* answers about display and nothing else, and the disagreement
|
|
13
|
+
* showed up as false findings rather than as a disagreement: a
|
|
14
|
+
* real app's closed dialogs were reported as 48 critical
|
|
15
|
+
* accessibility failures and its screen-reader-only inputs as ten
|
|
16
|
+
* pointer targets one pixel across.
|
|
17
|
+
*
|
|
18
|
+
* The recognition of a visually-hidden idiom is presentational
|
|
19
|
+
* judgment rather than measurement, and is one of this library's
|
|
20
|
+
* declared exceptions to reporting only what the browser said.
|
|
21
|
+
* The browser has no notion of the idiom; without it, every
|
|
22
|
+
* correctly built skip link on every page is a finding.
|
|
23
|
+
*/
|
|
24
|
+
/** A box no larger than this is a hiding technique, not content. */
|
|
25
|
+
export declare const HIDDEN_BOX_PX = 4;
|
|
26
|
+
/**
|
|
27
|
+
* Declares `presented`, `visible`, `inertHere` and
|
|
28
|
+
* `visuallyHidden` for a page-side probe.
|
|
29
|
+
*
|
|
30
|
+
* Prepend it inside the probe's IIFE, as with DEEP_DOM.
|
|
31
|
+
*/
|
|
32
|
+
export declare const PRESENTED = "\n\t// The browser's own answer, but only when asked the whole\n\t// question. Bare checkVisibility() reports on display alone,\n\t// so it calls a visibility:hidden control visible, and real\n\t// apps hide closed menus and dialogs exactly that way.\n\t//\n\t// opacity is deliberately not asked about. An opacity:0\n\t// control is still in the focus order and still clickable, so\n\t// treating it as absent buries real defects rather than\n\t// avoiding false ones.\n\tconst visible = (el) =>\n\t\ttypeof el.checkVisibility === \"function\"\n\t\t\t? el.checkVisibility({\n\t\t\t\t\tvisibilityProperty: true,\n\t\t\t\t\tcontentVisibilityAuto: true,\n\t\t\t\t})\n\t\t\t: el.getClientRects().length > 0;\n\n\t// inert takes a subtree out of interaction without changing\n\t// anything about how it looks, so no style question finds it.\n\t// A closed dialog is the ordinary case.\n\tconst inertHere = (el) =>\n\t\ttypeof el.closest === \"function\" && el.closest(\"[inert]\") !== null;\n\n\t// The screen-reader-only family: clipped to nothing, or parked\n\t// off the left edge where no scrollable area is created. Such\n\t// an element is deliberately not shown to sighted users, so it\n\t// is not something they can look at or aim a pointer at.\n\tconst visuallyHidden = (el) => {\n\t\tconst rect = el.getBoundingClientRect();\n\t\tconst tiny =\n\t\t\trect.width <= 4 && rect.height <= 4;\n\t\tconst style = getComputedStyle(el);\n\t\tif (tiny && style.clipPath !== \"none\") return true;\n\t\tif (tiny && style.overflowX === \"hidden\") return true;\n\t\treturn rect.x + rect.width < 0;\n\t};\n\n\t// Offered to somebody: painted, not inert, and not hidden by\n\t// one of the idioms above.\n\tconst presented = (el) =>\n\t\tvisible(el) && !inertHere(el) && !visuallyHidden(el);\n";
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page-side answers to "is this actually being offered to
|
|
3
|
+
* anybody", shared by every probe that has to decide.
|
|
4
|
+
*
|
|
5
|
+
* This ships as a source string, like the deep traversal it sits
|
|
6
|
+
* beside, because it declares helpers of its own and the bundler
|
|
7
|
+
* renames named inner bindings through a wrapper the page has
|
|
8
|
+
* never heard of.
|
|
9
|
+
*
|
|
10
|
+
* It exists because four probes asked this question three
|
|
11
|
+
* different ways. Two settled for a bare checkVisibility(), which
|
|
12
|
+
* answers about display and nothing else, and the disagreement
|
|
13
|
+
* showed up as false findings rather than as a disagreement: a
|
|
14
|
+
* real app's closed dialogs were reported as 48 critical
|
|
15
|
+
* accessibility failures and its screen-reader-only inputs as ten
|
|
16
|
+
* pointer targets one pixel across.
|
|
17
|
+
*
|
|
18
|
+
* The recognition of a visually-hidden idiom is presentational
|
|
19
|
+
* judgment rather than measurement, and is one of this library's
|
|
20
|
+
* declared exceptions to reporting only what the browser said.
|
|
21
|
+
* The browser has no notion of the idiom; without it, every
|
|
22
|
+
* correctly built skip link on every page is a finding.
|
|
23
|
+
*/
|
|
24
|
+
/** A box no larger than this is a hiding technique, not content. */
|
|
25
|
+
export const HIDDEN_BOX_PX = 4;
|
|
26
|
+
/**
|
|
27
|
+
* Declares `presented`, `visible`, `inertHere` and
|
|
28
|
+
* `visuallyHidden` for a page-side probe.
|
|
29
|
+
*
|
|
30
|
+
* Prepend it inside the probe's IIFE, as with DEEP_DOM.
|
|
31
|
+
*/
|
|
32
|
+
export const PRESENTED = `
|
|
33
|
+
// The browser's own answer, but only when asked the whole
|
|
34
|
+
// question. Bare checkVisibility() reports on display alone,
|
|
35
|
+
// so it calls a visibility:hidden control visible, and real
|
|
36
|
+
// apps hide closed menus and dialogs exactly that way.
|
|
37
|
+
//
|
|
38
|
+
// opacity is deliberately not asked about. An opacity:0
|
|
39
|
+
// control is still in the focus order and still clickable, so
|
|
40
|
+
// treating it as absent buries real defects rather than
|
|
41
|
+
// avoiding false ones.
|
|
42
|
+
const visible = (el) =>
|
|
43
|
+
typeof el.checkVisibility === "function"
|
|
44
|
+
? el.checkVisibility({
|
|
45
|
+
visibilityProperty: true,
|
|
46
|
+
contentVisibilityAuto: true,
|
|
47
|
+
})
|
|
48
|
+
: el.getClientRects().length > 0;
|
|
49
|
+
|
|
50
|
+
// inert takes a subtree out of interaction without changing
|
|
51
|
+
// anything about how it looks, so no style question finds it.
|
|
52
|
+
// A closed dialog is the ordinary case.
|
|
53
|
+
const inertHere = (el) =>
|
|
54
|
+
typeof el.closest === "function" && el.closest("[inert]") !== null;
|
|
55
|
+
|
|
56
|
+
// The screen-reader-only family: clipped to nothing, or parked
|
|
57
|
+
// off the left edge where no scrollable area is created. Such
|
|
58
|
+
// an element is deliberately not shown to sighted users, so it
|
|
59
|
+
// is not something they can look at or aim a pointer at.
|
|
60
|
+
const visuallyHidden = (el) => {
|
|
61
|
+
const rect = el.getBoundingClientRect();
|
|
62
|
+
const tiny =
|
|
63
|
+
rect.width <= ${HIDDEN_BOX_PX} && rect.height <= ${HIDDEN_BOX_PX};
|
|
64
|
+
const style = getComputedStyle(el);
|
|
65
|
+
if (tiny && style.clipPath !== "none") return true;
|
|
66
|
+
if (tiny && style.overflowX === "hidden") return true;
|
|
67
|
+
return rect.x + rect.width < 0;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// Offered to somebody: painted, not inert, and not hidden by
|
|
71
|
+
// one of the idioms above.
|
|
72
|
+
const presented = (el) =>
|
|
73
|
+
visible(el) && !inertHere(el) && !visuallyHidden(el);
|
|
74
|
+
`;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asking the flattened page questions.
|
|
3
|
+
*
|
|
4
|
+
* The queries here are the ones that cannot be asked any other
|
|
5
|
+
* way: how many of these are there, where are they, which ones
|
|
6
|
+
* are not rendered, what is inside that frame. A CSS selector
|
|
7
|
+
* run in the page answers some of this, but it answers it inside
|
|
8
|
+
* one document and it cannot see into a closed shadow root or
|
|
9
|
+
* across a frame boundary. The index can, because the browser
|
|
10
|
+
* already flattened all of it.
|
|
11
|
+
*/
|
|
12
|
+
import type { IndexedNode } from "./flatten.js";
|
|
13
|
+
/** What to look for. */
|
|
14
|
+
export interface Query {
|
|
15
|
+
/** Tag name, matched case-insensitively. */
|
|
16
|
+
readonly tag?: string;
|
|
17
|
+
/** An attribute that must be present, and optionally its value. */
|
|
18
|
+
readonly attribute?: string;
|
|
19
|
+
readonly value?: string;
|
|
20
|
+
/** Text the node must contain, matched case-insensitively. */
|
|
21
|
+
readonly text?: string;
|
|
22
|
+
/** Restrict to a class. */
|
|
23
|
+
readonly className?: string;
|
|
24
|
+
/** Only what the browser rendered, or only what it did not. */
|
|
25
|
+
readonly rendered?: boolean;
|
|
26
|
+
/** Only nodes inside a shadow root. */
|
|
27
|
+
readonly inShadow?: boolean;
|
|
28
|
+
/** Only nodes belonging to this document url. */
|
|
29
|
+
readonly documentUrl?: string;
|
|
30
|
+
/** Only nodes the browser considers clickable. */
|
|
31
|
+
readonly clickable?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Whether one node answers the query. */
|
|
34
|
+
export declare function matches(node: IndexedNode, query: Query): boolean;
|
|
35
|
+
/** Everything that answers the query, in document order. */
|
|
36
|
+
export declare function find(nodes: readonly IndexedNode[], query: Query): readonly IndexedNode[];
|
|
37
|
+
/** A tally of something, largest first. */
|
|
38
|
+
export interface Tally {
|
|
39
|
+
readonly key: string;
|
|
40
|
+
readonly count: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Count nodes by some property of them.
|
|
44
|
+
*
|
|
45
|
+
* A page with four hundred divs is not usefully listed, but it
|
|
46
|
+
* is usefully counted, and the counting is what tells you the
|
|
47
|
+
* listing would be a waste.
|
|
48
|
+
*/
|
|
49
|
+
export declare function tally(nodes: readonly IndexedNode[], by: (node: IndexedNode) => string | undefined): readonly Tally[];
|
|
50
|
+
/**
|
|
51
|
+
* How a node reads in a listing.
|
|
52
|
+
*
|
|
53
|
+
* The position says which space it is measured in. A snapshot
|
|
54
|
+
* measures down the document, while an element inspection reports
|
|
55
|
+
* the box model, which measures from the viewport. The same element
|
|
56
|
+
* on a scrolled page reads differently in each, and saying so is
|
|
57
|
+
* what stops the two being compared as though they agreed.
|
|
58
|
+
*/
|
|
59
|
+
export declare function describeNode(node: IndexedNode): string;
|
|
60
|
+
/**
|
|
61
|
+
* Say what a node's named properties compute to.
|
|
62
|
+
*
|
|
63
|
+
* A property the snapshot carries no value for is named rather than
|
|
64
|
+
* dropped. Leaving it out would read exactly like a property nobody
|
|
65
|
+
* asked about, and a caller would take the silence for a value.
|
|
66
|
+
*/
|
|
67
|
+
export declare function describeStyles(node: IndexedNode, wanted: readonly string[]): string;
|