UNPKG

@posthog/wizard

Version:

The PostHog wizard helps you to configure your project

121 lines 5.53 kB
"use strict"; /* eslint-disable max-lines */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.runReactWizard = runReactWizard; const clack_utils_1 = require("../utils/clack-utils"); const package_json_1 = require("../utils/package-json"); const clack_1 = __importDefault(require("../utils/clack")); const constants_1 = require("../lib/constants"); const docs_1 = require("./docs"); const analytics_1 = require("../utils/analytics"); const environment_1 = require("../utils/environment"); const file_utils_1 = require("../utils/file-utils"); const clack_utils_2 = require("../utils/clack-utils"); const messages_1 = require("../lib/messages"); const steps_1 = require("../steps"); const upload_environment_variables_1 = require("../steps/upload-environment-variables"); async function runReactWizard(options) { (0, clack_utils_1.printWelcome)({ wizardName: 'PostHog React wizard', }); const aiConsent = await (0, clack_utils_1.askForAIConsent)(options); if (!aiConsent) { await (0, clack_utils_1.abort)('The React wizard requires AI to get setup right now. Please view the docs to setup React manually instead: https://posthog.com/docs/libraries/react', 0); } const cloudRegion = options.cloudRegion ?? (await (0, clack_utils_2.askForCloudRegion)()); const typeScriptDetected = (0, clack_utils_1.isUsingTypeScript)(options); await (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)(options); const packageJson = await (0, clack_utils_1.getPackageDotJson)(options); await (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, 'react', 'React'); const reactVersion = (0, package_json_1.getPackageVersion)('react', packageJson); if (reactVersion) { analytics_1.analytics.setTag('react-version', reactVersion); } const { projectApiKey, accessToken, host, projectId } = await (0, clack_utils_1.getOrAskForProjectData)({ ...options, cloudRegion, }); const sdkAlreadyInstalled = (0, package_json_1.hasPackageInstalled)('posthog-js', packageJson); analytics_1.analytics.setTag('sdk-already-installed', sdkAlreadyInstalled); const { packageManager: packageManagerFromInstallStep } = await (0, clack_utils_1.installPackage)({ packageName: 'posthog-js', packageNameDisplayLabel: 'posthog-js', alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'], forceInstall: options.forceInstall, askBeforeUpdating: false, installDir: options.installDir, integration: constants_1.Integration.react, }); const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({ installDir: options.installDir, integration: constants_1.Integration.react, }); const envVarPrefix = await (0, environment_1.detectEnvVarPrefix)(options); const installationDocumentation = (0, docs_1.getReactDocumentation)({ language: typeScriptDetected ? 'typescript' : 'javascript', envVarPrefix, }); clack_1.default.log.info(`Reviewing PostHog documentation for React`); const filesToChange = await (0, file_utils_1.getFilesToChange)({ integration: constants_1.Integration.react, relevantFiles, documentation: installationDocumentation, accessToken, cloudRegion, projectId, }); await (0, file_utils_1.generateFileChangesForIntegration)({ integration: constants_1.Integration.react, filesToChange, accessToken, installDir: options.installDir, documentation: installationDocumentation, cloudRegion, projectId, }); const { relativeEnvFilePath, addedEnvVariables } = await (0, steps_1.addOrUpdateEnvironmentVariablesStep)({ variables: { [envVarPrefix + 'POSTHOG_KEY']: projectApiKey, [envVarPrefix + 'POSTHOG_HOST']: host, }, installDir: options.installDir, integration: constants_1.Integration.react, }); const packageManagerForOutro = packageManagerFromInstallStep ?? (await (0, clack_utils_1.getPackageManager)(options)); await (0, steps_1.runPrettierStep)({ installDir: options.installDir, integration: constants_1.Integration.react, }); const addedEditorRules = await (0, steps_1.addEditorRulesStep)({ installDir: options.installDir, rulesName: 'react-rules.md', integration: constants_1.Integration.react, }); const uploadedEnvVars = await (0, upload_environment_variables_1.uploadEnvironmentVariablesStep)({ [envVarPrefix + 'POSTHOG_KEY']: projectApiKey, [envVarPrefix + 'POSTHOG_HOST']: host, }, { integration: constants_1.Integration.react, options, }); await (0, steps_1.addMCPServerToClientsStep)({ cloudRegion, integration: constants_1.Integration.react, ci: options.ci, }); const outroMessage = (0, messages_1.getOutroMessage)({ options, integration: constants_1.Integration.react, cloudRegion, addedEditorRules, packageManager: packageManagerForOutro, envFileChanged: addedEnvVariables ? relativeEnvFilePath : undefined, uploadedEnvVars, }); clack_1.default.outro(outroMessage); await analytics_1.analytics.shutdown('success'); } //# sourceMappingURL=react-wizard.js.map