@withbuddi/buddi 0.1.0-pre.50 → 0.1.0-pre.52
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/extension/background.js +1604 -847
- package/extension/manifest.json +3 -3
- package/extension/popup.css +91 -3
- package/extension/popup.html +49 -32
- package/extension/popup.js +215 -123
- package/node_modules/@buddi/cli/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/cli/dist/commands.d.ts.map +1 -1
- package/node_modules/@buddi/cli/dist/commands.js +11 -1
- package/node_modules/@buddi/cli/dist/commands.js.map +1 -1
- package/node_modules/@buddi/core/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/plugin/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/questions/store.d.ts +3 -1
- package/node_modules/@buddi/core/dist/questions/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/questions/store.js +3 -3
- package/node_modules/@buddi/core/dist/questions/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/questions/types.d.ts +46 -1
- package/node_modules/@buddi/core/dist/questions/types.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/questions/types.js +2 -1
- package/node_modules/@buddi/core/dist/questions/types.js.map +1 -1
- package/node_modules/@buddi/core/dist/registry.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/registry.js +11 -2
- package/node_modules/@buddi/core/dist/registry.js.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/index.d.ts +1 -0
- package/node_modules/@buddi/core/dist/scheduler/index.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/index.js +1 -0
- package/node_modules/@buddi/core/dist/scheduler/index.js.map +1 -1
- package/node_modules/@buddi/core/dist/scheduler/manual.d.ts +50 -0
- package/node_modules/@buddi/core/dist/scheduler/manual.d.ts.map +1 -0
- package/node_modules/@buddi/core/dist/scheduler/manual.js +73 -0
- package/node_modules/@buddi/core/dist/scheduler/manual.js.map +1 -0
- package/node_modules/@buddi/core/dist/secrets/approval.d.ts +54 -0
- package/node_modules/@buddi/core/dist/secrets/approval.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js +58 -1
- package/node_modules/@buddi/core/dist/secrets/approval.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/settings.d.ts +178 -0
- package/node_modules/@buddi/core/dist/secrets/settings.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/settings.js +63 -6
- package/node_modules/@buddi/core/dist/secrets/settings.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/store.d.ts +31 -0
- package/node_modules/@buddi/core/dist/secrets/store.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/store.js +75 -0
- package/node_modules/@buddi/core/dist/secrets/store.js.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/secrets/use.js +68 -3
- package/node_modules/@buddi/core/dist/secrets/use.js.map +1 -1
- package/node_modules/@buddi/core/dist/tools.d.ts +22 -0
- package/node_modules/@buddi/core/dist/tools.d.ts.map +1 -1
- package/node_modules/@buddi/core/dist/tools.js.map +1 -1
- package/node_modules/@buddi/core/migrations/080_secret_requests.sql +14 -0
- package/node_modules/@buddi/gateway/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/gateway/dist/chat/session.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/chat/session.js +2 -1
- package/node_modules/@buddi/gateway/dist/chat/session.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.js +9 -1
- package/node_modules/@buddi/gateway/dist/mcp/requests.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js +3 -1
- package/node_modules/@buddi/gateway/dist/missions/execute.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts +7 -2
- package/node_modules/@buddi/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/reminders.js +27 -9
- package/node_modules/@buddi/gateway/dist/missions/reminders.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions/run-now.d.ts +38 -0
- package/node_modules/@buddi/gateway/dist/missions/run-now.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/missions/run-now.js +62 -0
- package/node_modules/@buddi/gateway/dist/missions/run-now.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/missions-cli.d.ts +1 -1
- package/node_modules/@buddi/gateway/dist/missions-cli.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/missions-cli.js +21 -10
- package/node_modules/@buddi/gateway/dist/missions-cli.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.d.ts +3 -12
- package/node_modules/@buddi/gateway/dist/serve.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/serve.js +2 -21
- package/node_modules/@buddi/gateway/dist/serve.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts +15 -3
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js +34 -7
- package/node_modules/@buddi/gateway/dist/surfaces/browser-cards.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js +8 -2
- package/node_modules/@buddi/gateway/dist/surfaces/offered-actions.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts +3 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/pending-question.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts +173 -0
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js +332 -0
- package/node_modules/@buddi/gateway/dist/surfaces/secret-request.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/system-context.js +1 -1
- package/node_modules/@buddi/gateway/dist/system-context.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/main.js +14 -3
- package/node_modules/@buddi/gateway/dist/telegram/main.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js +4 -1
- package/node_modules/@buddi/gateway/dist/telegram/surface.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js +16 -1
- package/node_modules/@buddi/gateway/dist/web/api-routes.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js +2 -2
- package/node_modules/@buddi/gateway/dist/web/approval-ask.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts +13 -0
- package/node_modules/@buddi/gateway/dist/web/browser-capture.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/browser-capture.js +24 -0
- package/node_modules/@buddi/gateway/dist/web/browser-capture.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts +26 -0
- package/node_modules/@buddi/gateway/dist/web/chat.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/chat.js +87 -2
- package/node_modules/@buddi/gateway/dist/web/chat.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts +30 -0
- package/node_modules/@buddi/gateway/dist/web/extension.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/extension.js +86 -6
- package/node_modules/@buddi/gateway/dist/web/extension.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/onboarding.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.d.ts +2 -0
- package/node_modules/@buddi/gateway/dist/web/read.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/read.js +2 -1
- package/node_modules/@buddi/gateway/dist/web/read.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts +26 -2
- package/node_modules/@buddi/gateway/dist/web/remote-hand.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/remote-hand.js +89 -28
- package/node_modules/@buddi/gateway/dist/web/remote-hand.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts +54 -0
- package/node_modules/@buddi/gateway/dist/web/secret-request.d.ts.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/secret-request.js +264 -0
- package/node_modules/@buddi/gateway/dist/web/secret-request.js.map +1 -0
- package/node_modules/@buddi/gateway/dist/web/secrets.d.ts +1 -0
- package/node_modules/@buddi/gateway/dist/web/secrets.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/secrets.js +1 -1
- package/node_modules/@buddi/gateway/dist/web/secrets.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/server.js +76 -4
- package/node_modules/@buddi/gateway/dist/web/server.js.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.d.ts +14 -0
- package/node_modules/@buddi/gateway/dist/web/write.d.ts.map +1 -1
- package/node_modules/@buddi/gateway/dist/web/write.js +21 -0
- package/node_modules/@buddi/gateway/dist/web/write.js.map +1 -1
- package/node_modules/@buddi/install/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts +7 -0
- package/node_modules/@buddi/runtime/dist/anthropic.d.ts.map +1 -1
- package/node_modules/@buddi/runtime/dist/anthropic.js +19 -1
- package/node_modules/@buddi/runtime/dist/anthropic.js.map +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.d.ts +1 -1
- package/node_modules/@buddi/runtime/dist/codex-direct.js +1 -1
- package/node_modules/@buddi/tool-artifacts/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts +16 -1
- package/node_modules/@buddi/tool-browser/dist/controller.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/controller.js +59 -5
- package/node_modules/@buddi/tool-browser/dist/controller.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/driver.d.ts +12 -0
- package/node_modules/@buddi/tool-browser/dist/driver.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/driver.js +41 -2
- package/node_modules/@buddi/tool-browser/dist/driver.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts +49 -9
- package/node_modules/@buddi/tool-browser/dist/extension.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/extension.js +145 -21
- package/node_modules/@buddi/tool-browser/dist/extension.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.d.ts +10 -6
- package/node_modules/@buddi/tool-browser/dist/index.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/index.js +22 -8
- package/node_modules/@buddi/tool-browser/dist/index.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts +10 -1
- package/node_modules/@buddi/tool-browser/dist/routes.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/routes.js +24 -0
- package/node_modules/@buddi/tool-browser/dist/routes.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts +48 -1
- package/node_modules/@buddi/tool-browser/dist/service.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/service.js +114 -11
- package/node_modules/@buddi/tool-browser/dist/service.js.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.d.ts +54 -3
- package/node_modules/@buddi/tool-browser/dist/types.d.ts.map +1 -1
- package/node_modules/@buddi/tool-browser/dist/types.js +17 -1
- package/node_modules/@buddi/tool-browser/dist/types.js.map +1 -1
- package/node_modules/@buddi/tool-email/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-host/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-mcp/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-memory/dist/.tsbuildinfo +1 -1
- package/node_modules/@buddi/tool-web/dist/.tsbuildinfo +1 -1
- package/node_modules/imapflow/CHANGELOG.md +30 -0
- package/node_modules/imapflow/dist/cjs/commands/authenticate.js +15 -4
- package/node_modules/imapflow/dist/cjs/commands/enable.js +6 -0
- package/node_modules/imapflow/dist/cjs/commands/fetch.js +22 -5
- package/node_modules/imapflow/dist/cjs/commands/select.d.ts +3 -14
- package/node_modules/imapflow/dist/cjs/commands/select.js +1 -4
- package/node_modules/imapflow/dist/cjs/commands/store.js +7 -6
- package/node_modules/imapflow/dist/cjs/download.js +139 -5
- package/node_modules/imapflow/dist/cjs/imap-flow.d.ts +2 -2
- package/node_modules/imapflow/dist/cjs/imap-flow.js +51 -12
- package/node_modules/imapflow/dist/cjs/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/cjs/package-info.js +1 -1
- package/node_modules/imapflow/dist/cjs/search-compiler.js +6 -3
- package/node_modules/imapflow/dist/cjs/tools.d.ts +14 -3
- package/node_modules/imapflow/dist/cjs/tools.js +68 -6
- package/node_modules/imapflow/dist/cjs/types.d.ts +9 -1
- package/node_modules/imapflow/dist/esm/commands/authenticate.js +15 -4
- package/node_modules/imapflow/dist/esm/commands/enable.js +6 -0
- package/node_modules/imapflow/dist/esm/commands/fetch.js +22 -5
- package/node_modules/imapflow/dist/esm/commands/select.d.ts +3 -14
- package/node_modules/imapflow/dist/esm/commands/select.js +1 -4
- package/node_modules/imapflow/dist/esm/commands/store.js +8 -7
- package/node_modules/imapflow/dist/esm/download.js +139 -5
- package/node_modules/imapflow/dist/esm/imap-flow.d.ts +2 -2
- package/node_modules/imapflow/dist/esm/imap-flow.js +52 -13
- package/node_modules/imapflow/dist/esm/package-info.d.ts +1 -1
- package/node_modules/imapflow/dist/esm/package-info.js +1 -1
- package/node_modules/imapflow/dist/esm/search-compiler.js +6 -3
- package/node_modules/imapflow/dist/esm/tools.d.ts +14 -3
- package/node_modules/imapflow/dist/esm/tools.js +67 -6
- package/node_modules/imapflow/dist/esm/types.d.ts +9 -1
- package/node_modules/imapflow/package.json +5 -3
- package/node_modules/playwright/README.md +4 -4
- package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +1 -1
- package/node_modules/playwright/lib/cli/testActions.js +8 -5
- package/node_modules/playwright/lib/common/index.js +37 -23
- package/node_modules/playwright/lib/common/index.js.txt +8 -9
- package/node_modules/playwright/lib/index.js +16 -4
- package/node_modules/playwright/lib/matchers/expect.js +13 -7
- package/node_modules/playwright/lib/matchers/expect.js.txt +4 -4
- package/node_modules/playwright/lib/program.js +2 -1
- package/node_modules/playwright/lib/runner/index.js +438 -244
- package/node_modules/playwright/lib/runner/index.js.txt +12 -11
- package/node_modules/playwright/lib/transform/babelBundle.js +2612 -2396
- package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +15 -15
- package/node_modules/playwright/lib/transform/babelBundle.js.txt +14 -11
- package/node_modules/playwright/lib/transform/esmLoader.js +17 -5
- package/node_modules/playwright/lib/transform/esmLoader.js.txt +3 -3
- package/node_modules/playwright/lib/worker/workerProcessEntry.js +17 -18
- package/node_modules/playwright/package.json +2 -7
- package/node_modules/playwright/types/test.d.ts +156 -39
- package/node_modules/playwright-core/browsers.json +9 -9
- package/node_modules/playwright-core/cli.js +1 -0
- package/node_modules/playwright-core/lib/bootstrap.js +61 -0
- package/node_modules/playwright-core/lib/coreBundle.js +6393 -4170
- package/node_modules/playwright-core/lib/server/electron/loader.js +4 -0
- package/node_modules/playwright-core/lib/tools/cli-client/cli.js +2 -1
- package/node_modules/playwright-core/lib/tools/cli-client/help.json +99 -12
- package/node_modules/playwright-core/lib/tools/cli-client/output.js +17 -16
- package/node_modules/playwright-core/lib/tools/cli-client/program.js +8 -4
- package/node_modules/playwright-core/lib/tools/cli-client/session.js +2 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/SKILL.md +71 -3
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/running-code.md +4 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/session-management.md +2 -0
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/test-generation.md +1 -1
- package/node_modules/playwright-core/lib/tools/skills/playwright-cli/references/video-recording.md +76 -3
- package/node_modules/playwright-core/lib/tools/skills/playwright-trace/SKILL.md +1 -1
- package/node_modules/playwright-core/lib/utilsBundle.js +948 -227
- package/node_modules/playwright-core/lib/utilsBundle.js.LICENSE +6 -6
- package/node_modules/playwright-core/lib/vite/htmlReport/report.js +1 -1
- package/node_modules/playwright-core/lib/vite/recorder/assets/{codeMirrorModule-CVQWJZAA.js → codeMirrorModule-DK72OMRi.js} +1 -1
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-Cn0mmDuv.js +129 -0
- package/node_modules/playwright-core/lib/vite/recorder/index.html +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/{codeMirrorModule-BbkfBe3n.js → codeMirrorModule-BEB2e8M3.js} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-D-g2vrvf.js +184 -0
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/{xtermModule-DywYcAf8.js → xtermModule-B794rD2Z.js} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/{defaultSettingsView.Bqk9acqE.css → defaultSettingsView.C8BeHuxd.css} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/{index.B4cLoZK3.js → index.7-c5LSTW.js} +1 -1
- package/node_modules/playwright-core/lib/vite/traceViewer/index.html +3 -3
- package/node_modules/playwright-core/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/node_modules/playwright-core/lib/vite/traceViewer/{uiMode.CU5KtEkS.js → uiMode.CYwC_gH1.js} +4 -4
- package/node_modules/playwright-core/lib/vite/traceViewer/uiMode.html +3 -3
- package/node_modules/playwright-core/package.json +1 -1
- package/node_modules/playwright-core/types/protocol.d.ts +468 -337
- package/node_modules/playwright-core/types/types.d.ts +572 -37
- package/package.json +2 -2
- package/packages/cli/dist/.tsbuildinfo +1 -1
- package/packages/cli/dist/commands.d.ts.map +1 -1
- package/packages/cli/dist/commands.js +11 -1
- package/packages/cli/dist/commands.js.map +1 -1
- package/packages/core/dist/.tsbuildinfo +1 -1
- package/packages/core/dist/plugin/index.d.ts +1 -1
- package/packages/core/dist/plugin/index.d.ts.map +1 -1
- package/packages/core/dist/plugin/index.js.map +1 -1
- package/packages/core/dist/questions/store.d.ts +3 -1
- package/packages/core/dist/questions/store.d.ts.map +1 -1
- package/packages/core/dist/questions/store.js +3 -3
- package/packages/core/dist/questions/store.js.map +1 -1
- package/packages/core/dist/questions/types.d.ts +46 -1
- package/packages/core/dist/questions/types.d.ts.map +1 -1
- package/packages/core/dist/questions/types.js +2 -1
- package/packages/core/dist/questions/types.js.map +1 -1
- package/packages/core/dist/registry.d.ts.map +1 -1
- package/packages/core/dist/registry.js +11 -2
- package/packages/core/dist/registry.js.map +1 -1
- package/packages/core/dist/scheduler/index.d.ts +1 -0
- package/packages/core/dist/scheduler/index.d.ts.map +1 -1
- package/packages/core/dist/scheduler/index.js +1 -0
- package/packages/core/dist/scheduler/index.js.map +1 -1
- package/packages/core/dist/scheduler/manual.d.ts +50 -0
- package/packages/core/dist/scheduler/manual.d.ts.map +1 -0
- package/packages/core/dist/scheduler/manual.js +73 -0
- package/packages/core/dist/scheduler/manual.js.map +1 -0
- package/packages/core/dist/secrets/approval.d.ts +54 -0
- package/packages/core/dist/secrets/approval.d.ts.map +1 -1
- package/packages/core/dist/secrets/approval.js +58 -1
- package/packages/core/dist/secrets/approval.js.map +1 -1
- package/packages/core/dist/secrets/settings.d.ts +178 -0
- package/packages/core/dist/secrets/settings.d.ts.map +1 -1
- package/packages/core/dist/secrets/settings.js +63 -6
- package/packages/core/dist/secrets/settings.js.map +1 -1
- package/packages/core/dist/secrets/store.d.ts +31 -0
- package/packages/core/dist/secrets/store.d.ts.map +1 -1
- package/packages/core/dist/secrets/store.js +75 -0
- package/packages/core/dist/secrets/store.js.map +1 -1
- package/packages/core/dist/secrets/use.d.ts.map +1 -1
- package/packages/core/dist/secrets/use.js +68 -3
- package/packages/core/dist/secrets/use.js.map +1 -1
- package/packages/core/dist/tools.d.ts +22 -0
- package/packages/core/dist/tools.d.ts.map +1 -1
- package/packages/core/dist/tools.js.map +1 -1
- package/packages/core/migrations/080_secret_requests.sql +14 -0
- package/packages/gateway/dist/.tsbuildinfo +1 -1
- package/packages/gateway/dist/chat/session.d.ts.map +1 -1
- package/packages/gateway/dist/chat/session.js +2 -1
- package/packages/gateway/dist/chat/session.js.map +1 -1
- package/packages/gateway/dist/mcp/requests.d.ts.map +1 -1
- package/packages/gateway/dist/mcp/requests.js +9 -1
- package/packages/gateway/dist/mcp/requests.js.map +1 -1
- package/packages/gateway/dist/missions/execute.d.ts.map +1 -1
- package/packages/gateway/dist/missions/execute.js +3 -1
- package/packages/gateway/dist/missions/execute.js.map +1 -1
- package/packages/gateway/dist/missions/reminders.d.ts +7 -2
- package/packages/gateway/dist/missions/reminders.d.ts.map +1 -1
- package/packages/gateway/dist/missions/reminders.js +27 -9
- package/packages/gateway/dist/missions/reminders.js.map +1 -1
- package/packages/gateway/dist/missions/run-now.d.ts +38 -0
- package/packages/gateway/dist/missions/run-now.d.ts.map +1 -0
- package/packages/gateway/dist/missions/run-now.js +62 -0
- package/packages/gateway/dist/missions/run-now.js.map +1 -0
- package/packages/gateway/dist/missions-cli.d.ts +1 -1
- package/packages/gateway/dist/missions-cli.d.ts.map +1 -1
- package/packages/gateway/dist/missions-cli.js +21 -10
- package/packages/gateway/dist/missions-cli.js.map +1 -1
- package/packages/gateway/dist/serve.d.ts +3 -12
- package/packages/gateway/dist/serve.d.ts.map +1 -1
- package/packages/gateway/dist/serve.js +2 -21
- package/packages/gateway/dist/serve.js.map +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.d.ts +15 -3
- package/packages/gateway/dist/surfaces/browser-cards.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/browser-cards.js +34 -7
- package/packages/gateway/dist/surfaces/browser-cards.js.map +1 -1
- package/packages/gateway/dist/surfaces/offered-actions.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/offered-actions.js +8 -2
- package/packages/gateway/dist/surfaces/offered-actions.js.map +1 -1
- package/packages/gateway/dist/surfaces/pending-question.d.ts +3 -1
- package/packages/gateway/dist/surfaces/pending-question.d.ts.map +1 -1
- package/packages/gateway/dist/surfaces/pending-question.js.map +1 -1
- package/packages/gateway/dist/surfaces/secret-request.d.ts +173 -0
- package/packages/gateway/dist/surfaces/secret-request.d.ts.map +1 -0
- package/packages/gateway/dist/surfaces/secret-request.js +332 -0
- package/packages/gateway/dist/surfaces/secret-request.js.map +1 -0
- package/packages/gateway/dist/system-context.js +1 -1
- package/packages/gateway/dist/system-context.js.map +1 -1
- package/packages/gateway/dist/telegram/main.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/main.js +14 -3
- package/packages/gateway/dist/telegram/main.js.map +1 -1
- package/packages/gateway/dist/telegram/surface.d.ts.map +1 -1
- package/packages/gateway/dist/telegram/surface.js +4 -1
- package/packages/gateway/dist/telegram/surface.js.map +1 -1
- package/packages/gateway/dist/web/api-routes.d.ts.map +1 -1
- package/packages/gateway/dist/web/api-routes.js +16 -1
- package/packages/gateway/dist/web/api-routes.js.map +1 -1
- package/packages/gateway/dist/web/approval-ask.js +2 -2
- package/packages/gateway/dist/web/approval-ask.js.map +1 -1
- package/packages/gateway/dist/web/browser-capture.d.ts +13 -0
- package/packages/gateway/dist/web/browser-capture.d.ts.map +1 -0
- package/packages/gateway/dist/web/browser-capture.js +24 -0
- package/packages/gateway/dist/web/browser-capture.js.map +1 -0
- package/packages/gateway/dist/web/chat.d.ts +26 -0
- package/packages/gateway/dist/web/chat.d.ts.map +1 -1
- package/packages/gateway/dist/web/chat.js +87 -2
- package/packages/gateway/dist/web/chat.js.map +1 -1
- package/packages/gateway/dist/web/extension.d.ts +30 -0
- package/packages/gateway/dist/web/extension.d.ts.map +1 -1
- package/packages/gateway/dist/web/extension.js +86 -6
- package/packages/gateway/dist/web/extension.js.map +1 -1
- package/packages/gateway/dist/web/onboarding.js +1 -1
- package/packages/gateway/dist/web/onboarding.js.map +1 -1
- package/packages/gateway/dist/web/read.d.ts +2 -0
- package/packages/gateway/dist/web/read.d.ts.map +1 -1
- package/packages/gateway/dist/web/read.js +2 -1
- package/packages/gateway/dist/web/read.js.map +1 -1
- package/packages/gateway/dist/web/remote-hand.d.ts +26 -2
- package/packages/gateway/dist/web/remote-hand.d.ts.map +1 -1
- package/packages/gateway/dist/web/remote-hand.js +89 -28
- package/packages/gateway/dist/web/remote-hand.js.map +1 -1
- package/packages/gateway/dist/web/secret-request.d.ts +54 -0
- package/packages/gateway/dist/web/secret-request.d.ts.map +1 -0
- package/packages/gateway/dist/web/secret-request.js +264 -0
- package/packages/gateway/dist/web/secret-request.js.map +1 -0
- package/packages/gateway/dist/web/secrets.d.ts +1 -0
- package/packages/gateway/dist/web/secrets.d.ts.map +1 -1
- package/packages/gateway/dist/web/secrets.js +1 -1
- package/packages/gateway/dist/web/secrets.js.map +1 -1
- package/packages/gateway/dist/web/server.d.ts.map +1 -1
- package/packages/gateway/dist/web/server.js +76 -4
- package/packages/gateway/dist/web/server.js.map +1 -1
- package/packages/gateway/dist/web/write.d.ts +14 -0
- package/packages/gateway/dist/web/write.d.ts.map +1 -1
- package/packages/gateway/dist/web/write.js +21 -0
- package/packages/gateway/dist/web/write.js.map +1 -1
- package/packages/install/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/.tsbuildinfo +1 -1
- package/packages/runtime/dist/anthropic.d.ts +7 -0
- package/packages/runtime/dist/anthropic.d.ts.map +1 -1
- package/packages/runtime/dist/anthropic.js +19 -1
- package/packages/runtime/dist/anthropic.js.map +1 -1
- package/packages/runtime/dist/codex-direct.d.ts +1 -1
- package/packages/runtime/dist/codex-direct.js +1 -1
- package/packages/tools/artifacts/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/.tsbuildinfo +1 -1
- package/packages/tools/browser/dist/controller.d.ts +16 -1
- package/packages/tools/browser/dist/controller.d.ts.map +1 -1
- package/packages/tools/browser/dist/controller.js +59 -5
- package/packages/tools/browser/dist/controller.js.map +1 -1
- package/packages/tools/browser/dist/driver.d.ts +12 -0
- package/packages/tools/browser/dist/driver.d.ts.map +1 -1
- package/packages/tools/browser/dist/driver.js +41 -2
- package/packages/tools/browser/dist/driver.js.map +1 -1
- package/packages/tools/browser/dist/extension.d.ts +49 -9
- package/packages/tools/browser/dist/extension.d.ts.map +1 -1
- package/packages/tools/browser/dist/extension.js +145 -21
- package/packages/tools/browser/dist/extension.js.map +1 -1
- package/packages/tools/browser/dist/index.d.ts +10 -6
- package/packages/tools/browser/dist/index.d.ts.map +1 -1
- package/packages/tools/browser/dist/index.js +22 -8
- package/packages/tools/browser/dist/index.js.map +1 -1
- package/packages/tools/browser/dist/routes.d.ts +10 -1
- package/packages/tools/browser/dist/routes.d.ts.map +1 -1
- package/packages/tools/browser/dist/routes.js +24 -0
- package/packages/tools/browser/dist/routes.js.map +1 -1
- package/packages/tools/browser/dist/service.d.ts +48 -1
- package/packages/tools/browser/dist/service.d.ts.map +1 -1
- package/packages/tools/browser/dist/service.js +114 -11
- package/packages/tools/browser/dist/service.js.map +1 -1
- package/packages/tools/browser/dist/types.d.ts +54 -3
- package/packages/tools/browser/dist/types.d.ts.map +1 -1
- package/packages/tools/browser/dist/types.js +17 -1
- package/packages/tools/browser/dist/types.js.map +1 -1
- package/packages/tools/email/dist/.tsbuildinfo +1 -1
- package/packages/tools/host/dist/.tsbuildinfo +1 -1
- package/packages/tools/mcp/dist/.tsbuildinfo +1 -1
- package/packages/tools/memory/dist/.tsbuildinfo +1 -1
- package/packages/tools/web/dist/.tsbuildinfo +1 -1
- package/packages/web/dist/assets/index-oxmxR39o.js +155 -0
- package/packages/web/dist/assets/index-rMRjibNI.css +1 -0
- package/packages/web/dist/assets/{lottie_light-BJaxbmZQ.js → lottie_light-DROBTM6Y.js} +1 -1
- package/packages/web/dist/build.json +1 -1
- package/packages/web/dist/index.html +2 -2
- package/packages/web/dist/precache.json +4 -4
- package/node_modules/playwright/jsx-runtime.js +0 -42
- package/node_modules/playwright/jsx-runtime.mjs +0 -21
- package/node_modules/playwright-core/lib/vite/recorder/assets/index-hrlLqLtq.js +0 -129
- package/node_modules/playwright-core/lib/vite/traceViewer/assets/defaultSettingsView-Ds6CBOo0.js +0 -182
- package/packages/web/dist/assets/index-DBVZzTau.css +0 -1
- package/packages/web/dist/assets/index-DqoP9iYJ.js +0 -155
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import libmime from 'libmime';
|
|
3
3
|
import { resolveCharset } from './charsets.js';
|
|
4
4
|
import { compiler } from './handler/imap-handler.js';
|
|
5
|
+
import imapFormalSyntax from './handler/imap-formal-syntax.js';
|
|
5
6
|
import { createHash } from 'node:crypto';
|
|
6
7
|
import { JPDecoder } from './jp-decoder.js';
|
|
7
8
|
import iconv from 'iconv-lite';
|
|
@@ -280,7 +281,8 @@ export function buildStatusQueryAttributes(connection, statusQuery) {
|
|
|
280
281
|
}
|
|
281
282
|
break;
|
|
282
283
|
case 'HIGHESTMODSEQ':
|
|
283
|
-
|
|
284
|
+
// QRESYNC implies CONDSTORE (RFC 7162 3.2.3)
|
|
285
|
+
if (connection.capabilities.has('CONDSTORE') || connection.capabilities.has('QRESYNC')) {
|
|
284
286
|
attributes.push({ type: 'ATOM', value: key.toUpperCase() });
|
|
285
287
|
}
|
|
286
288
|
break;
|
|
@@ -655,30 +657,74 @@ export function getColorFlags(color) {
|
|
|
655
657
|
}
|
|
656
658
|
return result;
|
|
657
659
|
}
|
|
660
|
+
/**
|
|
661
|
+
* Merges the FETCH rows a server sent for one message into one message object. A server may
|
|
662
|
+
* split the data items of a message over several FETCH responses, and may put an unsolicited
|
|
663
|
+
* one (a flag change made by another session) in between (RFC 9051 sections 7.5.2 and 5.2).
|
|
664
|
+
* Later rows win for single values, bodyParts, binaryParts and partialOrigins are combined.
|
|
665
|
+
*
|
|
666
|
+
* @param rows - Formatted rows of the same message, in the order they arrived
|
|
667
|
+
* @returns One message object holding the data of every row
|
|
668
|
+
*/
|
|
669
|
+
export function mergeFetchRows(rows) {
|
|
670
|
+
if (rows.length === 1) {
|
|
671
|
+
return rows[0];
|
|
672
|
+
}
|
|
673
|
+
let merged = {};
|
|
674
|
+
let partialOrigins;
|
|
675
|
+
for (let row of rows) {
|
|
676
|
+
let { bodyParts, binaryParts, ...rest } = row;
|
|
677
|
+
Object.assign(merged, rest);
|
|
678
|
+
// combined into collections of their own, so the rows stay untouched
|
|
679
|
+
bodyParts?.forEach((value, key) => (merged.bodyParts ??= new Map()).set(key, value));
|
|
680
|
+
binaryParts?.forEach(key => (merged.binaryParts ??= new Set()).add(key));
|
|
681
|
+
row.partialOrigins?.forEach((value, key) => (partialOrigins ??= new Map()).set(key, value));
|
|
682
|
+
}
|
|
683
|
+
if (partialOrigins) {
|
|
684
|
+
Object.defineProperty(merged, 'partialOrigins', { value: partialOrigins, writable: true, configurable: true });
|
|
685
|
+
}
|
|
686
|
+
return merged;
|
|
687
|
+
}
|
|
658
688
|
/**
|
|
659
689
|
* Formats a raw untagged FETCH response into a structured message object.
|
|
660
690
|
*
|
|
661
691
|
* @param untagged - Parsed untagged IMAP response
|
|
662
692
|
* @param mailbox - Current mailbox state object
|
|
663
693
|
* @param idHashAlgorithm - Hash for the fallback message id, `md5` unless the client was told otherwise
|
|
694
|
+
* @param connection - Connection the response arrived on, decodes Gmail labels like mailbox names
|
|
664
695
|
* @returns Formatted message object with properties like seq, uid, flags, envelope, etc.
|
|
665
696
|
*/
|
|
666
|
-
export async function formatMessageResponse(untagged, mailbox, idHashAlgorithm) {
|
|
697
|
+
export async function formatMessageResponse(untagged, mailbox, idHashAlgorithm, connection) {
|
|
667
698
|
let map = {};
|
|
668
699
|
// The sequence number indexes into mailbox state, so an unusable one is dropped rather
|
|
669
700
|
// than coerced to NaN or Infinity
|
|
670
701
|
map.seq = parseUintValue(untagged.command, MAX_UINT32_DIGITS) || undefined;
|
|
671
702
|
let key;
|
|
703
|
+
// the <origin> of a partial section ("BODY[2]<1024>"), kept for the value that follows
|
|
704
|
+
let origin = false;
|
|
705
|
+
let partialOrigins;
|
|
706
|
+
let recordOrigin = (sectionKey) => {
|
|
707
|
+
if (origin !== false) {
|
|
708
|
+
if (!partialOrigins) {
|
|
709
|
+
partialOrigins = new Map();
|
|
710
|
+
}
|
|
711
|
+
partialOrigins.set(sectionKey, origin);
|
|
712
|
+
}
|
|
713
|
+
};
|
|
672
714
|
let attributes = ((untagged.attributes && untagged.attributes[1]) || []);
|
|
673
715
|
for (let i = 0, len = attributes.length; i < len; i++) {
|
|
674
716
|
let attribute = attributes[i];
|
|
675
717
|
if (i % 2 === 0) {
|
|
718
|
+
origin = false;
|
|
676
719
|
key = (await compiler({
|
|
677
720
|
attributes: [attribute]
|
|
678
721
|
}))
|
|
679
722
|
.toString()
|
|
680
723
|
.toLowerCase()
|
|
681
|
-
.replace(
|
|
724
|
+
.replace(/<(\d+)(\.\d+)?>$/, (match, start) => {
|
|
725
|
+
origin = parseUintValue(start, MAX_UINT32_DIGITS);
|
|
726
|
+
return '';
|
|
727
|
+
});
|
|
682
728
|
continue;
|
|
683
729
|
}
|
|
684
730
|
/* c8 ignore start */ // defensive: key is always a string produced by the compiler above
|
|
@@ -723,6 +769,7 @@ export async function formatMessageResponse(untagged, mailbox, idHashAlgorithm)
|
|
|
723
769
|
case 'body[]':
|
|
724
770
|
case 'binary[]':
|
|
725
771
|
map.source = getBuffer(attribute);
|
|
772
|
+
recordOrigin('');
|
|
726
773
|
break;
|
|
727
774
|
case 'uid':
|
|
728
775
|
// A UID feeds mailbox.uidNext one line below, and from there every range
|
|
@@ -769,7 +816,8 @@ export async function formatMessageResponse(untagged, mailbox, idHashAlgorithm)
|
|
|
769
816
|
map.threadId = getString(attribute);
|
|
770
817
|
break;
|
|
771
818
|
case 'x-gm-labels':
|
|
772
|
-
|
|
819
|
+
// labels are mailbox names, modified UTF-7 unless UTF-8 is enabled
|
|
820
|
+
map.labels = new Set(getArray(attribute).map(label => (connection ? decodePath(connection, label) : label)));
|
|
773
821
|
break;
|
|
774
822
|
case 'rfc822.size':
|
|
775
823
|
map.size = getUint(attribute) || 0;
|
|
@@ -815,6 +863,7 @@ export async function formatMessageResponse(untagged, mailbox, idHashAlgorithm)
|
|
|
815
863
|
map.bodyParts = new Map();
|
|
816
864
|
}
|
|
817
865
|
map.bodyParts.set(partKey, value);
|
|
866
|
+
recordOrigin(partKey);
|
|
818
867
|
if (match[1].toLowerCase() === 'binary') {
|
|
819
868
|
// The part arrived via FETCH BINARY (RFC 3516, FETCH side folded
|
|
820
869
|
// into IMAP4rev2), so the server has already removed the
|
|
@@ -856,6 +905,10 @@ export async function formatMessageResponse(untagged, mailbox, idHashAlgorithm)
|
|
|
856
905
|
.update([path, mailbox.uidValidity?.toString() || '', map.uid.toString()].join(':'))
|
|
857
906
|
.digest('hex');
|
|
858
907
|
}
|
|
908
|
+
if (partialOrigins) {
|
|
909
|
+
// non-enumerable, so it stays out of logged and serialized fetch results
|
|
910
|
+
Object.defineProperty(map, 'partialOrigins', { value: partialOrigins, writable: true, configurable: true });
|
|
911
|
+
}
|
|
859
912
|
if (map.flags) {
|
|
860
913
|
let flagColor = getFlagColor(map.flags);
|
|
861
914
|
if (flagColor) {
|
|
@@ -1298,14 +1351,22 @@ export function formatDateTime(value) {
|
|
|
1298
1351
|
let timeStr = date.toISOString().substring(11, 19);
|
|
1299
1352
|
return `${dateStr} ${timeStr} +0000`;
|
|
1300
1353
|
}
|
|
1354
|
+
// the memoized ATOM-CHAR set of RFC 9051 section 9
|
|
1355
|
+
const atomChars = imapFormalSyntax['ATOM-CHAR'];
|
|
1301
1356
|
/**
|
|
1302
|
-
* Normalizes a flag string. Returns false for non-settable flags (e.g. \Recent)
|
|
1303
|
-
* and capitalizes system flags properly.
|
|
1357
|
+
* Normalizes a flag string. Returns false for non-settable flags (e.g. \Recent) and for
|
|
1358
|
+
* values that are not valid flags (keywords must be atoms), and capitalizes system flags properly.
|
|
1304
1359
|
*
|
|
1305
1360
|
* @param flag - Flag string to normalize
|
|
1306
1361
|
* @returns Normalized flag string, or false if the flag cannot be set
|
|
1307
1362
|
*/
|
|
1308
1363
|
export function formatFlag(flag) {
|
|
1364
|
+
// RFC 9051 section 9: flag-keyword is an atom and flag-extension is "\\" atom, the same check
|
|
1365
|
+
// the compiler uses to decide what it can send unquoted
|
|
1366
|
+
let atom = flag.charAt(0) === '\\' ? flag.slice(1) : flag;
|
|
1367
|
+
if (!atom || imapFormalSyntax.verify(atom, atomChars()) >= 0) {
|
|
1368
|
+
return false;
|
|
1369
|
+
}
|
|
1309
1370
|
switch (flag.toLowerCase()) {
|
|
1310
1371
|
case '\\recent':
|
|
1311
1372
|
// can not set or remove
|
|
@@ -499,6 +499,8 @@ export interface FetchQueryObject {
|
|
|
499
499
|
/** Include full message in the response, up to maxLength bytes */
|
|
500
500
|
maxLength?: number | undefined;
|
|
501
501
|
} | undefined;
|
|
502
|
+
/** Email ID (OBJECTID EMAILID or Gmail X-GM-MSGID) is always requested when the server supports either extension, so this is accepted but changes nothing */
|
|
503
|
+
emailId?: boolean | undefined;
|
|
502
504
|
/** If true then include thread ID in the response (only if server supports either OBJECTID or X-GM-EXT-1 extensions) */
|
|
503
505
|
threadId?: boolean | undefined;
|
|
504
506
|
/** If true then include GMail labels in the response (only if server supports X-GM-EXT-1 extension) */
|
|
@@ -653,9 +655,11 @@ export interface DownloadOptions {
|
|
|
653
655
|
maxBytes?: number | undefined;
|
|
654
656
|
/** How large content parts to ask from the server. Defaults to 65536 */
|
|
655
657
|
chunkSize?: number | undefined;
|
|
658
|
+
/** If true then requests the content with FETCH BINARY when the server supports it (BINARY or IMAP4rev2), so the server removes the transfer encoding */
|
|
659
|
+
binary?: boolean | undefined;
|
|
656
660
|
}
|
|
657
661
|
/** Options for downloadMany(): the download() options without `chunkSize`, as the parts come in one FETCH */
|
|
658
|
-
export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes'>;
|
|
662
|
+
export type DownloadManyOptions = Pick<DownloadOptions, 'uid' | 'maxBytes' | 'binary'>;
|
|
659
663
|
export interface DownloadManyPart {
|
|
660
664
|
meta: DownloadMeta;
|
|
661
665
|
content?: Buffer | null | undefined;
|
|
@@ -706,6 +710,10 @@ export interface MailboxOpenOptions {
|
|
|
706
710
|
readOnly?: boolean | undefined;
|
|
707
711
|
/** Optional description for mailbox lock tracking */
|
|
708
712
|
description?: string | undefined;
|
|
713
|
+
/** QRESYNC (RFC 7162): HIGHESTMODSEQ from an earlier session. With `uidValidity` and QRESYNC enabled, changes since then are reported as `flags` and `expunge` events. getMailboxLock() only applies it when it selects the mailbox, not when the mailbox is already open */
|
|
714
|
+
changedSince?: bigint | number | string | undefined;
|
|
715
|
+
/** QRESYNC (RFC 7162): the UIDVALIDITY known from the previous session, required with `changedSince` */
|
|
716
|
+
uidValidity?: bigint | number | string | undefined;
|
|
709
717
|
}
|
|
710
718
|
export interface MailboxLockOptions extends MailboxOpenOptions {
|
|
711
719
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "imapflow",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.10",
|
|
4
4
|
"description": "IMAP Client for Node",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/imap-flow.js",
|
|
@@ -51,7 +51,8 @@
|
|
|
51
51
|
"lint": "npm run typecheck && eslint .",
|
|
52
52
|
"lint:fix": "eslint . --fix",
|
|
53
53
|
"prepare": "npm run build",
|
|
54
|
-
"update": "rm -rf node_modules package-lock.json && ncu -u && npm install"
|
|
54
|
+
"update": "rm -rf node_modules package-lock.json && ncu -u && npm install",
|
|
55
|
+
"test:james": "bash test/integration/run-james-tests.sh"
|
|
55
56
|
},
|
|
56
57
|
"repository": {
|
|
57
58
|
"type": "git",
|
|
@@ -74,12 +75,13 @@
|
|
|
74
75
|
"eslint": "10.12.0",
|
|
75
76
|
"eslint-config-prettier": "10.1.8",
|
|
76
77
|
"globals": "17.13.0",
|
|
78
|
+
"imapkit": "4.1.1",
|
|
77
79
|
"prettier": "3.9.9",
|
|
78
80
|
"tsx": "4.23.15",
|
|
79
81
|
"types-node-legacy": "npm:@types/node@20.0.0",
|
|
80
82
|
"typescript": "6.0.3",
|
|
81
83
|
"typescript-eslint": "8.71.1",
|
|
82
|
-
"wrangler": "4.
|
|
84
|
+
"wrangler": "4.148.0"
|
|
83
85
|
},
|
|
84
86
|
"dependencies": {
|
|
85
87
|
"@zone-eu/mailsplit": "5.4.20",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🎭 Playwright
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/playwright) <!-- GEN:chromium-version-badge -->[](https://www.npmjs.com/package/playwright) <!-- GEN:chromium-version-badge -->[](https://www.chromium.org/Home)<!-- GEN:stop --> <!-- GEN:firefox-version-badge -->[](https://www.mozilla.org/en-US/firefox/new/)<!-- GEN:stop --> <!-- GEN:webkit-version-badge -->[](https://webkit.org/)<!-- GEN:stop --> [](https://aka.ms/playwright/discord)
|
|
4
4
|
|
|
5
5
|
## [Documentation](https://playwright.dev) | [API reference](https://playwright.dev/docs/api/class-playwright)
|
|
6
6
|
|
|
@@ -296,9 +296,9 @@ The [Playwright VS Code extension](https://marketplace.visualstudio.com/items?it
|
|
|
296
296
|
|
|
297
297
|
| | Linux | macOS | Windows |
|
|
298
298
|
| :--- | :---: | :---: | :---: |
|
|
299
|
-
| Chromium<sup>1</sup> <!-- GEN:chromium-version -->
|
|
300
|
-
| WebKit <!-- GEN:webkit-version -->
|
|
301
|
-
| Firefox <!-- GEN:firefox-version -->
|
|
299
|
+
| Chromium<sup>1</sup> <!-- GEN:chromium-version -->156.0.8078.4<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
|
300
|
+
| WebKit <!-- GEN:webkit-version -->27.2<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
|
301
|
+
| Firefox <!-- GEN:firefox-version -->157.0<!-- GEN:stop --> | :white_check_mark: | :white_check_mark: | :white_check_mark: |
|
|
302
302
|
|
|
303
303
|
Headless and headed execution on all platforms. <sup>1</sup> Uses [Chrome for Testing](https://developer.chrome.com/blog/chrome-for-testing) by default.
|
|
304
304
|
|
|
@@ -68,7 +68,7 @@ application behavior.
|
|
|
68
68
|
// seed: tests/seed.spec.ts
|
|
69
69
|
|
|
70
70
|
test.describe('Adding New Todos', () => {
|
|
71
|
-
test('Add Valid Todo', async { page } => {
|
|
71
|
+
test('Add Valid Todo', async ({ page }) => {
|
|
72
72
|
// 1. Click in the "What needs to be done?" input field
|
|
73
73
|
await page.click(...);
|
|
74
74
|
|
|
@@ -38,9 +38,7 @@ var import_path = __toESM(require("path"));
|
|
|
38
38
|
var import_common = require("../common");
|
|
39
39
|
var import_runner = require("../runner");
|
|
40
40
|
const { gracefullyProcessExitDoNotHang } = require("playwright-core/lib/coreBundle").utils;
|
|
41
|
-
const { startProfiling, stopProfiling } = require("playwright-core/lib/coreBundle").utils;
|
|
42
41
|
async function runTests(args, opts) {
|
|
43
|
-
await startProfiling();
|
|
44
42
|
const cliOverrides = overridesFromOptions(opts);
|
|
45
43
|
cliOverrides.argv = process.argv;
|
|
46
44
|
const config = await import_common.configLoader.loadConfigFromFile(opts.config, cliOverrides, opts.deps === false);
|
|
@@ -71,7 +69,6 @@ async function runTests(args, opts) {
|
|
|
71
69
|
project: opts.project || void 0,
|
|
72
70
|
reporter: Array.isArray(opts.reporter) ? opts.reporter : opts.reporter ? [opts.reporter] : void 0
|
|
73
71
|
});
|
|
74
|
-
await stopProfiling("runner");
|
|
75
72
|
const exitCode2 = status2 === "interrupted" ? 130 : status2 === "passed" ? 0 : 1;
|
|
76
73
|
gracefullyProcessExitDoNotHang(exitCode2);
|
|
77
74
|
return;
|
|
@@ -87,13 +84,11 @@ async function runTests(args, opts) {
|
|
|
87
84
|
grep: opts.grep
|
|
88
85
|
}
|
|
89
86
|
);
|
|
90
|
-
await stopProfiling("runner");
|
|
91
87
|
const exitCode2 = status2 === "interrupted" ? 130 : status2 === "passed" ? 0 : 1;
|
|
92
88
|
gracefullyProcessExitDoNotHang(exitCode2);
|
|
93
89
|
return;
|
|
94
90
|
}
|
|
95
91
|
const status = await import_runner.testRunner.runAllTestsWithConfig(config, options);
|
|
96
|
-
await stopProfiling("runner");
|
|
97
92
|
const exitCode = status === "interrupted" ? 130 : status === "passed" ? 0 : 1;
|
|
98
93
|
gracefullyProcessExitDoNotHang(exitCode);
|
|
99
94
|
}
|
|
@@ -130,6 +125,7 @@ function overridesFromOptions(options) {
|
|
|
130
125
|
reporter: resolveReporterOption(options.reporter),
|
|
131
126
|
additionalReporters: resolveReporterOption(options.addReporter),
|
|
132
127
|
shard: resolveShardOption(options.shard),
|
|
128
|
+
shuffle: resolveShuffleOption(options.shuffle),
|
|
133
129
|
timeout: options.timeout ? parseInt(options.timeout, 10) : void 0,
|
|
134
130
|
tsconfig: options.tsconfig ? import_path.default.resolve(process.cwd(), options.tsconfig) : void 0,
|
|
135
131
|
ignoreSnapshots: options.ignoreSnapshots ? !!options.ignoreSnapshots : void 0,
|
|
@@ -167,6 +163,13 @@ function resolveReporterOption(reporter) {
|
|
|
167
163
|
return void 0;
|
|
168
164
|
return reporter.split(",").map((r) => [resolveReporter(r)]);
|
|
169
165
|
}
|
|
166
|
+
function resolveShuffleOption(shuffle) {
|
|
167
|
+
if (!shuffle)
|
|
168
|
+
return void 0;
|
|
169
|
+
if (shuffle === true)
|
|
170
|
+
return String(Math.floor(Math.random() * 1e9));
|
|
171
|
+
return shuffle;
|
|
172
|
+
}
|
|
170
173
|
function resolveShardOption(shard) {
|
|
171
174
|
if (!shard)
|
|
172
175
|
return void 0;
|
|
@@ -518,6 +518,7 @@ var FullConfigInternal = class {
|
|
|
518
518
|
metadata: metadata ?? userConfig.metadata,
|
|
519
519
|
preserveOutput: takeFirst(userConfig.preserveOutput, "always"),
|
|
520
520
|
projects: [],
|
|
521
|
+
filteredProjects: [],
|
|
521
522
|
quiet: takeFirst(configCLIOverrides.quiet, userConfig.quiet, false),
|
|
522
523
|
reporter: [...takeFirst(configCLIOverrides.reporter, resolveReporters(userConfig.reporter, configDir), [[defaultReporter]]), ...configCLIOverrides.additionalReporters ?? []],
|
|
523
524
|
reportSlowTests: takeFirst(userConfig.reportSlowTests, {
|
|
@@ -527,7 +528,7 @@ var FullConfigInternal = class {
|
|
|
527
528
|
}),
|
|
528
529
|
shard: takeFirst(configCLIOverrides.shard, userConfig.shard, null),
|
|
529
530
|
tags: globalTags,
|
|
530
|
-
updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, "
|
|
531
|
+
updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, "default"),
|
|
531
532
|
updateSourceMethod: takeFirst(configCLIOverrides.updateSourceMethod, userConfig.updateSourceMethod, "patch"),
|
|
532
533
|
version: import_package2.packageJSON.version,
|
|
533
534
|
workers: resolveWorkers(takeFirst(configCLIOverrides.debug || configCLIOverrides.pause ? 1 : void 0, configCLIOverrides.workers, userConfig.workers, "50%")),
|
|
@@ -553,6 +554,7 @@ var FullConfigInternal = class {
|
|
|
553
554
|
resolveProjectDependencies(this.projects);
|
|
554
555
|
this._assignUniqueProjectIds(this.projects);
|
|
555
556
|
this.config.projects = this.projects.map((p) => p.project);
|
|
557
|
+
this.config.filteredProjects = this.config.projects;
|
|
556
558
|
}
|
|
557
559
|
_assignUniqueProjectIds(projects) {
|
|
558
560
|
const usedNames = /* @__PURE__ */ new Set();
|
|
@@ -611,6 +613,7 @@ var FullProjectInternal = class {
|
|
|
611
613
|
this.workers = projectConfig.workers ? resolveWorkers(projectConfig.workers) : void 0;
|
|
612
614
|
if (configCLIOverrides.debug && this.workers)
|
|
613
615
|
this.workers = 1;
|
|
616
|
+
this.default = projectConfig.default ?? true;
|
|
614
617
|
}
|
|
615
618
|
};
|
|
616
619
|
function pathResolve(baseDir, relative) {
|
|
@@ -687,7 +690,7 @@ function toReporters(reporters) {
|
|
|
687
690
|
return [[reporters]];
|
|
688
691
|
return reporters;
|
|
689
692
|
}
|
|
690
|
-
var builtInReporters = ["list", "line", "dot", "json", "junit", "null", "github", "html", "blob", "perfetto"];
|
|
693
|
+
var builtInReporters = ["list", "line", "dot", "json", "junit", "null", "github", "html", "blob", "perfetto", "coverage"];
|
|
691
694
|
function resolveScript(id, rootDir) {
|
|
692
695
|
if (!id)
|
|
693
696
|
return void 0;
|
|
@@ -740,6 +743,7 @@ var import_crypto = __toESM(require("crypto"));
|
|
|
740
743
|
var import_path4 = __toESM(require("path"));
|
|
741
744
|
var import_fs4 = __toESM(require("fs"));
|
|
742
745
|
var json5 = require("playwright-core/lib/utilsBundle").json5;
|
|
746
|
+
var jsxOptionNames = ["jsx", "jsxFactory", "jsxFragmentFactory", "jsxImportSource"];
|
|
743
747
|
function loadTsConfig(configPath) {
|
|
744
748
|
try {
|
|
745
749
|
const references = [];
|
|
@@ -779,6 +783,10 @@ function innerLoadTsConfig(configFilePath, references, visited = /* @__PURE__ */
|
|
|
779
783
|
}
|
|
780
784
|
if (parsedConfig.compilerOptions?.allowJs !== void 0)
|
|
781
785
|
result2.allowJs = parsedConfig.compilerOptions.allowJs;
|
|
786
|
+
for (const name of jsxOptionNames) {
|
|
787
|
+
if (parsedConfig.compilerOptions?.[name] !== void 0)
|
|
788
|
+
result2[name] = parsedConfig.compilerOptions[name];
|
|
789
|
+
}
|
|
782
790
|
if (parsedConfig.compilerOptions?.paths !== void 0) {
|
|
783
791
|
result2.paths = {
|
|
784
792
|
mapping: parsedConfig.compilerOptions.paths,
|
|
@@ -947,7 +955,13 @@ function validateTsConfig(tsconfig) {
|
|
|
947
955
|
return {
|
|
948
956
|
allowJs: !!tsconfig.allowJs,
|
|
949
957
|
pathsBase,
|
|
950
|
-
paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback)
|
|
958
|
+
paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback),
|
|
959
|
+
jsx: tsconfig.jsx ? {
|
|
960
|
+
jsx: tsconfig.jsx.toLowerCase(),
|
|
961
|
+
jsxFactory: tsconfig.jsxFactory,
|
|
962
|
+
jsxFragmentFactory: tsconfig.jsxFragmentFactory,
|
|
963
|
+
jsxImportSource: tsconfig.jsxImportSource
|
|
964
|
+
} : void 0
|
|
951
965
|
};
|
|
952
966
|
}
|
|
953
967
|
function loadAndValidateTsconfigsForFile(file2) {
|
|
@@ -1052,21 +1066,22 @@ function shouldTransform(filename) {
|
|
|
1052
1066
|
function transformHook(originalCode, filename, moduleUrl) {
|
|
1053
1067
|
const hasPreprocessor = process.env.PW_TEST_SOURCE_TRANSFORM && process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE && process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE.split(pathSeparator).some((f) => filename.startsWith(f));
|
|
1054
1068
|
const pluginsEpilogue = hasPreprocessor ? [[process.env.PW_TEST_SOURCE_TRANSFORM]] : [];
|
|
1055
|
-
const
|
|
1069
|
+
const jsx = loadAndValidateTsconfigsForFile(filename).find((tsconfig) => tsconfig.jsx)?.jsx;
|
|
1070
|
+
const hash = calculateHash(originalCode, filename, !!moduleUrl, pluginsEpilogue, jsx);
|
|
1056
1071
|
const { cachedCode, addToCache, serializedCache } = getFromCompilationCache(filename, hash, moduleUrl);
|
|
1057
1072
|
if (cachedCode !== void 0)
|
|
1058
1073
|
return { code: cachedCode, serializedCache };
|
|
1059
1074
|
process.env.BROWSERSLIST_IGNORE_OLD_DATA = "true";
|
|
1060
1075
|
const { babelTransform } = require((0, import_package3.libPath)("transform", "babelBundle"));
|
|
1061
|
-
const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsEpilogue,
|
|
1076
|
+
const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsEpilogue, jsx);
|
|
1062
1077
|
if (!babelResult?.code)
|
|
1063
1078
|
return { code: originalCode, serializedCache };
|
|
1064
1079
|
const { code, map } = babelResult;
|
|
1065
1080
|
const added = addToCache(code, map);
|
|
1066
1081
|
return { code, serializedCache: added.serializedCache };
|
|
1067
1082
|
}
|
|
1068
|
-
function calculateHash(content, filePath, isModule2, pluginsEpilogue) {
|
|
1069
|
-
const hash = import_crypto.default.createHash("sha1").update(isModule2 ? "esm" : "no_esm").update(content).update(filePath).update(version).update(pluginsEpilogue.map((p) => p[0]).join(",")).digest("hex");
|
|
1083
|
+
function calculateHash(content, filePath, isModule2, pluginsEpilogue, jsx) {
|
|
1084
|
+
const hash = import_crypto.default.createHash("sha1").update(isModule2 ? "esm" : "no_esm").update(content).update(filePath).update(version).update(pluginsEpilogue.map((p) => p[0]).join(",")).update(jsx ? JSON.stringify(jsx) : "").digest("hex");
|
|
1070
1085
|
return hash;
|
|
1071
1086
|
}
|
|
1072
1087
|
async function requireOrImport(file) {
|
|
@@ -1283,8 +1298,7 @@ async function loadConfig(location, overrides, ignoreProjectDependencies = false
|
|
|
1283
1298
|
}
|
|
1284
1299
|
}
|
|
1285
1300
|
const external = userConfig.build?.external || [];
|
|
1286
|
-
|
|
1287
|
-
await setTransformConfig({ external, jsxImportSource });
|
|
1301
|
+
await setTransformConfig({ external });
|
|
1288
1302
|
if (!overrides?.tsconfig)
|
|
1289
1303
|
await setSingleTSConfig(fullConfig?.singleTSConfigPath);
|
|
1290
1304
|
return fullConfig;
|
|
@@ -1387,8 +1401,8 @@ function validateConfig(file2, config) {
|
|
|
1387
1401
|
throw errorWithFile(file2, `config.shard.current must be a positive number, not greater than config.shard.total`);
|
|
1388
1402
|
}
|
|
1389
1403
|
if ("updateSnapshots" in config && config.updateSnapshots !== void 0) {
|
|
1390
|
-
if (typeof config.updateSnapshots !== "string" || !["all", "changed", "missing", "none"].includes(config.updateSnapshots))
|
|
1391
|
-
throw errorWithFile(file2, `config.updateSnapshots must be one of "all", "changed", "missing" or "
|
|
1404
|
+
if (typeof config.updateSnapshots !== "string" || !["all", "changed", "missing", "none", "default"].includes(config.updateSnapshots))
|
|
1405
|
+
throw errorWithFile(file2, `config.updateSnapshots must be one of "all", "changed", "missing", "none" or "default"`);
|
|
1392
1406
|
}
|
|
1393
1407
|
if ("retryStrategy" in config && config.retryStrategy !== void 0) {
|
|
1394
1408
|
if (typeof config.retryStrategy !== "string" || !["immediate", "isolated"].includes(config.retryStrategy))
|
|
@@ -1424,6 +1438,10 @@ function validateProject(file2, project, title) {
|
|
|
1424
1438
|
if (typeof project.testDir !== "string")
|
|
1425
1439
|
throw errorWithFile(file2, `${title}.testDir must be a string`);
|
|
1426
1440
|
}
|
|
1441
|
+
if (project.expect?.toHaveScreenshot?.type !== void 0) {
|
|
1442
|
+
if (!["png", "webp"].includes(project.expect.toHaveScreenshot.type))
|
|
1443
|
+
throw errorWithFile(file2, `${title}.expect.toHaveScreenshot.type must be one of "png" or "webp"`);
|
|
1444
|
+
}
|
|
1427
1445
|
for (const prop of ["testIgnore", "testMatch"]) {
|
|
1428
1446
|
if (prop in project && project[prop] !== void 0) {
|
|
1429
1447
|
const value = project[prop];
|
|
@@ -1889,7 +1907,6 @@ var import_bootstrap = require("playwright-core/lib/bootstrap");
|
|
|
1889
1907
|
var import_package4 = require("../package");
|
|
1890
1908
|
var { ManualPromise } = require("playwright-core/lib/coreBundle").iso;
|
|
1891
1909
|
var { setTimeOrigin } = require("playwright-core/lib/coreBundle").iso;
|
|
1892
|
-
var { startProfiling, stopProfiling } = require("playwright-core/lib/coreBundle").utils;
|
|
1893
1910
|
var { setBoxedStackPrefixes } = require("playwright-core/lib/coreBundle").utils;
|
|
1894
1911
|
var ProcessRunner = class {
|
|
1895
1912
|
async gracefullyClose() {
|
|
@@ -1909,7 +1926,6 @@ var ProcessRunner = class {
|
|
|
1909
1926
|
var gracefullyCloseCalled = false;
|
|
1910
1927
|
var forceExitInitiated = false;
|
|
1911
1928
|
var processRunner;
|
|
1912
|
-
var processName;
|
|
1913
1929
|
var startingEnv = { ...process.env };
|
|
1914
1930
|
setBoxedStackPrefixes([import_package4.packageRoot]);
|
|
1915
1931
|
function startProcessRunner(create) {
|
|
@@ -1922,10 +1938,8 @@ function startProcessRunner(create) {
|
|
|
1922
1938
|
process.on("message", async (message) => {
|
|
1923
1939
|
if (message.method === "__init__") {
|
|
1924
1940
|
const { processParams, runnerParams } = message.params;
|
|
1925
|
-
void startProfiling();
|
|
1926
1941
|
setTimeOrigin(processParams.timeOrigin);
|
|
1927
1942
|
processRunner = create(runnerParams);
|
|
1928
|
-
processName = processParams.processName;
|
|
1929
1943
|
return;
|
|
1930
1944
|
}
|
|
1931
1945
|
if (message.method === "__stop__") {
|
|
@@ -1955,7 +1969,7 @@ var kHeartbeatInterval = 1e3;
|
|
|
1955
1969
|
async function gracefullyCloseAndExit(forceExit) {
|
|
1956
1970
|
if (forceExit && !forceExitInitiated) {
|
|
1957
1971
|
forceExitInitiated = true;
|
|
1958
|
-
setTimeout(() =>
|
|
1972
|
+
setTimeout(() => (0, import_bootstrap.processExit)(0), kForceExitTimeout);
|
|
1959
1973
|
}
|
|
1960
1974
|
if (!gracefullyCloseCalled) {
|
|
1961
1975
|
gracefullyCloseCalled = true;
|
|
@@ -1964,10 +1978,7 @@ async function gracefullyCloseAndExit(forceExit) {
|
|
|
1964
1978
|
await processRunner?.gracefullyClose().catch(() => {
|
|
1965
1979
|
});
|
|
1966
1980
|
clearInterval(heartbeat);
|
|
1967
|
-
|
|
1968
|
-
await stopProfiling(processName).catch(() => {
|
|
1969
|
-
});
|
|
1970
|
-
process.exit(0);
|
|
1981
|
+
(0, import_bootstrap.processExit)(0);
|
|
1971
1982
|
}
|
|
1972
1983
|
}
|
|
1973
1984
|
function sendMessageToParent(message) {
|
|
@@ -2323,6 +2334,8 @@ var TestTypeImpl = class _TestTypeImpl {
|
|
|
2323
2334
|
const suite = this._currentSuite(location, `test.describe.configure()`);
|
|
2324
2335
|
if (!suite)
|
|
2325
2336
|
return;
|
|
2337
|
+
if (options.lock !== void 0)
|
|
2338
|
+
suite._locks.push(...validateTestDetails({ lock: options.lock }, location).locks);
|
|
2326
2339
|
if (options.timeout !== void 0)
|
|
2327
2340
|
suite._timeout = options.timeout;
|
|
2328
2341
|
if (options.retries !== void 0)
|
|
@@ -2395,13 +2408,13 @@ var TestTypeImpl = class _TestTypeImpl {
|
|
|
2395
2408
|
if (!testInfo)
|
|
2396
2409
|
throw new Error(`test.step() can only be called from a test`);
|
|
2397
2410
|
await testInfo._onUserStepBegin?.(title);
|
|
2398
|
-
const step = testInfo._addStep({ category: "test.step", title, subtitle: options.subtitle,
|
|
2411
|
+
const step = testInfo._addStep({ category: "test.step", title, subtitle: options.subtitle, stack: options.location ? [options.location] : void 0, box: options.box, params: options.params });
|
|
2399
2412
|
return await currentZone().with("stepZone", step).run(async () => {
|
|
2400
2413
|
try {
|
|
2401
2414
|
let result2 = void 0;
|
|
2402
2415
|
result2 = await raceAgainstDeadline(async () => {
|
|
2403
2416
|
try {
|
|
2404
|
-
return await step.info._runStepBody(expectation === "skip", body, step.
|
|
2417
|
+
return await step.info._runStepBody(expectation === "skip", body, step.stack[0]);
|
|
2405
2418
|
} catch (e) {
|
|
2406
2419
|
if (result2?.timedOut)
|
|
2407
2420
|
testInfo._failWithError(e);
|
|
@@ -2473,6 +2486,7 @@ var baseFullConfig = {
|
|
|
2473
2486
|
metadata: {},
|
|
2474
2487
|
preserveOutput: "always",
|
|
2475
2488
|
projects: [],
|
|
2489
|
+
filteredProjects: [],
|
|
2476
2490
|
reporter: [[process.env.CI ? "dot" : "list"]],
|
|
2477
2491
|
reportSlowTests: {
|
|
2478
2492
|
max: 5,
|
|
@@ -2484,7 +2498,7 @@ var baseFullConfig = {
|
|
|
2484
2498
|
quiet: false,
|
|
2485
2499
|
shard: null,
|
|
2486
2500
|
tags: [],
|
|
2487
|
-
updateSnapshots: "
|
|
2501
|
+
updateSnapshots: "default",
|
|
2488
2502
|
updateSourceMethod: "patch",
|
|
2489
2503
|
version: "",
|
|
2490
2504
|
workers: 0,
|
|
@@ -1,34 +1,33 @@
|
|
|
1
1
|
# packages/playwright/lib/common/index.js
|
|
2
|
-
# total:
|
|
2
|
+
# total: 113.6 KB
|
|
3
3
|
|
|
4
4
|
## Inlined (20)
|
|
5
|
-
12.
|
|
6
|
-
13.
|
|
5
|
+
12.5 KB packages/playwright/src/common/config.ts
|
|
6
|
+
13.8 KB packages/playwright/src/common/configLoader.ts
|
|
7
7
|
11.5 KB packages/playwright/src/common/fixtures.ts
|
|
8
8
|
0.8 KB packages/playwright/src/common/index.ts
|
|
9
9
|
1.3 KB packages/playwright/src/common/ipc.ts
|
|
10
10
|
2.1 KB packages/playwright/src/common/poolBuilder.ts
|
|
11
|
-
|
|
11
|
+
3.9 KB packages/playwright/src/common/process.ts
|
|
12
12
|
4.9 KB packages/playwright/src/common/suiteUtils.ts
|
|
13
13
|
8.7 KB packages/playwright/src/common/test.ts
|
|
14
14
|
2.0 KB packages/playwright/src/common/testLoader.ts
|
|
15
|
-
12.
|
|
15
|
+
12.9 KB packages/playwright/src/common/testType.ts
|
|
16
16
|
1.4 KB packages/playwright/src/common/validators.ts
|
|
17
17
|
1.3 KB packages/playwright/src/isomorphic/teleReceiver.ts
|
|
18
18
|
7.8 KB packages/playwright/src/transform/compilationCache.ts
|
|
19
19
|
1.7 KB packages/playwright/src/transform/esmLoaderSync.ts
|
|
20
20
|
1.1 KB packages/playwright/src/transform/pirates.ts
|
|
21
21
|
1.1 KB packages/playwright/src/transform/portTransport.ts
|
|
22
|
-
|
|
23
|
-
2
|
|
22
|
+
12.0 KB packages/playwright/src/transform/transform.ts
|
|
23
|
+
3.2 KB packages/playwright/src/transform/tsconfig-loader.ts
|
|
24
24
|
7.0 KB packages/playwright/src/util.ts
|
|
25
25
|
|
|
26
|
-
## External (
|
|
26
|
+
## External (7)
|
|
27
27
|
../globals
|
|
28
28
|
../matchers/expect
|
|
29
29
|
../package
|
|
30
30
|
../transform/esmLoader.js
|
|
31
|
-
playwright
|
|
32
31
|
playwright-core/lib/bootstrap
|
|
33
32
|
playwright-core/lib/coreBundle
|
|
34
33
|
playwright-core/lib/utilsBundle
|
|
@@ -92,19 +92,19 @@ const utilityFixtures = {
|
|
|
92
92
|
const zone = currentZone().data("stepZone");
|
|
93
93
|
const isExpectCall = channel.type === "Frame" && channel.method === "expect" || channel.type === "Page" && channel.method === "expectScreenshot";
|
|
94
94
|
if (zone && zone.category === "expect" && isExpectCall) {
|
|
95
|
-
data.
|
|
95
|
+
data.callId = zone.stepId;
|
|
96
96
|
return;
|
|
97
97
|
}
|
|
98
98
|
const params = renderParamsForCall({ type: channel.type, method: channel.method, params: channel.params });
|
|
99
99
|
const step = testInfo2._addStep({
|
|
100
|
-
|
|
100
|
+
stack: data.frames,
|
|
101
101
|
category: "pw:api",
|
|
102
102
|
title: renderTitle(channel.type, channel.method, channel.params, data.title),
|
|
103
103
|
subtitle: renderSubtitle(channel.type, channel.method, channel.params),
|
|
104
104
|
params,
|
|
105
105
|
group: getActionGroup({ type: channel.type, method: channel.method })
|
|
106
106
|
}, tracingGroupSteps[tracingGroupSteps.length - 1]);
|
|
107
|
-
data.
|
|
107
|
+
data.callId = step.stepId;
|
|
108
108
|
if (channel.type === "Tracing" && channel.method === "tracingGroup") {
|
|
109
109
|
tracingGroupSteps.push(step);
|
|
110
110
|
} else {
|
|
@@ -249,6 +249,7 @@ const playwrightFixtures = {
|
|
|
249
249
|
permissions: [({ contextOptions }, use) => use(contextOptions.permissions), { option: true, box: true }],
|
|
250
250
|
proxy: [({ contextOptions }, use) => use(contextOptions.proxy), { option: true, box: true }],
|
|
251
251
|
reducedMotion: [({ contextOptions }, use) => use(contextOptions.reducedMotion === void 0 ? "no-preference" : contextOptions.reducedMotion), { option: true, box: true }],
|
|
252
|
+
screen: [({ contextOptions }, use) => use(contextOptions.screen), { option: true, box: true }],
|
|
252
253
|
storageState: [({ contextOptions }, use) => use(contextOptions.storageState), { option: true, box: true }],
|
|
253
254
|
clientCertificates: [({ contextOptions }, use) => use(contextOptions.clientCertificates), { option: true, box: true }],
|
|
254
255
|
timezoneId: [({ contextOptions }, use) => use(contextOptions.timezoneId), { option: true, box: true }],
|
|
@@ -281,6 +282,7 @@ const playwrightFixtures = {
|
|
|
281
282
|
permissions,
|
|
282
283
|
proxy,
|
|
283
284
|
reducedMotion,
|
|
285
|
+
screen,
|
|
284
286
|
storageState,
|
|
285
287
|
viewport,
|
|
286
288
|
timezoneId,
|
|
@@ -326,6 +328,8 @@ const playwrightFixtures = {
|
|
|
326
328
|
options.proxy = proxy;
|
|
327
329
|
if (reducedMotion !== void 0)
|
|
328
330
|
options.reducedMotion = reducedMotion;
|
|
331
|
+
if (screen !== void 0)
|
|
332
|
+
options.screen = screen;
|
|
329
333
|
if (storageState !== void 0)
|
|
330
334
|
options.storageState = storageState;
|
|
331
335
|
if (clientCertificates?.length)
|
|
@@ -385,6 +389,7 @@ const playwrightFixtures = {
|
|
|
385
389
|
recordVideo: {
|
|
386
390
|
dir: tracing().artifactsDir(),
|
|
387
391
|
size: typeof video === "string" ? void 0 : video.size,
|
|
392
|
+
fps: typeof video === "string" ? void 0 : video.fps,
|
|
388
393
|
showActions: show?.actions
|
|
389
394
|
}
|
|
390
395
|
} : {};
|
|
@@ -755,7 +760,7 @@ async function installScreencastTitleUpdater(testInfo, context, testAnnotate) {
|
|
|
755
760
|
const position = testAnnotate.position ?? "top-left";
|
|
756
761
|
const fontSize = testAnnotate.fontSize ?? 14;
|
|
757
762
|
const level = testAnnotate.level ?? "step";
|
|
758
|
-
const
|
|
763
|
+
const doUpdateOverlay = async () => {
|
|
759
764
|
const parts = level === "step" ? [...testTitle, ...stepStack] : testTitle;
|
|
760
765
|
const html = createTestOverlay(parts, position, fontSize);
|
|
761
766
|
for (const page of context.pages()) {
|
|
@@ -765,6 +770,13 @@ async function installScreencastTitleUpdater(testInfo, context, testAnnotate) {
|
|
|
765
770
|
overlays.set(page, disposable);
|
|
766
771
|
}
|
|
767
772
|
};
|
|
773
|
+
let lastUpdate = Promise.resolve();
|
|
774
|
+
const updateOverlay = () => {
|
|
775
|
+
const result = lastUpdate.then(doUpdateOverlay);
|
|
776
|
+
lastUpdate = result.catch(() => {
|
|
777
|
+
});
|
|
778
|
+
return result;
|
|
779
|
+
};
|
|
768
780
|
testInfo._onUserStepBegin = async (title) => {
|
|
769
781
|
stepStack.push(title);
|
|
770
782
|
await updateOverlay();
|