UNPKG

@posthog/wizard

Version:

The PostHog wizard helps you to configure your project

109 lines 4.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.runWizard = runWizard; const clack_utils_1 = require("./utils/clack-utils"); const nextjs_wizard_1 = require("./nextjs/nextjs-wizard"); const constants_1 = require("./lib/constants"); const environment_1 = require("./utils/environment"); const clack_1 = __importDefault(require("./utils/clack")); const path_1 = __importDefault(require("path")); const config_1 = require("./lib/config"); const react_wizard_1 = require("./react/react-wizard"); const analytics_1 = require("./utils/analytics"); const svelte_wizard_1 = require("./svelte/svelte-wizard"); const react_native_wizard_1 = require("./react-native/react-native-wizard"); const astro_wizard_1 = require("./astro/astro-wizard"); const events_1 = require("events"); const chalk_1 = __importDefault(require("chalk")); events_1.EventEmitter.defaultMaxListeners = 50; async function runWizard(argv) { const finalArgs = { ...argv, ...(0, environment_1.readEnvironment)(), }; let resolvedInstallDir; if (finalArgs.installDir) { if (path_1.default.isAbsolute(finalArgs.installDir)) { resolvedInstallDir = finalArgs.installDir; } else { resolvedInstallDir = path_1.default.join(process.cwd(), finalArgs.installDir); } } else { resolvedInstallDir = process.cwd(); } const wizardOptions = { debug: finalArgs.debug ?? false, forceInstall: finalArgs.forceInstall ?? false, installDir: resolvedInstallDir, cloudRegion: finalArgs.region ?? undefined, default: finalArgs.default ?? false, signup: finalArgs.signup ?? false, }; clack_1.default.intro(`Welcome to the PostHog setup wizard ✨`); const integration = finalArgs.integration ?? (await getIntegrationForSetup(wizardOptions)); analytics_1.analytics.setTag('integration', integration); try { switch (integration) { case constants_1.Integration.nextjs: await (0, nextjs_wizard_1.runNextjsWizard)(wizardOptions); break; case constants_1.Integration.react: await (0, react_wizard_1.runReactWizard)(wizardOptions); break; case constants_1.Integration.svelte: await (0, svelte_wizard_1.runSvelteWizard)(wizardOptions); break; case constants_1.Integration.reactNative: await (0, react_native_wizard_1.runReactNativeWizard)(wizardOptions); break; case constants_1.Integration.astro: await (0, astro_wizard_1.runAstroWizard)(wizardOptions); break; default: clack_1.default.log.error('No setup wizard selected!'); } } catch (error) { analytics_1.analytics.captureException(error, { integration, arguments: JSON.stringify(finalArgs), }); await analytics_1.analytics.shutdown('error'); clack_1.default.log.error(`Something went wrong. You can read the documentation at ${chalk_1.default.cyan(`${config_1.INTEGRATION_CONFIG[integration].docsUrl}`)} to set up PostHog manually.`); process.exit(1); } } async function detectIntegration(options) { const integrationConfigs = Object.entries(config_1.INTEGRATION_CONFIG).sort(([a], [b]) => config_1.INTEGRATION_ORDER.indexOf(a) - config_1.INTEGRATION_ORDER.indexOf(b)); for (const [integration, config] of integrationConfigs) { const detected = await config.detect(options); if (detected) { return integration; } } } async function getIntegrationForSetup(options) { const detectedIntegration = await detectIntegration(options); if (detectedIntegration) { clack_1.default.log.success(`Detected integration: ${(0, constants_1.getIntegrationDescription)(detectedIntegration)}`); return detectedIntegration; } const integration = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({ message: 'What do you want to set up?', options: [ { value: constants_1.Integration.nextjs, label: 'Next.js' }, { value: constants_1.Integration.astro, label: 'Astro' }, { value: constants_1.Integration.react, label: 'React' }, { value: constants_1.Integration.svelte, label: 'Svelte' }, { value: constants_1.Integration.reactNative, label: 'React Native' }, ], })); return integration; } //# sourceMappingURL=run.js.map