@posthog/wizard 1.24.0 → 1.25.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/src/lib/agent-interface.js +7 -8
- package/dist/src/lib/agent-interface.js.map +1 -1
- package/dist/src/lib/agent-runner.d.ts +1 -1
- package/dist/src/lib/agent-runner.js +4 -3
- package/dist/src/lib/agent-runner.js.map +1 -1
- package/dist/src/lib/config.d.ts +12 -1
- package/dist/src/lib/config.js +22 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/constants.d.ts +5 -1
- package/dist/src/lib/constants.js +8 -1
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/framework-config.d.ts +8 -6
- package/dist/src/lib/framework-config.js +12 -0
- package/dist/src/lib/framework-config.js.map +1 -1
- package/dist/src/lib/safe-tools.d.ts +2 -0
- package/dist/src/lib/safe-tools.js +215 -0
- package/dist/src/lib/safe-tools.js.map +1 -0
- package/dist/src/nextjs/nextjs-wizard-agent.js +0 -3
- package/dist/src/nextjs/nextjs-wizard-agent.js.map +1 -1
- package/dist/src/react-router/react-router-wizard-agent.d.ts +5 -0
- package/dist/src/react-router/react-router-wizard-agent.js +151 -0
- package/dist/src/react-router/react-router-wizard-agent.js.map +1 -0
- package/dist/src/react-router/utils.d.ts +19 -0
- package/dist/src/react-router/utils.js +276 -0
- package/dist/src/react-router/utils.js.map +1 -0
- package/dist/src/run.js +12 -0
- package/dist/src/run.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LINTING_TOOLS = void 0;
|
|
4
|
+
exports.LINTING_TOOLS = [
|
|
5
|
+
// All (general purpose)
|
|
6
|
+
'codespell',
|
|
7
|
+
'cspell',
|
|
8
|
+
'git-diff-check',
|
|
9
|
+
'gitleaks',
|
|
10
|
+
'trufflehog',
|
|
11
|
+
// Amazon States Language
|
|
12
|
+
'asl-validator',
|
|
13
|
+
// Ansible
|
|
14
|
+
'ansible-lint',
|
|
15
|
+
// Apex, Java
|
|
16
|
+
'pmd',
|
|
17
|
+
// Astro, CSS, GraphQL, GritQL, HTML, JavaScript, JSON, JSONC, JSON5, JSX, TSX, Svelte, TypeScript, Vue
|
|
18
|
+
'biome',
|
|
19
|
+
// AWS CloudFormation templates
|
|
20
|
+
'cfn-lint',
|
|
21
|
+
'cfnlint',
|
|
22
|
+
// AWS CloudFormation, Azure ARM, Dockerfile, Helm, Kubernetes, Security, Terraform
|
|
23
|
+
'checkov',
|
|
24
|
+
// AWS CloudFormation, Azure ARM, Dockerfile, Kubernetes, Secrets, Security, Terraform, Vulnerabilities
|
|
25
|
+
'trivy',
|
|
26
|
+
// Azure Resource Manager (ARM)
|
|
27
|
+
'test-aztemplate',
|
|
28
|
+
// Bash / Shell
|
|
29
|
+
'shellcheck',
|
|
30
|
+
'shfmt',
|
|
31
|
+
// Bazel, Starlark
|
|
32
|
+
'buildifier',
|
|
33
|
+
// C, C++
|
|
34
|
+
'cpplint',
|
|
35
|
+
'clang-format',
|
|
36
|
+
'clang-tidy',
|
|
37
|
+
'cmake-format',
|
|
38
|
+
'iwyu',
|
|
39
|
+
'pragma-once',
|
|
40
|
+
// C#, Dotnet (.NET)
|
|
41
|
+
'dotnet-format',
|
|
42
|
+
// CircleCI Config
|
|
43
|
+
'circleci',
|
|
44
|
+
// Clojure
|
|
45
|
+
'clj-kondo',
|
|
46
|
+
// CoffeeScript
|
|
47
|
+
'coffeelint',
|
|
48
|
+
// Commit messages
|
|
49
|
+
'commitlint',
|
|
50
|
+
// Copy/paste detection
|
|
51
|
+
'jscpd',
|
|
52
|
+
// CSS, SCSS, Sass
|
|
53
|
+
'stylelint',
|
|
54
|
+
// CSS, GraphQL, HTML, JavaScript, JSON, JSONC, JSON5, JSX, TSX, Markdown, TypeScript, Vue, YAML
|
|
55
|
+
'prettier',
|
|
56
|
+
// Cue
|
|
57
|
+
'cue-fmt',
|
|
58
|
+
// Dart
|
|
59
|
+
'dart',
|
|
60
|
+
// Dockerfile / Docker
|
|
61
|
+
'hadolint',
|
|
62
|
+
// Dotenv
|
|
63
|
+
'dotenv-linter',
|
|
64
|
+
// EditorConfig
|
|
65
|
+
'editorconfig-checker',
|
|
66
|
+
// GitHub Actions
|
|
67
|
+
'actionlint',
|
|
68
|
+
'zizmor',
|
|
69
|
+
// Go
|
|
70
|
+
'gofmt',
|
|
71
|
+
'gofumpt',
|
|
72
|
+
'goimports',
|
|
73
|
+
'gokart',
|
|
74
|
+
'golangci-lint',
|
|
75
|
+
'golines',
|
|
76
|
+
// Go, Java, JavaScript, JSON, Python, Ruby, TypeScript, YAML
|
|
77
|
+
'semgrep',
|
|
78
|
+
// GoReleaser
|
|
79
|
+
'goreleaser',
|
|
80
|
+
// GraphQL
|
|
81
|
+
'graphql-schema-linter',
|
|
82
|
+
// Groovy
|
|
83
|
+
'npm-groovy-lint',
|
|
84
|
+
// HAML
|
|
85
|
+
'haml-lint',
|
|
86
|
+
// HTML
|
|
87
|
+
'htmlhint',
|
|
88
|
+
// HTML Templates
|
|
89
|
+
'djlint',
|
|
90
|
+
// Java
|
|
91
|
+
'checkstyle',
|
|
92
|
+
'google-java-format',
|
|
93
|
+
// JavaScript, JSON, TypeScript
|
|
94
|
+
'eslint',
|
|
95
|
+
// Next.js
|
|
96
|
+
'next lint',
|
|
97
|
+
// JavaScript, JSON, Markdown, TypeScript
|
|
98
|
+
'deno',
|
|
99
|
+
// JavaScript, TypeScript
|
|
100
|
+
'rome',
|
|
101
|
+
// JSON, JSONC, JSON5
|
|
102
|
+
'eslint-plugin-jsonc',
|
|
103
|
+
'eslint-plugin-json',
|
|
104
|
+
// JSX, TSX
|
|
105
|
+
'eslint-plugin-jsx-a11y',
|
|
106
|
+
'eslint-plugin-react',
|
|
107
|
+
// Jupyter Notebook
|
|
108
|
+
'nbqa',
|
|
109
|
+
// Kotlin
|
|
110
|
+
'detekt',
|
|
111
|
+
'ktlint',
|
|
112
|
+
// Kubernetes
|
|
113
|
+
'kubeconform',
|
|
114
|
+
'kube-linter',
|
|
115
|
+
// LaTeX
|
|
116
|
+
'chktex',
|
|
117
|
+
// Lua
|
|
118
|
+
'luacheck',
|
|
119
|
+
'stylua',
|
|
120
|
+
// Markdown
|
|
121
|
+
'markdownlint',
|
|
122
|
+
'markdownlint-cli2',
|
|
123
|
+
'markdown-link-check',
|
|
124
|
+
'markdown-table-prettify',
|
|
125
|
+
'remark-lint',
|
|
126
|
+
// Natural language / Prose
|
|
127
|
+
'textlint',
|
|
128
|
+
'vale',
|
|
129
|
+
// Nix
|
|
130
|
+
'nixpkgs-fmt',
|
|
131
|
+
// OpenAPI
|
|
132
|
+
'spectral',
|
|
133
|
+
// package.json
|
|
134
|
+
'sort-package-json',
|
|
135
|
+
// Perl
|
|
136
|
+
'perlcritic',
|
|
137
|
+
'perltidy',
|
|
138
|
+
// PHP
|
|
139
|
+
'php-cs-fixer',
|
|
140
|
+
'phpcs',
|
|
141
|
+
'phpstan',
|
|
142
|
+
'psalm',
|
|
143
|
+
// PNG
|
|
144
|
+
'oxipng',
|
|
145
|
+
// PowerShell
|
|
146
|
+
'psscriptanalyzer',
|
|
147
|
+
// Prisma
|
|
148
|
+
'prisma',
|
|
149
|
+
// Protocol Buffers (Protobuf)
|
|
150
|
+
'protolint',
|
|
151
|
+
'buf',
|
|
152
|
+
// Python
|
|
153
|
+
'pylint',
|
|
154
|
+
'flake8',
|
|
155
|
+
'isort',
|
|
156
|
+
'ruff',
|
|
157
|
+
'black',
|
|
158
|
+
'autopep8',
|
|
159
|
+
'bandit',
|
|
160
|
+
'mypy',
|
|
161
|
+
'pyright',
|
|
162
|
+
'sourcery',
|
|
163
|
+
'yapf',
|
|
164
|
+
// R
|
|
165
|
+
'lintr',
|
|
166
|
+
// Rego
|
|
167
|
+
'opa',
|
|
168
|
+
'regal',
|
|
169
|
+
// Ruby
|
|
170
|
+
'rubocop',
|
|
171
|
+
'brakeman',
|
|
172
|
+
'rufo',
|
|
173
|
+
'standardrb',
|
|
174
|
+
// Rust
|
|
175
|
+
'clippy',
|
|
176
|
+
'rustfmt',
|
|
177
|
+
// Scala
|
|
178
|
+
'scalafmt',
|
|
179
|
+
// Security, Vulnerabilities
|
|
180
|
+
'osv-scanner',
|
|
181
|
+
// Security, Terraform
|
|
182
|
+
'terrascan',
|
|
183
|
+
'tfsec',
|
|
184
|
+
// Snakemake
|
|
185
|
+
'snakemake --lint',
|
|
186
|
+
'snakefmt',
|
|
187
|
+
// SQL
|
|
188
|
+
'sqlfluff',
|
|
189
|
+
'sql-formatter',
|
|
190
|
+
'sqlfmt',
|
|
191
|
+
'squawk',
|
|
192
|
+
// SVG
|
|
193
|
+
'svgo',
|
|
194
|
+
// Swift
|
|
195
|
+
'stringslint',
|
|
196
|
+
'swiftformat',
|
|
197
|
+
'swiftlint',
|
|
198
|
+
// Terraform
|
|
199
|
+
'tflint',
|
|
200
|
+
'terraform',
|
|
201
|
+
'tofu',
|
|
202
|
+
// Terragrunt
|
|
203
|
+
'terragrunt',
|
|
204
|
+
// Textproto
|
|
205
|
+
'txtpbfmt',
|
|
206
|
+
// TOML
|
|
207
|
+
'taplo',
|
|
208
|
+
// Vue
|
|
209
|
+
'eslint-plugin-vue',
|
|
210
|
+
// XML
|
|
211
|
+
'xmllint',
|
|
212
|
+
// YAML
|
|
213
|
+
'yamllint',
|
|
214
|
+
];
|
|
215
|
+
//# sourceMappingURL=safe-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-tools.js","sourceRoot":"","sources":["../../../src/lib/safe-tools.ts"],"names":[],"mappings":"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","sourcesContent":["export const LINTING_TOOLS: string[] = [\n // All (general purpose)\n 'codespell',\n 'cspell',\n 'git-diff-check',\n 'gitleaks',\n 'trufflehog',\n\n // Amazon States Language\n 'asl-validator',\n\n // Ansible\n 'ansible-lint',\n\n // Apex, Java\n 'pmd',\n\n // Astro, CSS, GraphQL, GritQL, HTML, JavaScript, JSON, JSONC, JSON5, JSX, TSX, Svelte, TypeScript, Vue\n 'biome',\n\n // AWS CloudFormation templates\n 'cfn-lint',\n 'cfnlint',\n\n // AWS CloudFormation, Azure ARM, Dockerfile, Helm, Kubernetes, Security, Terraform\n 'checkov',\n\n // AWS CloudFormation, Azure ARM, Dockerfile, Kubernetes, Secrets, Security, Terraform, Vulnerabilities\n 'trivy',\n\n // Azure Resource Manager (ARM)\n 'test-aztemplate',\n\n // Bash / Shell\n 'shellcheck',\n 'shfmt',\n\n // Bazel, Starlark\n 'buildifier',\n\n // C, C++\n 'cpplint',\n 'clang-format',\n 'clang-tidy',\n 'cmake-format',\n 'iwyu',\n 'pragma-once',\n\n // C#, Dotnet (.NET)\n 'dotnet-format',\n\n // CircleCI Config\n 'circleci',\n\n // Clojure\n 'clj-kondo',\n\n // CoffeeScript\n 'coffeelint',\n\n // Commit messages\n 'commitlint',\n\n // Copy/paste detection\n 'jscpd',\n\n // CSS, SCSS, Sass\n 'stylelint',\n\n // CSS, GraphQL, HTML, JavaScript, JSON, JSONC, JSON5, JSX, TSX, Markdown, TypeScript, Vue, YAML\n 'prettier',\n\n // Cue\n 'cue-fmt',\n\n // Dart\n 'dart',\n\n // Dockerfile / Docker\n 'hadolint',\n\n // Dotenv\n 'dotenv-linter',\n\n // EditorConfig\n 'editorconfig-checker',\n\n // GitHub Actions\n 'actionlint',\n 'zizmor',\n\n // Go\n 'gofmt',\n 'gofumpt',\n 'goimports',\n 'gokart',\n 'golangci-lint',\n 'golines',\n\n // Go, Java, JavaScript, JSON, Python, Ruby, TypeScript, YAML\n 'semgrep',\n\n // GoReleaser\n 'goreleaser',\n\n // GraphQL\n 'graphql-schema-linter',\n\n // Groovy\n 'npm-groovy-lint',\n\n // HAML\n 'haml-lint',\n\n // HTML\n 'htmlhint',\n\n // HTML Templates\n 'djlint',\n\n // Java\n 'checkstyle',\n 'google-java-format',\n\n // JavaScript, JSON, TypeScript\n 'eslint',\n\n // Next.js\n 'next lint',\n\n // JavaScript, JSON, Markdown, TypeScript\n 'deno',\n\n // JavaScript, TypeScript\n 'rome',\n\n // JSON, JSONC, JSON5\n 'eslint-plugin-jsonc',\n 'eslint-plugin-json',\n\n // JSX, TSX\n 'eslint-plugin-jsx-a11y',\n 'eslint-plugin-react',\n\n // Jupyter Notebook\n 'nbqa',\n\n // Kotlin\n 'detekt',\n 'ktlint',\n\n // Kubernetes\n 'kubeconform',\n 'kube-linter',\n\n // LaTeX\n 'chktex',\n\n // Lua\n 'luacheck',\n 'stylua',\n\n // Markdown\n 'markdownlint',\n 'markdownlint-cli2',\n 'markdown-link-check',\n 'markdown-table-prettify',\n 'remark-lint',\n\n // Natural language / Prose\n 'textlint',\n 'vale',\n\n // Nix\n 'nixpkgs-fmt',\n\n // OpenAPI\n 'spectral',\n\n // package.json\n 'sort-package-json',\n\n // Perl\n 'perlcritic',\n 'perltidy',\n\n // PHP\n 'php-cs-fixer',\n 'phpcs',\n 'phpstan',\n 'psalm',\n\n // PNG\n 'oxipng',\n\n // PowerShell\n 'psscriptanalyzer',\n\n // Prisma\n 'prisma',\n\n // Protocol Buffers (Protobuf)\n 'protolint',\n 'buf',\n\n // Python\n 'pylint',\n 'flake8',\n 'isort',\n 'ruff',\n 'black',\n 'autopep8',\n 'bandit',\n 'mypy',\n 'pyright',\n 'sourcery',\n 'yapf',\n\n // R\n 'lintr',\n\n // Rego\n 'opa',\n 'regal',\n\n // Ruby\n 'rubocop',\n 'brakeman',\n 'rufo',\n 'standardrb',\n\n // Rust\n 'clippy',\n 'rustfmt',\n\n // Scala\n 'scalafmt',\n\n // Security, Vulnerabilities\n 'osv-scanner',\n\n // Security, Terraform\n 'terrascan',\n 'tfsec',\n\n // Snakemake\n 'snakemake --lint',\n 'snakefmt',\n\n // SQL\n 'sqlfluff',\n 'sql-formatter',\n 'sqlfmt',\n 'squawk',\n\n // SVG\n 'svgo',\n\n // Swift\n 'stringslint',\n 'swiftformat',\n 'swiftlint',\n\n // Terraform\n 'tflint',\n 'terraform',\n 'tofu',\n\n // Terragrunt\n 'terragrunt',\n\n // Textproto\n 'txtpbfmt',\n\n // TOML\n 'taplo',\n\n // Vue\n 'eslint-plugin-vue',\n\n // XML\n 'xmllint',\n\n // YAML\n 'yamllint',\n] as const;\n\nexport type LintingTool = (typeof LINTING_TOOLS)[number];\n"]}
|
|
@@ -56,7 +56,6 @@ const NEXTJS_AGENT_CONFIG = {
|
|
|
56
56
|
integration: constants_1.Integration.nextjs,
|
|
57
57
|
docsUrl: 'https://posthog.com/docs/libraries/next-js',
|
|
58
58
|
unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/next-js',
|
|
59
|
-
abortMessage: 'This wizard uses an LLM agent to intelligently modify your project. Please view the docs to setup Next.js manually instead: https://posthog.com/docs/libraries/next-js',
|
|
60
59
|
gatherContext: async (options) => {
|
|
61
60
|
const router = await (0, utils_1.getNextJsRouter)(options);
|
|
62
61
|
return { router };
|
|
@@ -91,8 +90,6 @@ const NEXTJS_AGENT_CONFIG = {
|
|
|
91
90
|
},
|
|
92
91
|
},
|
|
93
92
|
ui: {
|
|
94
|
-
welcomeMessage: 'PostHog Next.js wizard (agent-powered)',
|
|
95
|
-
spinnerMessage: 'Writing your PostHog setup with events, error capture and more...',
|
|
96
93
|
successMessage: 'PostHog integration complete',
|
|
97
94
|
estimatedDurationMinutes: 8,
|
|
98
95
|
getOutroChanges: (context) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs-wizard-agent.js","sourceRoot":"","sources":["../../../src/nextjs/nextjs-wizard-agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"nextjs-wizard-agent.js","sourceRoot":"","sources":["../../../src/nextjs/nextjs-wizard-agent.ts"],"names":[],"mappings":"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","sourcesContent":["/* Simplified Next.js wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../utils/types';\nimport { enableDebugLogs } from '../utils/debug';\nimport { runAgentWizard } from '../lib/agent-runner';\nimport { Integration } from '../lib/constants';\nimport { getPackageVersion } from '../utils/package-json';\nimport { getPackageDotJson } from '../utils/clack-utils';\nimport clack from '../utils/clack';\nimport chalk from 'chalk';\nimport * as semver from 'semver';\nimport {\n getNextJsRouter,\n getNextJsVersionBucket,\n getNextJsRouterName,\n NextJsRouter,\n} from './utils';\n\n/**\n * Next.js framework configuration for the universal agent runner.\n */\nconst MINIMUM_NEXTJS_VERSION = '15.3.0';\n\nconst NEXTJS_AGENT_CONFIG = {\n metadata: {\n name: 'Next.js',\n integration: Integration.nextjs,\n docsUrl: 'https://posthog.com/docs/libraries/next-js',\n unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/next-js',\n gatherContext: async (options: WizardOptions) => {\n const router = await getNextJsRouter(options);\n return { router };\n },\n },\n\n detection: {\n packageName: 'next',\n packageDisplayName: 'Next.js',\n getVersion: (packageJson: any) => getPackageVersion('next', packageJson),\n getVersionBucket: getNextJsVersionBucket,\n },\n\n environment: {\n uploadToHosting: true,\n getEnvVars: (apiKey: string, host: string) => ({\n NEXT_PUBLIC_POSTHOG_KEY: apiKey,\n NEXT_PUBLIC_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context: any) => {\n const router = context.router as NextJsRouter;\n return {\n router: router === NextJsRouter.APP_ROUTER ? 'app' : 'pages',\n };\n },\n },\n\n prompts: {\n getAdditionalContextLines: (context: any) => {\n const router = context.router as NextJsRouter;\n const routerType = router === NextJsRouter.APP_ROUTER ? 'app' : 'pages';\n return [`Router: ${routerType}`];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context: any) => {\n const router = context.router as NextJsRouter;\n const routerName = getNextJsRouterName(router);\n return [\n `Analyzed your Next.js project structure (${routerName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => {\n return [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ];\n },\n },\n};\n\n/**\n * Next.js wizard powered by the universal agent runner.\n */\nexport async function runNextjsWizardAgent(\n options: WizardOptions,\n): Promise<void> {\n if (options.debug) {\n enableDebugLogs();\n }\n\n // Check Next.js version - agent wizard requires >= 15.3.0\n const packageJson = await getPackageDotJson(options);\n const nextVersion = getPackageVersion('next', packageJson);\n\n if (nextVersion) {\n const coercedVersion = semver.coerce(nextVersion);\n if (coercedVersion && semver.lt(coercedVersion, MINIMUM_NEXTJS_VERSION)) {\n const docsUrl =\n NEXTJS_AGENT_CONFIG.metadata.unsupportedVersionDocsUrl ??\n NEXTJS_AGENT_CONFIG.metadata.docsUrl;\n\n clack.log.warn(\n `Sorry: the wizard can't help you with Next.js ${nextVersion}. Upgrade to Next.js ${MINIMUM_NEXTJS_VERSION} or later, or check out the manual setup guide.`,\n );\n clack.log.info(`Setup Next.js manually: ${chalk.cyan(docsUrl)}`);\n clack.outro('PostHog wizard will see you next time!');\n return;\n }\n }\n\n await runAgentWizard(NEXTJS_AGENT_CONFIG, options);\n}\n"]}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.runReactRouterWizardAgent = runReactRouterWizardAgent;
|
|
40
|
+
const debug_1 = require("../utils/debug");
|
|
41
|
+
const agent_runner_1 = require("../lib/agent-runner");
|
|
42
|
+
const constants_1 = require("../lib/constants");
|
|
43
|
+
const package_json_1 = require("../utils/package-json");
|
|
44
|
+
const clack_utils_1 = require("../utils/clack-utils");
|
|
45
|
+
const clack_1 = __importDefault(require("../utils/clack"));
|
|
46
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
47
|
+
const semver = __importStar(require("semver"));
|
|
48
|
+
const utils_1 = require("./utils");
|
|
49
|
+
/**
|
|
50
|
+
* React Router framework configuration for the universal agent runner.
|
|
51
|
+
*/
|
|
52
|
+
const MINIMUM_REACT_ROUTER_VERSION = '6.0.0';
|
|
53
|
+
const REACT_ROUTER_AGENT_CONFIG = {
|
|
54
|
+
metadata: {
|
|
55
|
+
name: 'React Router',
|
|
56
|
+
integration: constants_1.Integration.reactRouter,
|
|
57
|
+
docsUrl: 'https://posthog.com/docs/libraries/react',
|
|
58
|
+
unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/react',
|
|
59
|
+
gatherContext: async (options) => {
|
|
60
|
+
const routerMode = await (0, utils_1.getReactRouterMode)(options);
|
|
61
|
+
return { routerMode };
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
detection: {
|
|
65
|
+
packageName: 'react-router',
|
|
66
|
+
packageDisplayName: 'React Router',
|
|
67
|
+
getVersion: (packageJson) => (0, package_json_1.getPackageVersion)('react-router', packageJson),
|
|
68
|
+
getVersionBucket: utils_1.getReactRouterVersionBucket,
|
|
69
|
+
},
|
|
70
|
+
environment: {
|
|
71
|
+
uploadToHosting: false,
|
|
72
|
+
getEnvVars: (apiKey, host) => ({
|
|
73
|
+
REACT_APP_POSTHOG_KEY: apiKey,
|
|
74
|
+
REACT_APP_POSTHOG_HOST: host,
|
|
75
|
+
}),
|
|
76
|
+
},
|
|
77
|
+
analytics: {
|
|
78
|
+
getTags: (context) => {
|
|
79
|
+
const routerMode = context.routerMode;
|
|
80
|
+
return {
|
|
81
|
+
routerMode: routerMode || 'unknown',
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
prompts: {
|
|
86
|
+
getAdditionalContextLines: (context) => {
|
|
87
|
+
const routerMode = context.routerMode;
|
|
88
|
+
const modeName = routerMode
|
|
89
|
+
? (0, utils_1.getReactRouterModeName)(routerMode)
|
|
90
|
+
: 'unknown';
|
|
91
|
+
// Map router mode to framework ID for MCP docs resource
|
|
92
|
+
const frameworkIdMap = {
|
|
93
|
+
[utils_1.ReactRouterMode.V6]: 'react-react-router-6',
|
|
94
|
+
[utils_1.ReactRouterMode.V7_FRAMEWORK]: 'react-react-router-7-framework',
|
|
95
|
+
[utils_1.ReactRouterMode.V7_DATA]: 'react-react-router-7-data',
|
|
96
|
+
[utils_1.ReactRouterMode.V7_DECLARATIVE]: 'react-react-router-7-declarative',
|
|
97
|
+
};
|
|
98
|
+
const frameworkId = routerMode
|
|
99
|
+
? frameworkIdMap[routerMode]
|
|
100
|
+
: utils_1.ReactRouterMode.V7_FRAMEWORK;
|
|
101
|
+
return [
|
|
102
|
+
`Router mode: ${modeName}`,
|
|
103
|
+
`Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,
|
|
104
|
+
];
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
ui: {
|
|
108
|
+
successMessage: 'PostHog integration complete',
|
|
109
|
+
estimatedDurationMinutes: 8,
|
|
110
|
+
getOutroChanges: (context) => {
|
|
111
|
+
const routerMode = context.routerMode;
|
|
112
|
+
const modeName = routerMode
|
|
113
|
+
? (0, utils_1.getReactRouterModeName)(routerMode)
|
|
114
|
+
: 'React Router';
|
|
115
|
+
return [
|
|
116
|
+
`Analyzed your React Router project structure (${modeName})`,
|
|
117
|
+
`Created and configured PostHog initializers`,
|
|
118
|
+
`Integrated PostHog into your application`,
|
|
119
|
+
];
|
|
120
|
+
},
|
|
121
|
+
getOutroNextSteps: () => [
|
|
122
|
+
'Start your development server to see PostHog in action',
|
|
123
|
+
'Visit your PostHog dashboard to see incoming events',
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* React Router wizard powered by the universal agent runner.
|
|
129
|
+
*/
|
|
130
|
+
async function runReactRouterWizardAgent(options) {
|
|
131
|
+
if (options.debug) {
|
|
132
|
+
(0, debug_1.enableDebugLogs)();
|
|
133
|
+
}
|
|
134
|
+
// Check React Router version - agent wizard requires >= 6.0.0
|
|
135
|
+
const packageJson = await (0, clack_utils_1.getPackageDotJson)(options);
|
|
136
|
+
const reactRouterVersion = (0, package_json_1.getPackageVersion)('react-router', packageJson);
|
|
137
|
+
if (reactRouterVersion) {
|
|
138
|
+
const coercedVersion = semver.coerce(reactRouterVersion);
|
|
139
|
+
if (coercedVersion &&
|
|
140
|
+
semver.lt(coercedVersion, MINIMUM_REACT_ROUTER_VERSION)) {
|
|
141
|
+
const docsUrl = REACT_ROUTER_AGENT_CONFIG.metadata.unsupportedVersionDocsUrl ??
|
|
142
|
+
REACT_ROUTER_AGENT_CONFIG.metadata.docsUrl;
|
|
143
|
+
clack_1.default.log.warn(`Sorry: the wizard can't help you with React Router ${reactRouterVersion}. Upgrade to React Router ${MINIMUM_REACT_ROUTER_VERSION} or later, or check out the manual setup guide.`);
|
|
144
|
+
clack_1.default.log.info(`Setup React Router manually: ${chalk_1.default.cyan(docsUrl)}`);
|
|
145
|
+
clack_1.default.outro('PostHog wizard will see you next time!');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
await (0, agent_runner_1.runAgentWizard)(REACT_ROUTER_AGENT_CONFIG, options);
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=react-router-wizard-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-router-wizard-agent.js","sourceRoot":"","sources":["../../../src/react-router/react-router-wizard-agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GA,8DA+BC;AA1ID,0CAAiD;AACjD,sDAAqD;AACrD,gDAA+C;AAC/C,wDAA0D;AAC1D,sDAAyD;AACzD,2DAAmC;AACnC,kDAA0B;AAC1B,+CAAiC;AACjC,mCAKiB;AAEjB;;GAEG;AACH,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAE7C,MAAM,yBAAyB,GAAoB;IACjD,QAAQ,EAAE;QACR,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,uBAAW,CAAC,WAAW;QACpC,OAAO,EAAE,0CAA0C;QACnD,yBAAyB,EAAE,0CAA0C;QACrE,aAAa,EAAE,KAAK,EAAE,OAAsB,EAAE,EAAE;YAC9C,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC;YACrD,OAAO,EAAE,UAAU,EAAE,CAAC;QACxB,CAAC;KACF;IAED,SAAS,EAAE;QACT,WAAW,EAAE,cAAc;QAC3B,kBAAkB,EAAE,cAAc;QAClC,UAAU,EAAE,CAAC,WAAgB,EAAE,EAAE,CAC/B,IAAA,gCAAiB,EAAC,cAAc,EAAE,WAAW,CAAC;QAChD,gBAAgB,EAAE,mCAA2B;KAC9C;IAED,WAAW,EAAE;QACX,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC;YAC7C,qBAAqB,EAAE,MAAM;YAC7B,sBAAsB,EAAE,IAAI;SAC7B,CAAC;KACH;IAED,SAAS,EAAE;QACT,OAAO,EAAE,CAAC,OAAY,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,OAAO,CAAC,UAA6B,CAAC;YACzD,OAAO;gBACL,UAAU,EAAE,UAAU,IAAI,SAAS;aACpC,CAAC;QACJ,CAAC;KACF;IAED,OAAO,EAAE;QACP,yBAAyB,EAAE,CAAC,OAAY,EAAE,EAAE;YAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,UAA6B,CAAC;YACzD,MAAM,QAAQ,GAAG,UAAU;gBACzB,CAAC,CAAC,IAAA,8BAAsB,EAAC,UAAU,CAAC;gBACpC,CAAC,CAAC,SAAS,CAAC;YAEd,wDAAwD;YACxD,MAAM,cAAc,GAAoC;gBACtD,CAAC,uBAAe,CAAC,EAAE,CAAC,EAAE,sBAAsB;gBAC5C,CAAC,uBAAe,CAAC,YAAY,CAAC,EAAE,gCAAgC;gBAChE,CAAC,uBAAe,CAAC,OAAO,CAAC,EAAE,2BAA2B;gBACtD,CAAC,uBAAe,CAAC,cAAc,CAAC,EAAE,kCAAkC;aACrE,CAAC;YAEF,MAAM,WAAW,GAAG,UAAU;gBAC5B,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC;gBAC5B,CAAC,CAAC,uBAAe,CAAC,YAAY,CAAC;YAEjC,OAAO;gBACL,gBAAgB,QAAQ,EAAE;gBAC1B,sBAAsB,WAAW,mCAAmC,WAAW,qBAAqB;aACrG,CAAC;QACJ,CAAC;KACF;IAED,EAAE,EAAE;QACF,cAAc,EAAE,8BAA8B;QAC9C,wBAAwB,EAAE,CAAC;QAC3B,eAAe,EAAE,CAAC,OAAY,EAAE,EAAE;YAChC,MAAM,UAAU,GAAG,OAAO,CAAC,UAA6B,CAAC;YACzD,MAAM,QAAQ,GAAG,UAAU;gBACzB,CAAC,CAAC,IAAA,8BAAsB,EAAC,UAAU,CAAC;gBACpC,CAAC,CAAC,cAAc,CAAC;YACnB,OAAO;gBACL,iDAAiD,QAAQ,GAAG;gBAC5D,6CAA6C;gBAC7C,0CAA0C;aAC3C,CAAC;QACJ,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC;YACvB,wDAAwD;YACxD,qDAAqD;SACtD;KACF;CACF,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAC7C,OAAsB;IAEtB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAA,uBAAe,GAAE,CAAC;IACpB,CAAC;IAED,8DAA8D;IAC9D,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;IACrD,MAAM,kBAAkB,GAAG,IAAA,gCAAiB,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE1E,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACzD,IACE,cAAc;YACd,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,4BAA4B,CAAC,EACvD,CAAC;YACD,MAAM,OAAO,GACX,yBAAyB,CAAC,QAAQ,CAAC,yBAAyB;gBAC5D,yBAAyB,CAAC,QAAQ,CAAC,OAAO,CAAC;YAE7C,eAAK,CAAC,GAAG,CAAC,IAAI,CACZ,sDAAsD,kBAAkB,6BAA6B,4BAA4B,iDAAiD,CACnL,CAAC;YACF,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,gCAAgC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACtE,eAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,IAAA,6BAAc,EAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["/* React Router wizard using posthog-agent with PostHog MCP */\nimport type { WizardOptions } from '../utils/types';\nimport type { FrameworkConfig } from '../lib/framework-config';\nimport { enableDebugLogs } from '../utils/debug';\nimport { runAgentWizard } from '../lib/agent-runner';\nimport { Integration } from '../lib/constants';\nimport { getPackageVersion } from '../utils/package-json';\nimport { getPackageDotJson } from '../utils/clack-utils';\nimport clack from '../utils/clack';\nimport chalk from 'chalk';\nimport * as semver from 'semver';\nimport {\n getReactRouterMode,\n getReactRouterModeName,\n getReactRouterVersionBucket,\n ReactRouterMode,\n} from './utils';\n\n/**\n * React Router framework configuration for the universal agent runner.\n */\nconst MINIMUM_REACT_ROUTER_VERSION = '6.0.0';\n\nconst REACT_ROUTER_AGENT_CONFIG: FrameworkConfig = {\n metadata: {\n name: 'React Router',\n integration: Integration.reactRouter,\n docsUrl: 'https://posthog.com/docs/libraries/react',\n unsupportedVersionDocsUrl: 'https://posthog.com/docs/libraries/react',\n gatherContext: async (options: WizardOptions) => {\n const routerMode = await getReactRouterMode(options);\n return { routerMode };\n },\n },\n\n detection: {\n packageName: 'react-router',\n packageDisplayName: 'React Router',\n getVersion: (packageJson: any) =>\n getPackageVersion('react-router', packageJson),\n getVersionBucket: getReactRouterVersionBucket,\n },\n\n environment: {\n uploadToHosting: false,\n getEnvVars: (apiKey: string, host: string) => ({\n REACT_APP_POSTHOG_KEY: apiKey,\n REACT_APP_POSTHOG_HOST: host,\n }),\n },\n\n analytics: {\n getTags: (context: any) => {\n const routerMode = context.routerMode as ReactRouterMode;\n return {\n routerMode: routerMode || 'unknown',\n };\n },\n },\n\n prompts: {\n getAdditionalContextLines: (context: any) => {\n const routerMode = context.routerMode as ReactRouterMode;\n const modeName = routerMode\n ? getReactRouterModeName(routerMode)\n : 'unknown';\n\n // Map router mode to framework ID for MCP docs resource\n const frameworkIdMap: Record<ReactRouterMode, string> = {\n [ReactRouterMode.V6]: 'react-react-router-6',\n [ReactRouterMode.V7_FRAMEWORK]: 'react-react-router-7-framework',\n [ReactRouterMode.V7_DATA]: 'react-react-router-7-data',\n [ReactRouterMode.V7_DECLARATIVE]: 'react-react-router-7-declarative',\n };\n\n const frameworkId = routerMode\n ? frameworkIdMap[routerMode]\n : ReactRouterMode.V7_FRAMEWORK;\n\n return [\n `Router mode: ${modeName}`,\n `Framework docs ID: ${frameworkId} (use posthog://docs/frameworks/${frameworkId} for documentation)`,\n ];\n },\n },\n\n ui: {\n successMessage: 'PostHog integration complete',\n estimatedDurationMinutes: 8,\n getOutroChanges: (context: any) => {\n const routerMode = context.routerMode as ReactRouterMode;\n const modeName = routerMode\n ? getReactRouterModeName(routerMode)\n : 'React Router';\n return [\n `Analyzed your React Router project structure (${modeName})`,\n `Created and configured PostHog initializers`,\n `Integrated PostHog into your application`,\n ];\n },\n getOutroNextSteps: () => [\n 'Start your development server to see PostHog in action',\n 'Visit your PostHog dashboard to see incoming events',\n ],\n },\n};\n\n/**\n * React Router wizard powered by the universal agent runner.\n */\nexport async function runReactRouterWizardAgent(\n options: WizardOptions,\n): Promise<void> {\n if (options.debug) {\n enableDebugLogs();\n }\n\n // Check React Router version - agent wizard requires >= 6.0.0\n const packageJson = await getPackageDotJson(options);\n const reactRouterVersion = getPackageVersion('react-router', packageJson);\n\n if (reactRouterVersion) {\n const coercedVersion = semver.coerce(reactRouterVersion);\n if (\n coercedVersion &&\n semver.lt(coercedVersion, MINIMUM_REACT_ROUTER_VERSION)\n ) {\n const docsUrl =\n REACT_ROUTER_AGENT_CONFIG.metadata.unsupportedVersionDocsUrl ??\n REACT_ROUTER_AGENT_CONFIG.metadata.docsUrl;\n\n clack.log.warn(\n `Sorry: the wizard can't help you with React Router ${reactRouterVersion}. Upgrade to React Router ${MINIMUM_REACT_ROUTER_VERSION} or later, or check out the manual setup guide.`,\n );\n clack.log.info(`Setup React Router manually: ${chalk.cyan(docsUrl)}`);\n clack.outro('PostHog wizard will see you next time!');\n return;\n }\n }\n\n await runAgentWizard(REACT_ROUTER_AGENT_CONFIG, options);\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { WizardOptions } from '../utils/types';
|
|
2
|
+
export declare enum ReactRouterMode {
|
|
3
|
+
V6 = "v6",// React Router v6
|
|
4
|
+
V7_FRAMEWORK = "v7-framework",// React Router v7 with react-router.config.ts
|
|
5
|
+
V7_DATA = "v7-data",// React Router v7 with createBrowserRouter
|
|
6
|
+
V7_DECLARATIVE = "v7-declarative"
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Get React Router version bucket for analytics
|
|
10
|
+
*/
|
|
11
|
+
export declare function getReactRouterVersionBucket(version: string | undefined): string;
|
|
12
|
+
/**
|
|
13
|
+
* Detect React Router mode
|
|
14
|
+
*/
|
|
15
|
+
export declare function getReactRouterMode(options: WizardOptions): Promise<ReactRouterMode>;
|
|
16
|
+
/**
|
|
17
|
+
* Get human-readable name for React Router mode
|
|
18
|
+
*/
|
|
19
|
+
export declare function getReactRouterModeName(mode: ReactRouterMode): string;
|