@alwaysmeticulous/cli 2.326.1 → 2.327.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/dist/__tests__/commonjs-dependencies.spec.d.ts +2 -0
- package/dist/__tests__/commonjs-dependencies.spec.d.ts.map +1 -0
- package/dist/__tests__/commonjs-dependencies.spec.js +82 -0
- package/dist/__tests__/commonjs-dependencies.spec.js.map +1 -0
- package/dist/command-utils/__tests__/parse-rewrites.spec.js +2 -2
- package/dist/command-utils/__tests__/parse-rewrites.spec.js.map +1 -1
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js +2 -2
- package/dist/command-utils/__tests__/warn-regex-rewrites.spec.js.map +1 -1
- package/dist/command-utils/common-options.js +2 -2
- package/dist/command-utils/common-options.js.map +1 -1
- package/dist/command-utils/detect-upload-mode.js +2 -2
- package/dist/command-utils/detect-upload-mode.js.map +1 -1
- package/dist/command-utils/detect-upload-mode.spec.js +2 -2
- package/dist/command-utils/detect-upload-mode.spec.js.map +1 -1
- package/dist/command-utils/download-session.utils.js +2 -2
- package/dist/command-utils/download-session.utils.js.map +1 -1
- package/dist/command-utils/json-args.js +2 -2
- package/dist/command-utils/json-args.js.map +1 -1
- package/dist/command-utils/json-args.spec.js +2 -2
- package/dist/command-utils/json-args.spec.js.map +1 -1
- package/dist/command-utils/parse-container-env.js +2 -2
- package/dist/command-utils/parse-container-env.js.map +1 -1
- package/dist/command-utils/parse-rewrites.js +2 -2
- package/dist/command-utils/parse-rewrites.js.map +1 -1
- package/dist/command-utils/print-json.js +2 -2
- package/dist/command-utils/print-json.js.map +1 -1
- package/dist/command-utils/sentry.utils.js +2 -2
- package/dist/command-utils/sentry.utils.js.map +1 -1
- package/dist/command-utils/warn-regex-rewrites.js +2 -2
- package/dist/command-utils/warn-regex-rewrites.js.map +1 -1
- package/dist/commands/agent/agent-review-writes.command.spec.js +2 -2
- package/dist/commands/agent/agent-review-writes.command.spec.js.map +1 -1
- package/dist/commands/agent/build-git-options.js +2 -2
- package/dist/commands/agent/build-git-options.js.map +1 -1
- package/dist/commands/agent/build-git-options.spec.js +2 -2
- package/dist/commands/agent/build-git-options.spec.js.map +1 -1
- package/dist/commands/agent/coverage-columns.util.js +2 -2
- package/dist/commands/agent/coverage-columns.util.js.map +1 -1
- package/dist/commands/agent/create-diff-comment.command.js +2 -2
- package/dist/commands/agent/create-diff-comment.command.js.map +1 -1
- package/dist/commands/agent/diff-comment-write.utils.js +2 -2
- package/dist/commands/agent/diff-comment-write.utils.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.js +2 -2
- package/dist/commands/agent/diff-comments.command.js.map +1 -1
- package/dist/commands/agent/diff-comments.command.spec.js +2 -2
- package/dist/commands/agent/diff-comments.command.spec.js.map +1 -1
- package/dist/commands/agent/ignore-diff.command.js +2 -2
- package/dist/commands/agent/ignore-diff.command.js.map +1 -1
- package/dist/commands/agent/index.js +2 -2
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/js-coverage-diff.command.js +2 -2
- package/dist/commands/agent/js-coverage-diff.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.handler.spec.js +2 -2
- package/dist/commands/agent/js-coverage.command.handler.spec.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.js +2 -2
- package/dist/commands/agent/js-coverage.command.js.map +1 -1
- package/dist/commands/agent/js-coverage.command.spec.js +2 -2
- package/dist/commands/agent/js-coverage.command.spec.js.map +1 -1
- package/dist/commands/agent/reject-diff.command.js +2 -2
- package/dist/commands/agent/reject-diff.command.js.map +1 -1
- package/dist/commands/agent/reject-diff.command.spec.js +2 -2
- package/dist/commands/agent/reject-diff.command.spec.js.map +1 -1
- package/dist/commands/agent/reply-to-diff-comment.command.js +2 -2
- package/dist/commands/agent/reply-to-diff-comment.command.js.map +1 -1
- package/dist/commands/agent/screenshot-dom-diff.command.js +2 -2
- package/dist/commands/agent/screenshot-dom-diff.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image-files.command.js +2 -2
- package/dist/commands/agent/screenshot-image-files.command.js.map +1 -1
- package/dist/commands/agent/screenshot-image.command.js +2 -2
- package/dist/commands/agent/screenshot-image.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.js +2 -2
- package/dist/commands/agent/sessions.command.js.map +1 -1
- package/dist/commands/agent/sessions.command.spec.js +2 -2
- package/dist/commands/agent/sessions.command.spec.js.map +1 -1
- package/dist/commands/agent/submit-feedback.command.js +2 -2
- package/dist/commands/agent/submit-feedback.command.js.map +1 -1
- package/dist/commands/agent/test-run-check.command.js +2 -2
- package/dist/commands/agent/test-run-check.command.js.map +1 -1
- package/dist/commands/agent/test-run-check.command.spec.js +2 -2
- package/dist/commands/agent/test-run-check.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.js +2 -2
- package/dist/commands/agent/test-run-diffs.command.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.command.spec.js +2 -2
- package/dist/commands/agent/test-run-diffs.command.spec.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.js +2 -2
- package/dist/commands/agent/test-run-diffs.utils.js.map +1 -1
- package/dist/commands/agent/test-run-diffs.utils.spec.js +2 -2
- package/dist/commands/agent/test-run-diffs.utils.spec.js.map +1 -1
- package/dist/commands/agent/test-run-for-commit.command.js +2 -2
- package/dist/commands/agent/test-run-for-commit.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.js +2 -2
- package/dist/commands/agent/timeline.command.js.map +1 -1
- package/dist/commands/agent/timeline.command.spec.js +2 -2
- package/dist/commands/agent/timeline.command.spec.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.js +2 -2
- package/dist/commands/agent/trigger-test-run.command.js.map +1 -1
- package/dist/commands/agent/trigger-test-run.command.spec.js +2 -2
- package/dist/commands/agent/trigger-test-run.command.spec.js.map +1 -1
- package/dist/commands/agent/upload-build.command.js +2 -2
- package/dist/commands/agent/upload-build.command.js.map +1 -1
- package/dist/commands/all-commands.d.ts.map +1 -1
- package/dist/commands/all-commands.js +8 -6
- package/dist/commands/all-commands.js.map +1 -1
- package/dist/commands/auth/__tests__/get-project.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/get-project.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/list-projects.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/list-projects.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/login.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/logout.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/logout.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/set-project.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/set-project.command.spec.js.map +1 -1
- package/dist/commands/auth/__tests__/whoami.command.spec.js +2 -2
- package/dist/commands/auth/__tests__/whoami.command.spec.js.map +1 -1
- package/dist/commands/auth/get-project.command.js +2 -2
- package/dist/commands/auth/get-project.command.js.map +1 -1
- package/dist/commands/auth/index.js +2 -2
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/auth/list-projects.command.js +2 -2
- package/dist/commands/auth/list-projects.command.js.map +1 -1
- package/dist/commands/auth/login.command.js +2 -2
- package/dist/commands/auth/login.command.js.map +1 -1
- package/dist/commands/auth/logout.command.js +2 -2
- package/dist/commands/auth/logout.command.js.map +1 -1
- package/dist/commands/auth/set-project.command.js +2 -2
- package/dist/commands/auth/set-project.command.js.map +1 -1
- package/dist/commands/auth/whoami.command.js +2 -2
- package/dist/commands/auth/whoami.command.js.map +1 -1
- package/dist/commands/ci/__tests__/label-commit.utils.spec.js +2 -2
- package/dist/commands/ci/__tests__/label-commit.utils.spec.js.map +1 -1
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js +2 -2
- package/dist/commands/ci/__tests__/session-filter.utils.spec.js.map +1 -1
- package/dist/commands/ci/agent-test.command.js +2 -2
- package/dist/commands/ci/agent-test.command.js.map +1 -1
- package/dist/commands/ci/deprecated-trigger-options.js +2 -2
- package/dist/commands/ci/deprecated-trigger-options.js.map +1 -1
- package/dist/commands/ci/index.js +2 -2
- package/dist/commands/ci/index.js.map +1 -1
- package/dist/commands/ci/label-commit.command.js +2 -2
- package/dist/commands/ci/label-commit.command.js.map +1 -1
- package/dist/commands/ci/label-commit.core.js +2 -2
- package/dist/commands/ci/label-commit.core.js.map +1 -1
- package/dist/commands/ci/label-commit.types.js +2 -2
- package/dist/commands/ci/label-commit.types.js.map +1 -1
- package/dist/commands/ci/label-commit.utils.js +2 -2
- package/dist/commands/ci/label-commit.utils.js.map +1 -1
- package/dist/commands/ci/prepare.command.js +2 -2
- package/dist/commands/ci/prepare.command.js.map +1 -1
- package/dist/commands/ci/resolve-git-options.js +2 -2
- package/dist/commands/ci/resolve-git-options.js.map +1 -1
- package/dist/commands/ci/run-local.command.js +2 -2
- package/dist/commands/ci/run-local.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.command.spec.js.map +1 -1
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js +2 -2
- package/dist/commands/ci/run-with-uploaded-asset-chunks.utils.js.map +1 -1
- package/dist/commands/ci/run.command.js +2 -2
- package/dist/commands/ci/run.command.js.map +1 -1
- package/dist/commands/ci/session-filter.utils.js +2 -2
- package/dist/commands/ci/session-filter.utils.js.map +1 -1
- package/dist/commands/ci/start-tunnel.command.js +2 -2
- package/dist/commands/ci/start-tunnel.command.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.core.js +2 -2
- package/dist/commands/ci/trigger-test-run.core.js.map +1 -1
- package/dist/commands/ci/trigger-test-run.types.js +2 -2
- package/dist/commands/ci/trigger-test-run.types.js.map +1 -1
- package/dist/commands/ci/upload-asset-chunk.command.js +2 -2
- package/dist/commands/ci/upload-asset-chunk.command.js.map +1 -1
- package/dist/commands/ci/upload-assets.command.js +2 -2
- package/dist/commands/ci/upload-assets.command.js.map +1 -1
- package/dist/commands/ci/upload-container.command.js +2 -2
- package/dist/commands/ci/upload-container.command.js.map +1 -1
- package/dist/commands/crawl.command.js +2 -2
- package/dist/commands/crawl.command.js.map +1 -1
- package/dist/commands/debug/clean-workspaces.js +2 -2
- package/dist/commands/debug/clean-workspaces.js.map +1 -1
- package/dist/commands/debug/index.js +2 -2
- package/dist/commands/debug/index.js.map +1 -1
- package/dist/commands/debug/present-workspace.js +2 -2
- package/dist/commands/debug/present-workspace.js.map +1 -1
- package/dist/commands/debug/project-worktree.js +2 -2
- package/dist/commands/debug/project-worktree.js.map +1 -1
- package/dist/commands/deprecated-aliases.js +2 -2
- package/dist/commands/deprecated-aliases.js.map +1 -1
- package/dist/commands/download/index.js +2 -2
- package/dist/commands/download/index.js.map +1 -1
- package/dist/commands/download/replay.command.js +2 -2
- package/dist/commands/download/replay.command.js.map +1 -1
- package/dist/commands/download/session.command.js +2 -2
- package/dist/commands/download/session.command.js.map +1 -1
- package/dist/commands/download/test-run.command.js +2 -2
- package/dist/commands/download/test-run.command.js.map +1 -1
- package/dist/commands/local/get-edited-files.utils.js +2 -2
- package/dist/commands/local/get-edited-files.utils.js.map +1 -1
- package/dist/commands/local/get-edited-files.utils.spec.js +2 -2
- package/dist/commands/local/get-edited-files.utils.spec.js.map +1 -1
- package/dist/commands/local/index.js +2 -2
- package/dist/commands/local/index.js.map +1 -1
- package/dist/commands/local/relevant-sessions.command.js +2 -2
- package/dist/commands/local/relevant-sessions.command.js.map +1 -1
- package/dist/commands/onboard/__tests__/build-context.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/build-context.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/build-context.spec.js +179 -0
- package/dist/commands/onboard/__tests__/build-context.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.js +164 -0
- package/dist/commands/onboard/__tests__/check-vcs-link.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.js +73 -0
- package/dist/commands/onboard/__tests__/codex-mcp.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.js +277 -0
- package/dist/commands/onboard/__tests__/detect-framework.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.js +109 -0
- package/dist/commands/onboard/__tests__/git-repo-info.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js +157 -0
- package/dist/commands/onboard/__tests__/inline-doc-constants.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.js +158 -0
- package/dist/commands/onboard/__tests__/install-skills.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.js +116 -0
- package/dist/commands/onboard/__tests__/materialize-workspace.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.js +166 -0
- package/dist/commands/onboard/__tests__/resolve-app.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js +137 -0
- package/dist/commands/onboard/__tests__/safe-repo-fs.spec.js.map +1 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts +2 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.d.ts.map +1 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js +286 -0
- package/dist/commands/onboard/__tests__/setup-agent-integrations.spec.js.map +1 -0
- package/dist/commands/onboard/build-context.d.ts +16 -0
- package/dist/commands/onboard/build-context.d.ts.map +1 -0
- package/dist/commands/onboard/build-context.js +104 -0
- package/dist/commands/onboard/build-context.js.map +1 -0
- package/dist/commands/onboard/check-vcs-link.d.ts +14 -0
- package/dist/commands/onboard/check-vcs-link.d.ts.map +1 -0
- package/dist/commands/onboard/check-vcs-link.js +111 -0
- package/dist/commands/onboard/check-vcs-link.js.map +1 -0
- package/dist/commands/onboard/codex-mcp.d.ts +24 -0
- package/dist/commands/onboard/codex-mcp.d.ts.map +1 -0
- package/dist/commands/onboard/codex-mcp.js +302 -0
- package/dist/commands/onboard/codex-mcp.js.map +1 -0
- package/dist/commands/onboard/customer-agents.d.ts +9 -0
- package/dist/commands/onboard/customer-agents.d.ts.map +1 -0
- package/dist/commands/onboard/customer-agents.js +19 -0
- package/dist/commands/onboard/customer-agents.js.map +1 -0
- package/dist/commands/onboard/customer-agents.json +17 -0
- package/dist/commands/onboard/customer-docs.d.ts +21 -0
- package/dist/commands/onboard/customer-docs.d.ts.map +1 -0
- package/dist/commands/onboard/customer-docs.js +31 -0
- package/dist/commands/onboard/customer-docs.js.map +1 -0
- package/dist/commands/onboard/customer-docs.json +35 -0
- package/dist/commands/onboard/detect-framework.d.ts +26 -0
- package/dist/commands/onboard/detect-framework.d.ts.map +1 -0
- package/dist/commands/onboard/detect-framework.js +305 -0
- package/dist/commands/onboard/detect-framework.js.map +1 -0
- package/dist/commands/onboard/discover-apps.d.ts +21 -0
- package/dist/commands/onboard/discover-apps.d.ts.map +1 -0
- package/dist/commands/onboard/discover-apps.js +318 -0
- package/dist/commands/onboard/discover-apps.js.map +1 -0
- package/dist/commands/onboard/docs-urls.d.ts +11 -0
- package/dist/commands/onboard/docs-urls.d.ts.map +1 -0
- package/dist/commands/onboard/docs-urls.js +17 -0
- package/dist/commands/onboard/docs-urls.js.map +1 -0
- package/dist/commands/onboard/git-repo-info.d.ts +15 -0
- package/dist/commands/onboard/git-repo-info.d.ts.map +1 -0
- package/dist/commands/onboard/git-repo-info.js +84 -0
- package/dist/commands/onboard/git-repo-info.js.map +1 -0
- package/dist/commands/onboard/index.d.ts +18 -0
- package/dist/commands/onboard/index.d.ts.map +1 -0
- package/dist/commands/onboard/index.js +164 -0
- package/dist/commands/onboard/index.js.map +1 -0
- package/dist/commands/onboard/inline-doc-constants.d.ts +21 -0
- package/dist/commands/onboard/inline-doc-constants.d.ts.map +1 -0
- package/dist/commands/onboard/inline-doc-constants.js +238 -0
- package/dist/commands/onboard/inline-doc-constants.js.map +1 -0
- package/dist/commands/onboard/launch-agent.d.ts +65 -0
- package/dist/commands/onboard/launch-agent.d.ts.map +1 -0
- package/dist/commands/onboard/launch-agent.js +311 -0
- package/dist/commands/onboard/launch-agent.js.map +1 -0
- package/dist/commands/onboard/materialize-workspace.d.ts +68 -0
- package/dist/commands/onboard/materialize-workspace.d.ts.map +1 -0
- package/dist/commands/onboard/materialize-workspace.js +177 -0
- package/dist/commands/onboard/materialize-workspace.js.map +1 -0
- package/dist/commands/onboard/print-summary.d.ts +10 -0
- package/dist/commands/onboard/print-summary.d.ts.map +1 -0
- package/dist/commands/onboard/print-summary.js +49 -0
- package/dist/commands/onboard/print-summary.js.map +1 -0
- package/dist/commands/onboard/resolve-app.d.ts +21 -0
- package/dist/commands/onboard/resolve-app.d.ts.map +1 -0
- package/dist/commands/onboard/resolve-app.js +78 -0
- package/dist/commands/onboard/resolve-app.js.map +1 -0
- package/dist/commands/onboard/resolve-project.d.ts +14 -0
- package/dist/commands/onboard/resolve-project.d.ts.map +1 -0
- package/dist/commands/onboard/resolve-project.js +92 -0
- package/dist/commands/onboard/resolve-project.js.map +1 -0
- package/dist/commands/onboard/safe-repo-fs.d.ts +59 -0
- package/dist/commands/onboard/safe-repo-fs.d.ts.map +1 -0
- package/dist/commands/onboard/safe-repo-fs.js +266 -0
- package/dist/commands/onboard/safe-repo-fs.js.map +1 -0
- package/dist/commands/onboard/setup-agent-integrations.d.ts +43 -0
- package/dist/commands/onboard/setup-agent-integrations.d.ts.map +1 -0
- package/dist/commands/onboard/setup-agent-integrations.js +324 -0
- package/dist/commands/onboard/setup-agent-integrations.js.map +1 -0
- package/dist/commands/onboard/templates/CLAUDE.md +213 -0
- package/dist/commands/onboard/templates/agents/auth-setup.md +117 -0
- package/dist/commands/onboard/templates/agents/ci-setup.md +742 -0
- package/dist/commands/onboard/templates/agents/csp-setup.md +78 -0
- package/dist/commands/onboard/templates/agents/false-positive-prevention.md +268 -0
- package/dist/commands/onboard/templates/agents/feature-flag-setup.md +133 -0
- package/dist/commands/onboard/templates/agents/local-simulation-verification.md +96 -0
- package/dist/commands/onboard/templates/agents/persisted-graphql-queries.md +150 -0
- package/dist/commands/onboard/templates/agents/recorder-installation.md +194 -0
- package/dist/commands/onboard/templates/agents/replay-fetch-retry-compatibility.md +252 -0
- package/dist/commands/onboard/templates/agents/reviewer.md +788 -0
- package/dist/commands/onboard/templates/agents/service-worker-compatibility.md +254 -0
- package/dist/commands/onboard/templates/agents/session-context.md +133 -0
- package/dist/commands/onboard/templates/agents/shared-worker-compatibility.md +187 -0
- package/dist/commands/onboard/templates/docs/additional-guides/backend-recorder.ts +340 -0
- package/dist/commands/onboard/templates/docs/ci/not-yet-run-checks.ts +58 -0
- package/dist/commands/onboard/templates/docs/ci.ts +19 -0
- package/dist/commands/onboard/templates/docs/cloud-replay.ts +145 -0
- package/dist/commands/onboard/templates/docs/constants.ts +37 -0
- package/dist/commands/onboard/templates/docs/github-actions-v2.ts +859 -0
- package/dist/commands/onboard/templates/docs/how-to/auth/bypassing-auth.ts +27 -0
- package/dist/commands/onboard/templates/docs/how-to/auth/enabling-full-auth.ts +91 -0
- package/dist/commands/onboard/templates/docs/how-to/configure-ignore-patterns.ts +77 -0
- package/dist/commands/onboard/templates/docs/how-to/enable-source-coverage.ts +84 -0
- package/dist/commands/onboard/templates/docs/how-to/fix-false-positive-diffs.ts +156 -0
- package/dist/commands/onboard/templates/docs/how-to/link-bitbucket.ts +15 -0
- package/dist/commands/onboard/templates/docs/how-to/link-gitlab.ts +22 -0
- package/dist/commands/onboard/templates/docs/how-to/record-session-context.ts +129 -0
- package/dist/commands/onboard/templates/docs/how-to/recorder-script.ts +139 -0
- package/dist/commands/onboard/templates/docs/how-to/testing-feature-flags.ts +97 -0
- package/dist/commands/onboard/templates/docs/how-to/testing-multiple-apps-or-app-variants.ts +40 -0
- package/dist/commands/onboard/templates/docs/how-to/troubleshoot-auth.ts +58 -0
- package/dist/commands/onboard/templates/docs/how-to/troubleshoot-failed-simulations.ts +97 -0
- package/dist/commands/onboard/templates/docs/how-to/typescript-types.ts +51 -0
- package/dist/commands/onboard/templates/docs/how-to/window-meticulous-object.ts +685 -0
- package/dist/commands/onboard/templates/docs/onboarding-guide.ts +415 -0
- package/dist/commands/onboard/templates/docs/recorder-getting-started.ts +24 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/constants.ts +1 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/explanation-of-methods-to-add-recorder.ts +21 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/angular-instructions.ts +34 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/any-other-framework-instructions.ts +118 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/npm-package-based-instructions/vue-instructions.ts +39 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/next-js-instructions.ts +49 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/nuxtjs-instructions.ts +68 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/rsbuild-instructions.ts +66 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/storybook-instructions.ts +59 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/sveltekit-instructions.ts +113 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-based-instructions/vite-instructions.ts +58 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/script-requirements.ts +51 -0
- package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts +25 -0
- package/dist/commands/onboard/templates/docs/reference/cli-commands.ts +1324 -0
- package/dist/commands/onboard/templates/docs/session-recording/csp-exceptions.ts +17 -0
- package/dist/commands/onboard/templates/docs/session-recording/recorder-npm-dependency.ts +62 -0
- package/dist/commands/onboard/templates/docs-imports/src/lib/next/next.constants.ts +46 -0
- package/dist/commands/onboard/templates/docs-imports/src/lib/utils/internal-urls/docs-urls.utils.ts +254 -0
- package/dist/commands/onboard/templates/settings.json +14 -0
- package/dist/commands/project/index.js +2 -2
- package/dist/commands/project/index.js.map +1 -1
- package/dist/commands/project/show.command.js +2 -2
- package/dist/commands/project/show.command.js.map +1 -1
- package/dist/commands/project/upload-source.command.js +2 -2
- package/dist/commands/project/upload-source.command.js.map +1 -1
- package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js +2 -2
- package/dist/commands/record/__tests__/backend-dev-command.utils.spec.js.map +1 -1
- package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js +2 -2
- package/dist/commands/record/__tests__/backend-sidecar.utils.spec.js.map +1 -1
- package/dist/commands/record/__tests__/backend.command.spec.js +2 -2
- package/dist/commands/record/__tests__/backend.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/login.command.spec.js +2 -2
- package/dist/commands/record/__tests__/login.command.spec.js.map +1 -1
- package/dist/commands/record/__tests__/session.command.spec.js +2 -2
- package/dist/commands/record/__tests__/session.command.spec.js.map +1 -1
- package/dist/commands/record/backend-dev-command.utils.js +2 -2
- package/dist/commands/record/backend-dev-command.utils.js.map +1 -1
- package/dist/commands/record/backend-sidecar.utils.js +2 -2
- package/dist/commands/record/backend-sidecar.utils.js.map +1 -1
- package/dist/commands/record/backend.command.js +2 -2
- package/dist/commands/record/backend.command.js.map +1 -1
- package/dist/commands/record/index.js +2 -2
- package/dist/commands/record/index.js.map +1 -1
- package/dist/commands/record/login.command.js +2 -2
- package/dist/commands/record/login.command.js.map +1 -1
- package/dist/commands/record/session.command.js +2 -2
- package/dist/commands/record/session.command.js.map +1 -1
- package/dist/commands/replay-debugger.ui.js +2 -2
- package/dist/commands/replay-debugger.ui.js.map +1 -1
- package/dist/commands/replay.command.js +2 -2
- package/dist/commands/replay.command.js.map +1 -1
- package/dist/commands/schema.command.js +2 -2
- package/dist/commands/schema.command.js.map +1 -1
- package/dist/commands/schema.command.spec.js +2 -2
- package/dist/commands/schema.command.spec.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/utils/__tests__/handle-auth-failure.spec.js +2 -2
- package/dist/utils/__tests__/handle-auth-failure.spec.js.map +1 -1
- package/dist/utils/__tests__/project-selection-hint.spec.js +2 -2
- package/dist/utils/__tests__/project-selection-hint.spec.js.map +1 -1
- package/dist/utils/__tests__/resolve-project-identifier.spec.js +2 -2
- package/dist/utils/__tests__/resolve-project-identifier.spec.js.map +1 -1
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js +2 -2
- package/dist/utils/__tests__/resolve-test-run-from-commit.spec.js.map +1 -1
- package/dist/utils/__tests__/select-project.spec.js +5 -4
- package/dist/utils/__tests__/select-project.spec.js.map +1 -1
- package/dist/utils/cli-user-error.js +2 -2
- package/dist/utils/cli-user-error.js.map +1 -1
- package/dist/utils/constants.js +2 -2
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/environment.utils.js +2 -2
- package/dist/utils/environment.utils.js.map +1 -1
- package/dist/utils/format-coverage-ranges.js +2 -2
- package/dist/utils/format-coverage-ranges.js.map +1 -1
- package/dist/utils/handle-auth-failure.js +2 -2
- package/dist/utils/handle-auth-failure.js.map +1 -1
- package/dist/utils/out-of-date-client-error.js +2 -2
- package/dist/utils/out-of-date-client-error.js.map +1 -1
- package/dist/utils/project-selection-hint.js +2 -2
- package/dist/utils/project-selection-hint.js.map +1 -1
- package/dist/utils/resolve-project-identifier.js +2 -2
- package/dist/utils/resolve-project-identifier.js.map +1 -1
- package/dist/utils/resolve-test-run-from-commit.js +2 -2
- package/dist/utils/resolve-test-run-from-commit.js.map +1 -1
- package/dist/utils/select-project.d.ts +9 -0
- package/dist/utils/select-project.d.ts.map +1 -1
- package/dist/utils/select-project.js +58 -15
- package/dist/utils/select-project.js.map +1 -1
- package/package.json +14 -12
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { SNIPPET_URL } from "../constants";
|
|
2
|
+
|
|
3
|
+
export const nextJsInstructions = (
|
|
4
|
+
headTag: "head" | "Head",
|
|
5
|
+
injectSessionIdHeader = false,
|
|
6
|
+
) => `
|
|
7
|
+
{% code_with_project_selector %}
|
|
8
|
+
{% tabs tabNameSpace="env" %}
|
|
9
|
+
{% tab label="Dev & Staging Only" %}
|
|
10
|
+
\`\`\`jsx
|
|
11
|
+
<${headTag}>
|
|
12
|
+
...
|
|
13
|
+
{(process.env.NODE_ENV === "development" || process.env.VERCEL_ENV === "preview") && (
|
|
14
|
+
// eslint-disable-next-line @next/next/no-sync-scripts
|
|
15
|
+
<script
|
|
16
|
+
data-recording-token="{% project_recording_token /%}"
|
|
17
|
+
data-is-production-environment="false"${
|
|
18
|
+
injectSessionIdHeader
|
|
19
|
+
? '\n data-inject-session-id-header="true"'
|
|
20
|
+
: ""
|
|
21
|
+
}
|
|
22
|
+
src="${SNIPPET_URL}"
|
|
23
|
+
/>
|
|
24
|
+
)}
|
|
25
|
+
...
|
|
26
|
+
</${headTag}>
|
|
27
|
+
\`\`\`
|
|
28
|
+
{% /tab %}
|
|
29
|
+
{% tab label="All Environments" %}
|
|
30
|
+
\`\`\`jsx
|
|
31
|
+
<${headTag}>
|
|
32
|
+
...
|
|
33
|
+
// eslint-disable-next-line @next/next/no-sync-scripts
|
|
34
|
+
<script
|
|
35
|
+
data-recording-token="{% project_recording_token /%}"
|
|
36
|
+
data-is-production-environment={process.env.NODE_ENV === "production" || process.env.VERCEL_ENV === "production"}${
|
|
37
|
+
injectSessionIdHeader
|
|
38
|
+
? '\n data-inject-session-id-header="true"'
|
|
39
|
+
: ""
|
|
40
|
+
}
|
|
41
|
+
src="${SNIPPET_URL}"
|
|
42
|
+
/>
|
|
43
|
+
...
|
|
44
|
+
</${headTag}>
|
|
45
|
+
\`\`\`
|
|
46
|
+
{% /tab %}
|
|
47
|
+
{% /tabs %}
|
|
48
|
+
{% /code_with_project_selector %}
|
|
49
|
+
`;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import {
|
|
2
|
+
METICULOUS_SETUP_CALENDLY_LINK,
|
|
3
|
+
METICULOUS_SUPPORT_EMAIL,
|
|
4
|
+
} from "src/lib/next/next.constants";
|
|
5
|
+
import { ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL } from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
6
|
+
|
|
7
|
+
// Tested on https://github.com/digitalocean/sample-nuxtjs
|
|
8
|
+
export const nuxtJsInstructions = (
|
|
9
|
+
injectSessionIdHeader = false,
|
|
10
|
+
) => `Install the Meticulous recorder plugin and add it to your Nuxt config. The plugin injects the recorder script as the first script tag in your app's \`<head>\`, with no async or defer attributes ([learn more](${ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL})).
|
|
11
|
+
|
|
12
|
+
{% code %}
|
|
13
|
+
\`\`\`shell
|
|
14
|
+
npm install @alwaysmeticulous/recorder-plugin --save-dev
|
|
15
|
+
\`\`\`
|
|
16
|
+
{% /code %}
|
|
17
|
+
|
|
18
|
+
Modify your \`nuxt.config.ts\` file to include the plugin:
|
|
19
|
+
|
|
20
|
+
{% code_with_project_selector %}
|
|
21
|
+
{% tabs tabNameSpace="env" %}
|
|
22
|
+
{% tab label="Dev Only (default)" %}
|
|
23
|
+
\`\`\`typescript
|
|
24
|
+
export default defineNuxtConfig({
|
|
25
|
+
modules: [
|
|
26
|
+
[
|
|
27
|
+
"@alwaysmeticulous/recorder-plugin/nuxt",
|
|
28
|
+
${
|
|
29
|
+
injectSessionIdHeader
|
|
30
|
+
? `{
|
|
31
|
+
recordingToken: "{% project_recording_token /%}",
|
|
32
|
+
attributes: { "data-inject-session-id-header": "true" },
|
|
33
|
+
}`
|
|
34
|
+
: `{ recordingToken: "{% project_recording_token /%}" }`
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
],
|
|
38
|
+
});
|
|
39
|
+
\`\`\`
|
|
40
|
+
{% /tab %}
|
|
41
|
+
{% tab label="All Environments" %}
|
|
42
|
+
\`\`\`typescript
|
|
43
|
+
export default defineNuxtConfig({
|
|
44
|
+
modules: [
|
|
45
|
+
[
|
|
46
|
+
"@alwaysmeticulous/recorder-plugin/nuxt",
|
|
47
|
+
{
|
|
48
|
+
recordingToken: "{% project_recording_token /%}",
|
|
49
|
+
enabled: "always",${
|
|
50
|
+
injectSessionIdHeader
|
|
51
|
+
? '\n attributes: { "data-inject-session-id-header": "true" },'
|
|
52
|
+
: ""
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
],
|
|
57
|
+
});
|
|
58
|
+
\`\`\`
|
|
59
|
+
{% /tab %}
|
|
60
|
+
{% /tabs %}
|
|
61
|
+
{% /code_with_project_selector %}
|
|
62
|
+
|
|
63
|
+
By default, the plugin injects the recorder only during Nuxt development builds. If you set \`enabled: "always"\`, the plugin will inject the recorder in every environment and automatically set \`data-is-production-environment\` based on Nuxt's detected mode.
|
|
64
|
+
|
|
65
|
+
By default Meticulous will stub out all requests to server side rendered pages, and so won't test server side rendered content. If you
|
|
66
|
+
use server side rendering and wish to test your server side rendered pages then please reach out to
|
|
67
|
+
[${METICULOUS_SUPPORT_EMAIL}](mailto:${METICULOUS_SUPPORT_EMAIL}), or [book a call with us](${METICULOUS_SETUP_CALENDLY_LINK}), and we'll help you get set up.
|
|
68
|
+
`;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL } from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
2
|
+
|
|
3
|
+
export const rsbuildInstructions = (
|
|
4
|
+
injectSessionIdHeader = false,
|
|
5
|
+
) => `Install the Meticulous recorder plugin and add it to your rsbuild config. The plugin injects the recorder script as the first script tag in your app's \`<head>\`, with no async or defer attributes ([learn more](${ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL})).
|
|
6
|
+
|
|
7
|
+
{% code %}
|
|
8
|
+
\`\`\`shell
|
|
9
|
+
npm install @alwaysmeticulous/recorder-plugin --save-dev
|
|
10
|
+
\`\`\`
|
|
11
|
+
{% /code %}
|
|
12
|
+
|
|
13
|
+
Modify your \`rsbuild.config.ts\` file to include the plugin:
|
|
14
|
+
|
|
15
|
+
{% code_with_project_selector %}
|
|
16
|
+
{% tabs tabNameSpace="env" %}
|
|
17
|
+
{% tab label="Dev Only (default)" %}
|
|
18
|
+
\`\`\`typescript
|
|
19
|
+
import { defineConfig } from "@rsbuild/core";
|
|
20
|
+
import meticulous from "@alwaysmeticulous/recorder-plugin/rspack";
|
|
21
|
+
|
|
22
|
+
export default defineConfig({
|
|
23
|
+
tools: {
|
|
24
|
+
rspack: {
|
|
25
|
+
plugins: [
|
|
26
|
+
meticulous({
|
|
27
|
+
recordingToken: "{% project_recording_token /%}",${
|
|
28
|
+
injectSessionIdHeader
|
|
29
|
+
? '\n attributes: { "data-inject-session-id-header": "true" },'
|
|
30
|
+
: ""
|
|
31
|
+
}
|
|
32
|
+
}),
|
|
33
|
+
],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
\`\`\`
|
|
38
|
+
{% /tab %}
|
|
39
|
+
{% tab label="All Environments" %}
|
|
40
|
+
\`\`\`typescript
|
|
41
|
+
import { defineConfig } from "@rsbuild/core";
|
|
42
|
+
import meticulous from "@alwaysmeticulous/recorder-plugin/rspack";
|
|
43
|
+
|
|
44
|
+
export default defineConfig({
|
|
45
|
+
tools: {
|
|
46
|
+
rspack: {
|
|
47
|
+
plugins: [
|
|
48
|
+
meticulous({
|
|
49
|
+
recordingToken: "{% project_recording_token /%}",
|
|
50
|
+
enabled: "always",${
|
|
51
|
+
injectSessionIdHeader
|
|
52
|
+
? '\n attributes: { "data-inject-session-id-header": "true" },'
|
|
53
|
+
: ""
|
|
54
|
+
}
|
|
55
|
+
}),
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
\`\`\`
|
|
61
|
+
{% /tab %}
|
|
62
|
+
{% /tabs %}
|
|
63
|
+
{% /code_with_project_selector %}
|
|
64
|
+
|
|
65
|
+
By default, the plugin injects the recorder only during non-production rsbuild builds. If you set \`enabled: "always"\`, the plugin will inject the recorder in every environment and automatically set \`data-is-production-environment\` based on Rspack's detected mode.
|
|
66
|
+
`;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {
|
|
2
|
+
METICULOUS_SETUP_CALENDLY_LINK,
|
|
3
|
+
METICULOUS_SUPPORT_EMAIL,
|
|
4
|
+
} from "src/lib/next/next.constants";
|
|
5
|
+
import {
|
|
6
|
+
ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL,
|
|
7
|
+
TYPESCRIPT_TYPES_URL,
|
|
8
|
+
} from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
9
|
+
import { SNIPPET_URL } from "../constants";
|
|
10
|
+
|
|
11
|
+
export const storybookInstructions = (
|
|
12
|
+
injectSessionIdHeader = false,
|
|
13
|
+
) => `If you want to record sessions using Storybook, you can add the Meticulous recorder script tag by
|
|
14
|
+
creating a \`.storybook/preview-head.html\` file and adding the following:
|
|
15
|
+
|
|
16
|
+
{% code_with_project_selector %}
|
|
17
|
+
\`\`\`html
|
|
18
|
+
<script
|
|
19
|
+
data-recording-token="{% project_recording_token /%}"
|
|
20
|
+
data-is-production-environment="false"${
|
|
21
|
+
injectSessionIdHeader ? '\n data-inject-session-id-header="true"' : ""
|
|
22
|
+
}
|
|
23
|
+
src="${SNIPPET_URL}"
|
|
24
|
+
></script>
|
|
25
|
+
<script>
|
|
26
|
+
// Record and replay Storybook events sent from the parent (manager) to the
|
|
27
|
+
// component iframe. These events capture interactions in Storybook controls
|
|
28
|
+
// and actions (e.g., switching between stories).
|
|
29
|
+
if (window.Meticulous?.replay) {
|
|
30
|
+
window.Meticulous.replay.addCustomEventListener(
|
|
31
|
+
"storybook-event",
|
|
32
|
+
(serializedData) =>
|
|
33
|
+
window.postMessage(serializedData, "*")
|
|
34
|
+
,
|
|
35
|
+
)
|
|
36
|
+
} else {
|
|
37
|
+
window.addEventListener("message", event => {
|
|
38
|
+
// Check if it's a storybook event
|
|
39
|
+
try {
|
|
40
|
+
const data = JSON.parse(event.data)
|
|
41
|
+
if (data.key === "storybook-channel") {
|
|
42
|
+
if (window.Meticulous?.record) {
|
|
43
|
+
window.Meticulous.record.recordCustomEvent(
|
|
44
|
+
"storybook-event",
|
|
45
|
+
event.data,
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
} catch (e) {
|
|
50
|
+
// Not a JSON message, ignore
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
}
|
|
54
|
+
</script>
|
|
55
|
+
\`\`\`
|
|
56
|
+
{% /code_with_project_selector %}
|
|
57
|
+
|
|
58
|
+
For TypeScript type definitions for the \`window.Meticulous\` object, see [TypeScript Types for window.Meticulous](${TYPESCRIPT_TYPES_URL}).
|
|
59
|
+
`;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import {
|
|
2
|
+
METICULOUS_SETUP_CALENDLY_LINK,
|
|
3
|
+
METICULOUS_SUPPORT_EMAIL,
|
|
4
|
+
} from "src/lib/next/next.constants";
|
|
5
|
+
import { ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL } from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
6
|
+
import { SNIPPET_URL } from "../constants";
|
|
7
|
+
|
|
8
|
+
// Tested on https://github.com/davjhan/guess-the-year-game
|
|
9
|
+
// (note: you need to delete all davjhan-core references, or manually checkout the davjhan-core repo)
|
|
10
|
+
export const svelteKitInstructions = (
|
|
11
|
+
injectSessionIdHeader = false,
|
|
12
|
+
) => `**(A)** Add the Meticulous recorder script tag in a \`<svelte:head>\` tag at the top of your \`__layout.svelte\` file. It's important the script is the
|
|
13
|
+
first script, and async and defer are not set to true ([learn more](${ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL})):
|
|
14
|
+
|
|
15
|
+
{% code_with_project_selector %}
|
|
16
|
+
{% tabs tabNameSpace="env" %}
|
|
17
|
+
{% tab label="Dev & Staging Only" %}
|
|
18
|
+
\`\`\`svelte
|
|
19
|
+
<svelte:head>
|
|
20
|
+
{#if !import.meta.env.PROD}
|
|
21
|
+
<script
|
|
22
|
+
data-recording-token="{% project_recording_token /%}"
|
|
23
|
+
data-is-production-environment="false"${
|
|
24
|
+
injectSessionIdHeader ? '\n data-inject-session-id-header="true"' : ""
|
|
25
|
+
}
|
|
26
|
+
src="${SNIPPET_URL}"
|
|
27
|
+
></script>
|
|
28
|
+
{/if}
|
|
29
|
+
</svelte:head>
|
|
30
|
+
\`\`\`
|
|
31
|
+
{% /tab %}
|
|
32
|
+
{% tab label="All Environments" %}
|
|
33
|
+
\`\`\`svelte
|
|
34
|
+
<svelte:head>
|
|
35
|
+
<script
|
|
36
|
+
data-recording-token="{% project_recording_token /%}"
|
|
37
|
+
data-is-production-environment={import.meta.env.PROD}${
|
|
38
|
+
injectSessionIdHeader ? '\n data-inject-session-id-header="true"' : ""
|
|
39
|
+
}
|
|
40
|
+
src="${SNIPPET_URL}"
|
|
41
|
+
></script>
|
|
42
|
+
</svelte:head>
|
|
43
|
+
\`\`\`
|
|
44
|
+
{% /tab %}
|
|
45
|
+
{% /tabs %}
|
|
46
|
+
{% /code_with_project_selector %}
|
|
47
|
+
|
|
48
|
+
**(B)** In your app.html, make sure that \`%svelte.head%\` is above any other scripts in the \`<head>\` tag:
|
|
49
|
+
|
|
50
|
+
Good:
|
|
51
|
+
|
|
52
|
+
{% code %}
|
|
53
|
+
\`\`\`html
|
|
54
|
+
<head>
|
|
55
|
+
%svelte.head%
|
|
56
|
+
<script src="another-script.js"></script>
|
|
57
|
+
</head>
|
|
58
|
+
\`\`\`
|
|
59
|
+
{% /code %}
|
|
60
|
+
|
|
61
|
+
Bad:
|
|
62
|
+
|
|
63
|
+
{% code %}
|
|
64
|
+
\`\`\`html
|
|
65
|
+
<head>
|
|
66
|
+
<script src="another-script.js"></script>
|
|
67
|
+
%svelte.head%
|
|
68
|
+
</head>
|
|
69
|
+
\`\`\`
|
|
70
|
+
{% /code %}
|
|
71
|
+
|
|
72
|
+
**(C)** Wire through the MODE environment variable, and make sure MODE is set to \`production\` only for production builds:
|
|
73
|
+
|
|
74
|
+
Add \`mode: process.env.MODE || 'development'\` to the \`vite\` section of your \`kit\` config in your \`svelte.config.js\` file. For example:
|
|
75
|
+
|
|
76
|
+
{% code %}
|
|
77
|
+
\`\`\`javascript
|
|
78
|
+
const config = {
|
|
79
|
+
kit: {
|
|
80
|
+
vite: {
|
|
81
|
+
// default to development as a guard
|
|
82
|
+
mode: process.env.MODE || 'development',
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
}
|
|
86
|
+
\`\`\`
|
|
87
|
+
{% /code %}
|
|
88
|
+
|
|
89
|
+
For all builds that get deployed to production, build your application using:
|
|
90
|
+
|
|
91
|
+
\`\`\`bash
|
|
92
|
+
MODE=production npm run build
|
|
93
|
+
\`\`\`
|
|
94
|
+
|
|
95
|
+
And for all other builds, including builds that get deployed to staging stacks and preview URLs, build your app using:
|
|
96
|
+
|
|
97
|
+
\`\`\`bash
|
|
98
|
+
MODE=development npm run build
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
101
|
+
or
|
|
102
|
+
|
|
103
|
+
\`\`\`bash
|
|
104
|
+
MODE=staging npm run build
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
**(D)** If you want to test your server side rendered content, then contact us
|
|
109
|
+
|
|
110
|
+
By default Meticulous will stub out all requests to server side rendered pages, and so won't test server side rendered content. If you
|
|
111
|
+
use server side rendering and wish to test your server side rendered pages then please reach out to
|
|
112
|
+
[${METICULOUS_SUPPORT_EMAIL}](mailto:${METICULOUS_SUPPORT_EMAIL}), or [book a call with us](${METICULOUS_SETUP_CALENDLY_LINK}), and we'll help you get set up.
|
|
113
|
+
`;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL } from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
2
|
+
|
|
3
|
+
export const viteInstructions = (
|
|
4
|
+
injectSessionIdHeader = false,
|
|
5
|
+
) => `Install the Meticulous recorder plugin and add it to your Vite config. The plugin injects the recorder script as the first script tag in your app's \`<head>\`, with no async or defer attributes ([learn more](${ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL})).
|
|
6
|
+
|
|
7
|
+
{% code %}
|
|
8
|
+
\`\`\`shell
|
|
9
|
+
npm install @alwaysmeticulous/recorder-plugin --save-dev
|
|
10
|
+
\`\`\`
|
|
11
|
+
{% /code %}
|
|
12
|
+
|
|
13
|
+
Modify your \`vite.config.ts\` file to include the plugin:
|
|
14
|
+
|
|
15
|
+
{% code_with_project_selector %}
|
|
16
|
+
{% tabs tabNameSpace="env" %}
|
|
17
|
+
{% tab label="Dev Only (default)" %}
|
|
18
|
+
\`\`\`typescript
|
|
19
|
+
import { defineConfig } from "vite";
|
|
20
|
+
import meticulous from "@alwaysmeticulous/recorder-plugin/vite";
|
|
21
|
+
|
|
22
|
+
export default defineConfig({
|
|
23
|
+
plugins: [
|
|
24
|
+
meticulous({
|
|
25
|
+
recordingToken: "{% project_recording_token /%}",${
|
|
26
|
+
injectSessionIdHeader
|
|
27
|
+
? '\n attributes: { "data-inject-session-id-header": "true" },'
|
|
28
|
+
: ""
|
|
29
|
+
}
|
|
30
|
+
}),
|
|
31
|
+
],
|
|
32
|
+
});
|
|
33
|
+
\`\`\`
|
|
34
|
+
{% /tab %}
|
|
35
|
+
{% tab label="All Environments" %}
|
|
36
|
+
\`\`\`typescript
|
|
37
|
+
import { defineConfig } from "vite";
|
|
38
|
+
import meticulous from "@alwaysmeticulous/recorder-plugin/vite";
|
|
39
|
+
|
|
40
|
+
export default defineConfig({
|
|
41
|
+
plugins: [
|
|
42
|
+
meticulous({
|
|
43
|
+
recordingToken: "{% project_recording_token /%}",
|
|
44
|
+
enabled: "always",${
|
|
45
|
+
injectSessionIdHeader
|
|
46
|
+
? '\n attributes: { "data-inject-session-id-header": "true" },'
|
|
47
|
+
: ""
|
|
48
|
+
}
|
|
49
|
+
}),
|
|
50
|
+
],
|
|
51
|
+
});
|
|
52
|
+
\`\`\`
|
|
53
|
+
{% /tab %}
|
|
54
|
+
{% /tabs %}
|
|
55
|
+
{% /code_with_project_selector %}
|
|
56
|
+
|
|
57
|
+
By default, the plugin injects the recorder only during Vite development builds. If you set \`enabled: "always"\`, the plugin will inject the recorder in every environment and automatically set \`data-is-production-environment\` based on Vite's detected mode.
|
|
58
|
+
`;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ADDITIONAL_GUIDES,
|
|
3
|
+
INSTALL_RECORDER_AS_NPM_DEPENDENCY_URL,
|
|
4
|
+
ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL,
|
|
5
|
+
} from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
6
|
+
|
|
7
|
+
const REQUIREMENTS_TITLE =
|
|
8
|
+
"**Important: The Meticulous Recorder script should be the first script to load, and have no async or defer attributes**";
|
|
9
|
+
|
|
10
|
+
const NEXTJS_REQUIREMENTS_TITLE =
|
|
11
|
+
"**Important: The Meticulous Recorder script should use the native `script` tag instead of the NextJS `Script` component, be the first script to load, and have no async or defer attributes**";
|
|
12
|
+
|
|
13
|
+
export const DEFAULT_NOT_POSSIBLE_TO_MEET_REQUIREMENTS_TEXT = `If it's not possible to meet these requirements then you can [use an NPM dependency instead of a script tag](${INSTALL_RECORDER_AS_NPM_DEPENDENCY_URL}). If you need to wait for a network request to complete before you know whether you should record the session then you can [buffer the requests in memory, and only send them later](${ADDITIONAL_GUIDES.CONTROLLING_WHEN_RECORDING_STARTS_AND_STOPS_URL}).`;
|
|
14
|
+
|
|
15
|
+
export const scriptRequirementsCalloutCard = ({
|
|
16
|
+
isNextJs,
|
|
17
|
+
notPossibleToMeetRequirementsText,
|
|
18
|
+
}: {
|
|
19
|
+
isNextJs: "yes" | "no" | "maybe";
|
|
20
|
+
notPossibleToMeetRequirementsText?: string;
|
|
21
|
+
}) => `
|
|
22
|
+
{% callout_card showIcon=false %}
|
|
23
|
+
${isNextJs === "yes" ? NEXTJS_REQUIREMENTS_TITLE : REQUIREMENTS_TITLE}
|
|
24
|
+
|
|
25
|
+
Libraries you depend on may snapshot references
|
|
26
|
+
to \`window.fetch\` or \`window.XMLHttpRequest\` early in the page lifecycle, which means if Meticulous is not the first script to load
|
|
27
|
+
it may not be able to record all the network
|
|
28
|
+
responses required for your app to function ([learn more](${ENSURE_RECORDER_CAPTURES_ALL_REQUESTS_URL})). Therefore the recorder script
|
|
29
|
+
must be the first script to load in order to be guaranteed to capture all network requests correctly. This means:
|
|
30
|
+
|
|
31
|
+
1. It should be added to your \`index.html\` file, before any other script tags.
|
|
32
|
+
2. It should not have any async or defer attributes set${
|
|
33
|
+
isNextJs === "yes"
|
|
34
|
+
? `, and use the native \`script\` tag instead of the NextJS \`Script\` component`
|
|
35
|
+
: "."
|
|
36
|
+
}${
|
|
37
|
+
isNextJs === "maybe"
|
|
38
|
+
? ` If using NextJS then it should use the native \`script\` tag instead of the NextJS \`Script\` component.`
|
|
39
|
+
: ""
|
|
40
|
+
}
|
|
41
|
+
3. It should be present in the initial HTML returned from the server -- you cannot add the script tag dynamically using JavaScript, since if
|
|
42
|
+
you do so the browser may execute the script after other scripts have loaded. If you need to include the script tag in your HTML only
|
|
43
|
+
in certain environments then this must be done either server-side, or at build time by templating your HTML.
|
|
44
|
+
|
|
45
|
+
${
|
|
46
|
+
notPossibleToMeetRequirementsText ??
|
|
47
|
+
DEFAULT_NOT_POSSIBLE_TO_MEET_REQUIREMENTS_TEXT
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
{% /callout_card %}
|
|
51
|
+
`;
|
package/dist/commands/onboard/templates/docs/recorder-snippets/steps-after-installing-recorder.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
RECORDER_CSP_EXCEPTIONS_URL,
|
|
3
|
+
TROUBLESHOOT_RECORDER_URL,
|
|
4
|
+
} from "src/lib/utils/internal-urls/docs-urls.utils";
|
|
5
|
+
|
|
6
|
+
export const STEPS_AFTER_INSTALLING_RECORDER = `
|
|
7
|
+
## Validating installation
|
|
8
|
+
|
|
9
|
+
Once you add the Meticulous snippet, open your webapp (either locally or on the environment that you injected the snippet into) and record a session by clicking around on your web app.
|
|
10
|
+
|
|
11
|
+
If the snippet was installed successfully you should be able to view the recorded session in your
|
|
12
|
+
{% project_link %}Meticulous dashboard {% /project_link %} in the **Sessions** section.
|
|
13
|
+
|
|
14
|
+
If you set a CSP policy on your application then you'll need to add [these](${RECORDER_CSP_EXCEPTIONS_URL}) CSP exceptions.
|
|
15
|
+
|
|
16
|
+
## I've installed the snippet but why do I not see any sessions in my Meticulous dashboard?
|
|
17
|
+
|
|
18
|
+
See [troubleshooting](${TROUBLESHOOT_RECORDER_URL}) for more information on why this might be happening.
|
|
19
|
+
|
|
20
|
+
## Issues / questions?
|
|
21
|
+
|
|
22
|
+
We're always happy to help you with any issues you encounter while setting up or anything you might be unsure about.
|
|
23
|
+
|
|
24
|
+
Get in touch by emailing [support@meticulous.ai](mailto:support@meticulous.ai).
|
|
25
|
+
`;
|