@posthog/wizard
Version:
The PostHog wizard helps you to configure your project
121 lines • 5.55 kB
JavaScript
"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.runSvelteWizard = runSvelteWizard;
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 file_utils_1 = require("../utils/file-utils");
const clack_utils_2 = require("../utils/clack-utils");
const add_editor_rules_1 = require("../steps/add-editor-rules");
const messages_1 = require("../lib/messages");
const steps_1 = require("../steps");
async function runSvelteWizard(options) {
(0, clack_utils_1.printWelcome)({
wizardName: 'PostHog Svelte wizard',
});
const aiConsent = await (0, clack_utils_1.askForAIConsent)(options);
if (!aiConsent) {
await (0, clack_utils_1.abort)('The Svelte wizard requires AI to get setup right now. Please view the docs to setup Svelte manually instead: https://posthog.com/docs/libraries/svelte', 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, '@sveltejs/kit', '@sveltejs/kit');
const svelteVersion = (0, package_json_1.getPackageVersion)('@sveltejs/kit', packageJson);
if (svelteVersion) {
analytics_1.analytics.setTag('svelte-version', svelteVersion);
}
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.svelte,
});
await (0, clack_utils_1.installPackage)({
packageName: 'posthog-node',
packageNameDisplayLabel: 'posthog-node',
packageManager: packageManagerFromInstallStep,
alreadyInstalled: !!packageJson?.dependencies?.['posthog-node'],
forceInstall: options.forceInstall,
askBeforeUpdating: false,
installDir: options.installDir,
integration: constants_1.Integration.svelte,
});
const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({
installDir: options.installDir,
integration: constants_1.Integration.svelte,
});
const installationDocumentation = (0, docs_1.getSvelteDocumentation)({
language: typeScriptDetected ? 'typescript' : 'javascript',
});
clack_1.default.log.info(`Reviewing PostHog documentation for Svelte`);
const filesToChange = await (0, file_utils_1.getFilesToChange)({
integration: constants_1.Integration.svelte,
relevantFiles,
documentation: installationDocumentation,
accessToken,
cloudRegion,
projectId,
});
await (0, file_utils_1.generateFileChangesForIntegration)({
integration: constants_1.Integration.svelte,
filesToChange,
accessToken,
installDir: options.installDir,
documentation: installationDocumentation,
cloudRegion,
projectId,
});
const { relativeEnvFilePath, addedEnvVariables } = await (0, steps_1.addOrUpdateEnvironmentVariablesStep)({
variables: {
['PUBLIC_POSTHOG_KEY']: projectApiKey,
['PUBLIC_POSTHOG_HOST']: host,
},
installDir: options.installDir,
integration: constants_1.Integration.svelte,
});
const packageManagerForOutro = packageManagerFromInstallStep ?? (await (0, clack_utils_1.getPackageManager)(options));
await (0, steps_1.runPrettierStep)({
installDir: options.installDir,
integration: constants_1.Integration.svelte,
});
const addedEditorRules = await (0, add_editor_rules_1.addEditorRulesStep)({
installDir: options.installDir,
rulesName: 'svelte-rules.md',
integration: constants_1.Integration.svelte,
});
await (0, steps_1.addMCPServerToClientsStep)({
cloudRegion,
integration: constants_1.Integration.svelte,
ci: options.ci,
});
const outroMessage = (0, messages_1.getOutroMessage)({
options,
integration: constants_1.Integration.svelte,
cloudRegion,
addedEditorRules,
packageManager: packageManagerForOutro,
envFileChanged: addedEnvVariables ? relativeEnvFilePath : undefined,
uploadedEnvVars: [],
});
clack_1.default.outro(outroMessage);
await analytics_1.analytics.shutdown('success');
}
//# sourceMappingURL=svelte-wizard.js.map