@posthog/wizard 0.5.0 → 0.7.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.
Files changed (90) hide show
  1. package/README.md +21 -15
  2. package/package.json +1 -1
  3. package/dist/bin.d.ts +0 -2
  4. package/dist/bin.js +0 -28
  5. package/dist/bin.js.map +0 -1
  6. package/dist/src/lib/config.d.ts +0 -21
  7. package/dist/src/lib/config.js +0 -49
  8. package/dist/src/lib/config.js.map +0 -1
  9. package/dist/src/lib/constants.d.ts +0 -22
  10. package/dist/src/lib/constants.js +0 -40
  11. package/dist/src/lib/constants.js.map +0 -1
  12. package/dist/src/lib/prompts.d.ts +0 -16
  13. package/dist/src/lib/prompts.js +0 -80
  14. package/dist/src/lib/prompts.js.map +0 -1
  15. package/dist/src/nextjs/docs.d.ts +0 -8
  16. package/dist/src/nextjs/docs.js +0 -257
  17. package/dist/src/nextjs/docs.js.map +0 -1
  18. package/dist/src/nextjs/nextjs-wizard.d.ts +0 -2
  19. package/dist/src/nextjs/nextjs-wizard.js +0 -117
  20. package/dist/src/nextjs/nextjs-wizard.js.map +0 -1
  21. package/dist/src/nextjs/utils.d.ts +0 -9
  22. package/dist/src/nextjs/utils.js +0 -83
  23. package/dist/src/nextjs/utils.js.map +0 -1
  24. package/dist/src/react/docs.d.ts +0 -5
  25. package/dist/src/react/docs.js +0 -43
  26. package/dist/src/react/docs.js.map +0 -1
  27. package/dist/src/react/react-wizard.d.ts +0 -2
  28. package/dist/src/react/react-wizard.js +0 -103
  29. package/dist/src/react/react-wizard.js.map +0 -1
  30. package/dist/src/run.d.ts +0 -12
  31. package/dist/src/run.js +0 -72
  32. package/dist/src/run.js.map +0 -1
  33. package/dist/src/telemetry.d.ts +0 -2
  34. package/dist/src/telemetry.js +0 -13
  35. package/dist/src/telemetry.js.map +0 -1
  36. package/dist/src/utils/analytics.d.ts +0 -12
  37. package/dist/src/utils/analytics.js +0 -59
  38. package/dist/src/utils/analytics.js.map +0 -1
  39. package/dist/src/utils/bash.d.ts +0 -2
  40. package/dist/src/utils/bash.js +0 -54
  41. package/dist/src/utils/bash.js.map +0 -1
  42. package/dist/src/utils/clack-utils.d.ts +0 -184
  43. package/dist/src/utils/clack-utils.js +0 -678
  44. package/dist/src/utils/clack-utils.js.map +0 -1
  45. package/dist/src/utils/clack.d.ts +0 -2
  46. package/dist/src/utils/clack.js +0 -9
  47. package/dist/src/utils/clack.js.map +0 -1
  48. package/dist/src/utils/debug.d.ts +0 -2
  49. package/dist/src/utils/debug.js +0 -22
  50. package/dist/src/utils/debug.js.map +0 -1
  51. package/dist/src/utils/environment.d.ts +0 -9
  52. package/dist/src/utils/environment.js +0 -164
  53. package/dist/src/utils/environment.js.map +0 -1
  54. package/dist/src/utils/file-utils.d.ts +0 -29
  55. package/dist/src/utils/file-utils.js +0 -177
  56. package/dist/src/utils/file-utils.js.map +0 -1
  57. package/dist/src/utils/logging.d.ts +0 -9
  58. package/dist/src/utils/logging.js +0 -50
  59. package/dist/src/utils/logging.js.map +0 -1
  60. package/dist/src/utils/package-json.d.ts +0 -25
  61. package/dist/src/utils/package-json.js +0 -27
  62. package/dist/src/utils/package-json.js.map +0 -1
  63. package/dist/src/utils/package-manager.d.ts +0 -20
  64. package/dist/src/utils/package-manager.js +0 -187
  65. package/dist/src/utils/package-manager.js.map +0 -1
  66. package/dist/src/utils/query.d.ts +0 -8
  67. package/dist/src/utils/query.js +0 -27
  68. package/dist/src/utils/query.js.map +0 -1
  69. package/dist/src/utils/rules/add-editor-rules.d.ts +0 -9
  70. package/dist/src/utils/rules/add-editor-rules.js +0 -88
  71. package/dist/src/utils/rules/add-editor-rules.js.map +0 -1
  72. package/dist/src/utils/rules/add-editor-rules.ts +0 -82
  73. package/dist/src/utils/rules/next-rules.md +0 -9
  74. package/dist/src/utils/rules/react-rules.md +0 -7
  75. package/dist/src/utils/rules/universal.md +0 -20
  76. package/dist/src/utils/semver.d.ts +0 -5
  77. package/dist/src/utils/semver.js +0 -25
  78. package/dist/src/utils/semver.js.map +0 -1
  79. package/dist/src/utils/string.d.ts +0 -1
  80. package/dist/src/utils/string.js +0 -9
  81. package/dist/src/utils/string.js.map +0 -1
  82. package/dist/src/utils/types.d.ts +0 -44
  83. package/dist/src/utils/types.js +0 -3
  84. package/dist/src/utils/types.js.map +0 -1
  85. package/dist/src/utils/urls.d.ts +0 -4
  86. package/dist/src/utils/urls.js +0 -35
  87. package/dist/src/utils/urls.js.map +0 -1
  88. package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
  89. package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
  90. package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import type { WizardOptions } from '../utils/types';
2
- export declare function runNextjsWizard(options: WizardOptions): Promise<void>;
@@ -1,117 +0,0 @@
1
- "use strict";
2
- /* eslint-disable max-lines */
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.runNextjsWizard = runNextjsWizard;
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const clack_utils_1 = require("../utils/clack-utils");
10
- const package_json_1 = require("../utils/package-json");
11
- const utils_1 = require("./utils");
12
- const clack_1 = __importDefault(require("../utils/clack"));
13
- const constants_1 = require("../lib/constants");
14
- const docs_1 = require("./docs");
15
- const analytics_1 = require("../utils/analytics");
16
- const environment_1 = require("../utils/environment");
17
- const file_utils_1 = require("../utils/file-utils");
18
- const clack_utils_2 = require("../utils/clack-utils");
19
- const add_editor_rules_1 = require("../utils/rules/add-editor-rules");
20
- async function runNextjsWizard(options) {
21
- (0, clack_utils_1.printWelcome)({
22
- wizardName: 'PostHog Next.js Wizard',
23
- });
24
- const aiConsent = await (0, clack_utils_1.askForAIConsent)(options);
25
- if (!aiConsent) {
26
- await (0, clack_utils_1.abort)('The Next.js wizard requires AI to get setup right now. Please view the docs to setup Next.js manually instead: https://posthog.com/docs/libraries/next-js', 0);
27
- }
28
- const cloudRegion = options.cloudRegion ?? (await (0, clack_utils_2.askForCloudRegion)());
29
- const typeScriptDetected = (0, clack_utils_1.isUsingTypeScript)(options);
30
- await (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)(options);
31
- const packageJson = await (0, clack_utils_1.getPackageDotJson)(options);
32
- await (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, 'next', 'Next.js');
33
- const nextVersion = (0, package_json_1.getPackageVersion)('next', packageJson);
34
- analytics_1.analytics.setTag('nextjs-version', (0, utils_1.getNextJsVersionBucket)(nextVersion));
35
- const { projectApiKey, wizardHash, host } = await (0, clack_utils_1.getOrAskForProjectData)({
36
- ...options,
37
- cloudRegion,
38
- });
39
- const sdkAlreadyInstalled = (0, package_json_1.hasPackageInstalled)('posthog-js', packageJson);
40
- analytics_1.analytics.setTag('sdk-already-installed', sdkAlreadyInstalled);
41
- const { packageManager: packageManagerFromInstallStep } = await (0, clack_utils_1.installPackage)({
42
- packageName: 'posthog-js',
43
- packageNameDisplayLabel: 'posthog-js',
44
- alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'],
45
- forceInstall: options.forceInstall,
46
- askBeforeUpdating: false,
47
- installDir: options.installDir,
48
- integration: constants_1.Integration.nextjs,
49
- });
50
- await (0, clack_utils_1.installPackage)({
51
- packageName: 'posthog-node',
52
- packageNameDisplayLabel: 'posthog-node',
53
- packageManager: packageManagerFromInstallStep,
54
- alreadyInstalled: !!packageJson?.dependencies?.['posthog-node'],
55
- forceInstall: options.forceInstall,
56
- askBeforeUpdating: false,
57
- installDir: options.installDir,
58
- integration: constants_1.Integration.nextjs,
59
- });
60
- const router = await (0, utils_1.getNextJsRouter)(options);
61
- const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({
62
- installDir: options.installDir,
63
- integration: constants_1.Integration.nextjs,
64
- });
65
- const installationDocumentation = getInstallationDocumentation({
66
- router,
67
- host,
68
- language: typeScriptDetected ? 'typescript' : 'javascript',
69
- });
70
- clack_1.default.log.info(`Reviewing PostHog documentation for ${(0, utils_1.getNextJsRouterName)(router)}`);
71
- const filesToChange = await (0, file_utils_1.getFilesToChange)({
72
- integration: constants_1.Integration.nextjs,
73
- relevantFiles,
74
- documentation: installationDocumentation,
75
- wizardHash,
76
- cloudRegion,
77
- });
78
- await (0, file_utils_1.generateFileChangesForIntegration)({
79
- integration: constants_1.Integration.nextjs,
80
- filesToChange,
81
- wizardHash,
82
- installDir: options.installDir,
83
- documentation: installationDocumentation,
84
- cloudRegion,
85
- });
86
- await (0, environment_1.addOrUpdateEnvironmentVariables)({
87
- variables: {
88
- NEXT_PUBLIC_POSTHOG_KEY: projectApiKey,
89
- },
90
- installDir: options.installDir,
91
- integration: constants_1.Integration.nextjs,
92
- });
93
- const packageManagerForOutro = packageManagerFromInstallStep ?? (await (0, clack_utils_1.getPackageManager)(options));
94
- await (0, clack_utils_1.runPrettierIfInstalled)({
95
- installDir: options.installDir,
96
- integration: constants_1.Integration.nextjs,
97
- });
98
- await (0, add_editor_rules_1.addEditorRules)({
99
- rulesName: 'next-rules.md',
100
- installDir: options.installDir,
101
- integration: constants_1.Integration.nextjs,
102
- default: options.default,
103
- });
104
- clack_1.default.outro(`${chalk_1.default.green('Successfully installed PostHog!')} ${`\n\n${aiConsent
105
- ? `Note: This uses experimental AI to setup your project. It might have got it wrong, please check!\n`
106
- : ``}You should validate your setup by (re)starting your dev environment (e.g. ${chalk_1.default.cyan(`${packageManagerForOutro.runScriptCommand} dev`)})`}
107
-
108
- ${chalk_1.default.dim(`If you encounter any issues, let us know here: ${constants_1.ISSUES_URL}`)}`);
109
- await analytics_1.analytics.shutdown('success');
110
- }
111
- function getInstallationDocumentation({ router, host, language, }) {
112
- if (router === utils_1.NextJsRouter.PAGES_ROUTER) {
113
- return (0, docs_1.getNextjsPagesRouterDocs)({ host, language });
114
- }
115
- return (0, docs_1.getNextjsAppRouterDocs)({ host, language });
116
- }
117
- //# sourceMappingURL=nextjs-wizard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nextjs-wizard.js","sourceRoot":"","sources":["../../../src/nextjs/nextjs-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\n\nimport chalk from 'chalk';\nimport {\n abort,\n askForAIConsent,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n getPackageManager,\n installPackage,\n isUsingTypeScript,\n printWelcome,\n runPrettierIfInstalled,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport {\n getNextJsRouter,\n getNextJsRouterName,\n getNextJsVersionBucket,\n NextJsRouter,\n} from './utils';\nimport clack from '../utils/clack';\nimport { Integration, ISSUES_URL } from '../lib/constants';\nimport { getNextjsAppRouterDocs, getNextjsPagesRouterDocs } from './docs';\nimport { analytics } from '../utils/analytics';\nimport { addOrUpdateEnvironmentVariables } from '../utils/environment';\nimport {\n generateFileChangesForIntegration,\n getFilesToChange,\n getRelevantFilesForIntegration,\n} from '../utils/file-utils';\nimport type { WizardOptions } from '../utils/types';\nimport { askForCloudRegion } from '../utils/clack-utils';\nimport { addEditorRules } from '../utils/rules/add-editor-rules';\n\nexport async function runNextjsWizard(options: WizardOptions): Promise<void> {\n printWelcome({\n wizardName: 'PostHog Next.js Wizard',\n });\n\n const aiConsent = await askForAIConsent(options);\n\n if (!aiConsent) {\n await abort(\n 'The Next.js wizard requires AI to get setup right now. Please view the docs to setup Next.js manually instead: https://posthog.com/docs/libraries/next-js',\n 0,\n );\n }\n\n const cloudRegion = options.cloudRegion ?? (await askForCloudRegion());\n\n const typeScriptDetected = isUsingTypeScript(options);\n\n await confirmContinueIfNoOrDirtyGitRepo(options);\n\n const packageJson = await getPackageDotJson(options);\n\n await ensurePackageIsInstalled(packageJson, 'next', 'Next.js');\n\n const nextVersion = getPackageVersion('next', packageJson);\n\n analytics.setTag('nextjs-version', getNextJsVersionBucket(nextVersion));\n\n const { projectApiKey, wizardHash, host } = await getOrAskForProjectData({\n ...options,\n cloudRegion,\n });\n\n const sdkAlreadyInstalled = hasPackageInstalled('posthog-js', packageJson);\n\n analytics.setTag('sdk-already-installed', sdkAlreadyInstalled);\n\n const { packageManager: packageManagerFromInstallStep } =\n await installPackage({\n packageName: 'posthog-js',\n packageNameDisplayLabel: 'posthog-js',\n alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'],\n forceInstall: options.forceInstall,\n askBeforeUpdating: false,\n installDir: options.installDir,\n integration: Integration.nextjs,\n });\n\n await installPackage({\n packageName: 'posthog-node',\n packageNameDisplayLabel: 'posthog-node',\n packageManager: packageManagerFromInstallStep,\n alreadyInstalled: !!packageJson?.dependencies?.['posthog-node'],\n forceInstall: options.forceInstall,\n askBeforeUpdating: false,\n installDir: options.installDir,\n integration: Integration.nextjs,\n });\n\n const router = await getNextJsRouter(options);\n\n const relevantFiles = await getRelevantFilesForIntegration({\n installDir: options.installDir,\n integration: Integration.nextjs,\n });\n\n const installationDocumentation = getInstallationDocumentation({\n router,\n host,\n language: typeScriptDetected ? 'typescript' : 'javascript',\n });\n\n clack.log.info(\n `Reviewing PostHog documentation for ${getNextJsRouterName(router)}`,\n );\n\n const filesToChange = await getFilesToChange({\n integration: Integration.nextjs,\n relevantFiles,\n documentation: installationDocumentation,\n wizardHash,\n cloudRegion,\n });\n\n await generateFileChangesForIntegration({\n integration: Integration.nextjs,\n filesToChange,\n wizardHash,\n installDir: options.installDir,\n documentation: installationDocumentation,\n cloudRegion,\n });\n\n await addOrUpdateEnvironmentVariables({\n variables: {\n NEXT_PUBLIC_POSTHOG_KEY: projectApiKey,\n },\n installDir: options.installDir,\n integration: Integration.nextjs,\n });\n\n const packageManagerForOutro =\n packageManagerFromInstallStep ?? (await getPackageManager(options));\n\n await runPrettierIfInstalled({\n installDir: options.installDir,\n integration: Integration.nextjs,\n });\n\n await addEditorRules({\n rulesName: 'next-rules.md',\n installDir: options.installDir,\n integration: Integration.nextjs,\n default: options.default,\n });\n\n clack.outro(`${chalk.green('Successfully installed PostHog!')} ${`\\n\\n${\n aiConsent\n ? `Note: This uses experimental AI to setup your project. It might have got it wrong, please check!\\n`\n : ``\n }You should validate your setup by (re)starting your dev environment (e.g. ${chalk.cyan(\n `${packageManagerForOutro.runScriptCommand} dev`,\n )})`}\n\n${chalk.dim(`If you encounter any issues, let us know here: ${ISSUES_URL}`)}`);\n\n await analytics.shutdown('success');\n}\n\nfunction getInstallationDocumentation({\n router,\n host,\n language,\n}: {\n router: NextJsRouter;\n host: string;\n language: 'typescript' | 'javascript';\n}) {\n if (router === NextJsRouter.PAGES_ROUTER) {\n return getNextjsPagesRouterDocs({ host, language });\n }\n\n return getNextjsAppRouterDocs({ host, language });\n}\n"]}
@@ -1,9 +0,0 @@
1
- import type { WizardOptions } from '../utils/types';
2
- export declare function getNextJsVersionBucket(version: string | undefined): string;
3
- export declare enum NextJsRouter {
4
- APP_ROUTER = "app-router",
5
- PAGES_ROUTER = "pages-router"
6
- }
7
- export declare const IGNORE_PATTERNS: string[];
8
- export declare function getNextJsRouter({ installDir, }: Pick<WizardOptions, 'installDir'>): Promise<NextJsRouter>;
9
- export declare const getNextJsRouterName: (router: NextJsRouter) => "app router" | "pages router";
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getNextJsRouterName = exports.IGNORE_PATTERNS = exports.NextJsRouter = void 0;
7
- exports.getNextJsVersionBucket = getNextJsVersionBucket;
8
- exports.getNextJsRouter = getNextJsRouter;
9
- const semver_1 = require("semver");
10
- const fast_glob_1 = __importDefault(require("fast-glob"));
11
- const clack_utils_1 = require("../utils/clack-utils");
12
- const clack_1 = __importDefault(require("../utils/clack"));
13
- function getNextJsVersionBucket(version) {
14
- if (!version) {
15
- return 'none';
16
- }
17
- try {
18
- const minVer = (0, semver_1.minVersion)(version);
19
- if (!minVer) {
20
- return 'invalid';
21
- }
22
- const majorVersion = (0, semver_1.major)(minVer);
23
- if (majorVersion >= 11) {
24
- return `${majorVersion}.x`;
25
- }
26
- return '<11.0.0';
27
- }
28
- catch {
29
- return 'unknown';
30
- }
31
- }
32
- var NextJsRouter;
33
- (function (NextJsRouter) {
34
- NextJsRouter["APP_ROUTER"] = "app-router";
35
- NextJsRouter["PAGES_ROUTER"] = "pages-router";
36
- })(NextJsRouter || (exports.NextJsRouter = NextJsRouter = {}));
37
- exports.IGNORE_PATTERNS = [
38
- '**/node_modules/**',
39
- '**/dist/**',
40
- '**/build/**',
41
- '**/public/**',
42
- ];
43
- async function getNextJsRouter({ installDir, }) {
44
- const pagesMatches = await (0, fast_glob_1.default)('**/pages/_app.@(ts|tsx|js|jsx)', {
45
- dot: true,
46
- cwd: installDir,
47
- ignore: exports.IGNORE_PATTERNS,
48
- });
49
- const hasPagesDir = pagesMatches.length > 0;
50
- const appMatches = await (0, fast_glob_1.default)('**/app/**/layout.@(ts|tsx|js|jsx)', {
51
- dot: true,
52
- cwd: installDir,
53
- ignore: exports.IGNORE_PATTERNS,
54
- });
55
- const hasAppDir = appMatches.length > 0;
56
- if (hasPagesDir && !hasAppDir) {
57
- clack_1.default.log.info(`Detected ${(0, exports.getNextJsRouterName)(NextJsRouter.PAGES_ROUTER)} 📃`);
58
- return NextJsRouter.PAGES_ROUTER;
59
- }
60
- if (hasAppDir && !hasPagesDir) {
61
- clack_1.default.log.info(`Detected ${(0, exports.getNextJsRouterName)(NextJsRouter.APP_ROUTER)} 📱`);
62
- return NextJsRouter.APP_ROUTER;
63
- }
64
- const result = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
65
- message: 'What router are you using?',
66
- options: [
67
- {
68
- label: (0, exports.getNextJsRouterName)(NextJsRouter.APP_ROUTER),
69
- value: NextJsRouter.APP_ROUTER,
70
- },
71
- {
72
- label: (0, exports.getNextJsRouterName)(NextJsRouter.PAGES_ROUTER),
73
- value: NextJsRouter.PAGES_ROUTER,
74
- },
75
- ],
76
- }));
77
- return result;
78
- }
79
- const getNextJsRouterName = (router) => {
80
- return router === NextJsRouter.APP_ROUTER ? 'app router' : 'pages router';
81
- };
82
- exports.getNextJsRouterName = getNextJsRouterName;
83
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/nextjs/utils.ts"],"names":[],"mappings":";;;;;;AAMA,wDAkBC;AAaD,0CAkDC;AAvFD,mCAA2C;AAC3C,0DAA2B;AAC3B,sDAAwD;AACxD,2DAAmC;AAGnC,SAAgB,sBAAsB,CAAC,OAA2B;IAChE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,YAAY,GAAG,IAAA,cAAK,EAAC,MAAM,CAAC,CAAC;QACnC,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;YACvB,OAAO,GAAG,YAAY,IAAI,CAAC;QAC7B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,6CAA6B,CAAA;AAC/B,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAEY,QAAA,eAAe,GAAG;IAC7B,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,cAAc;CACf,CAAC;AACK,KAAK,UAAU,eAAe,CAAC,EACpC,UAAU,GACwB;IAClC,MAAM,YAAY,GAAG,MAAM,IAAA,mBAAE,EAAC,gCAAgC,EAAE;QAC9D,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,uBAAe;KACxB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAE,EAAC,mCAAmC,EAAE;QAC/D,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,uBAAe;KACxB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAExC,IAAI,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9B,eAAK,CAAC,GAAG,CAAC,IAAI,CACZ,YAAY,IAAA,2BAAmB,EAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAChE,CAAC;QACF,OAAO,YAAY,CAAC,YAAY,CAAC;IACnC,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,eAAK,CAAC,GAAG,CAAC,IAAI,CACZ,YAAY,IAAA,2BAAmB,EAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAC9D,CAAC;QACF,OAAO,YAAY,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAiB,MAAM,IAAA,8BAAgB,EACjD,eAAK,CAAC,MAAM,CAAC;QACX,OAAO,EAAE,4BAA4B;QACrC,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,IAAA,2BAAmB,EAAC,YAAY,CAAC,UAAU,CAAC;gBACnD,KAAK,EAAE,YAAY,CAAC,UAAU;aAC/B;YACD;gBACE,KAAK,EAAE,IAAA,2BAAmB,EAAC,YAAY,CAAC,YAAY,CAAC;gBACrD,KAAK,EAAE,YAAY,CAAC,YAAY;aACjC;SACF;KACF,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,MAAM,mBAAmB,GAAG,CAAC,MAAoB,EAAE,EAAE;IAC1D,OAAO,MAAM,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;AAC5E,CAAC,CAAC;AAFW,QAAA,mBAAmB,uBAE9B","sourcesContent":["import { major, minVersion } from 'semver';\nimport fg from 'fast-glob';\nimport { abortIfCancelled } from '../utils/clack-utils';\nimport clack from '../utils/clack';\nimport type { WizardOptions } from '../utils/types';\n\nexport function getNextJsVersionBucket(version: string | undefined) {\n if (!version) {\n return 'none';\n }\n\n try {\n const minVer = minVersion(version);\n if (!minVer) {\n return 'invalid';\n }\n const majorVersion = major(minVer);\n if (majorVersion >= 11) {\n return `${majorVersion}.x`;\n }\n return '<11.0.0';\n } catch {\n return 'unknown';\n }\n}\n\nexport enum NextJsRouter {\n APP_ROUTER = 'app-router',\n PAGES_ROUTER = 'pages-router',\n}\n\nexport const IGNORE_PATTERNS = [\n '**/node_modules/**',\n '**/dist/**',\n '**/build/**',\n '**/public/**',\n];\nexport async function getNextJsRouter({\n installDir,\n}: Pick<WizardOptions, 'installDir'>): Promise<NextJsRouter> {\n const pagesMatches = await fg('**/pages/_app.@(ts|tsx|js|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n const hasPagesDir = pagesMatches.length > 0;\n\n const appMatches = await fg('**/app/**/layout.@(ts|tsx|js|jsx)', {\n dot: true,\n cwd: installDir,\n ignore: IGNORE_PATTERNS,\n });\n\n const hasAppDir = appMatches.length > 0;\n\n if (hasPagesDir && !hasAppDir) {\n clack.log.info(\n `Detected ${getNextJsRouterName(NextJsRouter.PAGES_ROUTER)} 📃`,\n );\n return NextJsRouter.PAGES_ROUTER;\n }\n\n if (hasAppDir && !hasPagesDir) {\n clack.log.info(\n `Detected ${getNextJsRouterName(NextJsRouter.APP_ROUTER)} 📱`,\n );\n return NextJsRouter.APP_ROUTER;\n }\n\n const result: NextJsRouter = await abortIfCancelled(\n clack.select({\n message: 'What router are you using?',\n options: [\n {\n label: getNextJsRouterName(NextJsRouter.APP_ROUTER),\n value: NextJsRouter.APP_ROUTER,\n },\n {\n label: getNextJsRouterName(NextJsRouter.PAGES_ROUTER),\n value: NextJsRouter.PAGES_ROUTER,\n },\n ],\n }),\n );\n\n return result;\n}\n\nexport const getNextJsRouterName = (router: NextJsRouter) => {\n return router === NextJsRouter.APP_ROUTER ? 'app router' : 'pages router';\n};\n"]}
@@ -1,5 +0,0 @@
1
- export declare const getReactDocumentation: ({ host, language, envVarPrefix, }: {
2
- host: string;
3
- language: "typescript" | "javascript";
4
- envVarPrefix: string;
5
- }) => string;
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getReactDocumentation = void 0;
4
- const getReactDocumentation = ({ host, language, envVarPrefix, }) => {
5
- const apiKeyText = envVarPrefix === 'VITE_PUBLIC_'
6
- ? 'import.meta.env.VITE_PUBLIC_POSTHOG_KEY'
7
- : `process.env.${envVarPrefix}POSTHOG_KEY`;
8
- return `
9
- ==============================
10
- FILE: {index / App}.${language === 'typescript' ? 'tsx' : 'jsx'} (wherever the root of the app is)
11
- LOCATION: Wherever the root of the app is
12
- ==============================
13
- Changes:
14
- - Add the PostHogProvider to the root of the app in the provider tree.
15
-
16
- Example:
17
- --------------------------------------------------
18
- import React from 'react';
19
- import ReactDOM from 'react-dom/client';
20
- import App from './App';
21
-
22
- import { PostHogProvider} from 'posthog-js/react'
23
-
24
- const root = ReactDOM.createRoot(document.getElementById('root'));
25
-
26
- root.render(
27
- <React.StrictMode>
28
- <PostHogProvider
29
- apiKey={${apiKeyText}}
30
- options={{
31
- api_host: ${host},
32
- debug: ${envVarPrefix === 'VITE_PUBLIC_'
33
- ? 'import.meta.env.MODE === "development"'
34
- : 'process.env.NODE_ENV === "development"'},
35
- }}
36
- >
37
- <App />
38
- </PostHogProvider>
39
- </React.StrictMode>
40
- --------------------------------------------------`;
41
- };
42
- exports.getReactDocumentation = getReactDocumentation;
43
- //# sourceMappingURL=docs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/react/docs.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,YAAY,GAKb,EAAE,EAAE;IACH,MAAM,UAAU,GACd,YAAY,KAAK,cAAc;QAC7B,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,eAAe,YAAY,aAAa,CAAC;IAC/C,OAAO;;sBAGL,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KACtC;;;;;;;;;;;;;;;;;;;gBAmBc,UAAU;;oBAEN,IAAI;iBAEd,YAAY,KAAK,cAAc;QAC7B,CAAC,CAAC,wCAAwC;QAC1C,CAAC,CAAC,wCACN;;;;;;mDAM2C,CAAC;AACpD,CAAC,CAAC;AAlDW,QAAA,qBAAqB,yBAkDhC","sourcesContent":["export const getReactDocumentation = ({\n host,\n language,\n envVarPrefix,\n}: {\n host: string;\n language: 'typescript' | 'javascript';\n envVarPrefix: string;\n}) => {\n const apiKeyText =\n envVarPrefix === 'VITE_PUBLIC_'\n ? 'import.meta.env.VITE_PUBLIC_POSTHOG_KEY'\n : `process.env.${envVarPrefix}POSTHOG_KEY`;\n return `\n==============================\nFILE: {index / App}.${\n language === 'typescript' ? 'tsx' : 'jsx'\n } (wherever the root of the app is)\nLOCATION: Wherever the root of the app is\n==============================\nChanges:\n- Add the PostHogProvider to the root of the app in the provider tree.\n\nExample:\n--------------------------------------------------\nimport React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nimport { PostHogProvider} from 'posthog-js/react'\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\n\nroot.render(\n <React.StrictMode>\n <PostHogProvider\n apiKey={${apiKeyText}}\n options={{\n api_host: ${host},\n debug: ${\n envVarPrefix === 'VITE_PUBLIC_'\n ? 'import.meta.env.MODE === \"development\"'\n : 'process.env.NODE_ENV === \"development\"'\n },\n }}\n >\n <App />\n </PostHogProvider>\n </React.StrictMode>\n--------------------------------------------------`;\n};\n"]}
@@ -1,2 +0,0 @@
1
- import type { WizardOptions } from '../utils/types';
2
- export declare function runReactWizard(options: WizardOptions): Promise<void>;
@@ -1,103 +0,0 @@
1
- "use strict";
2
- /* eslint-disable max-lines */
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.runReactWizard = runReactWizard;
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const clack_utils_1 = require("../utils/clack-utils");
10
- const package_json_1 = require("../utils/package-json");
11
- const clack_1 = __importDefault(require("../utils/clack"));
12
- const constants_1 = require("../lib/constants");
13
- const docs_1 = require("./docs");
14
- const analytics_1 = require("../utils/analytics");
15
- const environment_1 = require("../utils/environment");
16
- const file_utils_1 = require("../utils/file-utils");
17
- const clack_utils_2 = require("../utils/clack-utils");
18
- const add_editor_rules_1 = require("../utils/rules/add-editor-rules");
19
- async function runReactWizard(options) {
20
- (0, clack_utils_1.printWelcome)({
21
- wizardName: 'PostHog React Wizard',
22
- });
23
- const aiConsent = await (0, clack_utils_1.askForAIConsent)(options);
24
- if (!aiConsent) {
25
- 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);
26
- }
27
- const cloudRegion = options.cloudRegion ?? (await (0, clack_utils_2.askForCloudRegion)());
28
- const typeScriptDetected = (0, clack_utils_1.isUsingTypeScript)(options);
29
- await (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)(options);
30
- const packageJson = await (0, clack_utils_1.getPackageDotJson)(options);
31
- await (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, 'react', 'React');
32
- const reactVersion = (0, package_json_1.getPackageVersion)('react', packageJson);
33
- if (reactVersion) {
34
- analytics_1.analytics.setTag('react-version', reactVersion);
35
- }
36
- const { projectApiKey, wizardHash, host } = await (0, clack_utils_1.getOrAskForProjectData)({
37
- ...options,
38
- cloudRegion,
39
- });
40
- const sdkAlreadyInstalled = (0, package_json_1.hasPackageInstalled)('posthog-js', packageJson);
41
- analytics_1.analytics.setTag('sdk-already-installed', sdkAlreadyInstalled);
42
- const { packageManager: packageManagerFromInstallStep } = await (0, clack_utils_1.installPackage)({
43
- packageName: 'posthog-js',
44
- packageNameDisplayLabel: 'posthog-js',
45
- alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'],
46
- forceInstall: options.forceInstall,
47
- askBeforeUpdating: false,
48
- installDir: options.installDir,
49
- integration: constants_1.Integration.react,
50
- });
51
- const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({
52
- installDir: options.installDir,
53
- integration: constants_1.Integration.react,
54
- });
55
- const envVarPrefix = await (0, environment_1.detectEnvVarPrefix)(options);
56
- const installationDocumentation = (0, docs_1.getReactDocumentation)({
57
- host,
58
- language: typeScriptDetected ? 'typescript' : 'javascript',
59
- envVarPrefix,
60
- });
61
- clack_1.default.log.info(`Reviewing PostHog documentation for React`);
62
- const filesToChange = await (0, file_utils_1.getFilesToChange)({
63
- integration: constants_1.Integration.react,
64
- relevantFiles,
65
- documentation: installationDocumentation,
66
- wizardHash,
67
- cloudRegion,
68
- });
69
- await (0, file_utils_1.generateFileChangesForIntegration)({
70
- integration: constants_1.Integration.react,
71
- filesToChange,
72
- wizardHash,
73
- installDir: options.installDir,
74
- documentation: installationDocumentation,
75
- cloudRegion,
76
- });
77
- await (0, environment_1.addOrUpdateEnvironmentVariables)({
78
- variables: {
79
- [envVarPrefix + 'POSTHOG_KEY']: projectApiKey,
80
- },
81
- installDir: options.installDir,
82
- integration: constants_1.Integration.react,
83
- });
84
- const packageManagerForOutro = packageManagerFromInstallStep ?? (await (0, clack_utils_1.getPackageManager)(options));
85
- await (0, clack_utils_1.runPrettierIfInstalled)({
86
- installDir: options.installDir,
87
- integration: constants_1.Integration.react,
88
- });
89
- await (0, add_editor_rules_1.addEditorRules)({
90
- installDir: options.installDir,
91
- rulesName: 'react-rules.md',
92
- integration: constants_1.Integration.react,
93
- default: options.default,
94
- });
95
- clack_1.default.outro(`
96
- ${chalk_1.default.green('Successfully installed PostHog!')} ${`\n\n${aiConsent
97
- ? `Note: This uses experimental AI to setup your project. It might have got it wrong, pleaes check!\n`
98
- : ``}You should validate your setup by (re)starting your dev environment (e.g. ${chalk_1.default.cyan(`${packageManagerForOutro.runScriptCommand} dev`)})`}
99
-
100
- ${chalk_1.default.dim(`If you encounter any issues, let us know here: ${constants_1.ISSUES_URL}`)}`);
101
- await analytics_1.analytics.shutdown('success');
102
- }
103
- //# sourceMappingURL=react-wizard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react-wizard.js","sourceRoot":"","sources":["../../../src/react/react-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\n\nimport chalk from 'chalk';\nimport {\n abort,\n askForAIConsent,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n getPackageManager,\n installPackage,\n isUsingTypeScript,\n printWelcome,\n runPrettierIfInstalled,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport clack from '../utils/clack';\nimport { Integration, ISSUES_URL } from '../lib/constants';\nimport { getReactDocumentation } from './docs';\nimport { analytics } from '../utils/analytics';\nimport {\n addOrUpdateEnvironmentVariables,\n detectEnvVarPrefix,\n} from '../utils/environment';\nimport {\n generateFileChangesForIntegration,\n getFilesToChange,\n getRelevantFilesForIntegration,\n} from '../utils/file-utils';\nimport type { WizardOptions } from '../utils/types';\nimport { askForCloudRegion } from '../utils/clack-utils';\nimport { addEditorRules } from '../utils/rules/add-editor-rules';\n\nexport async function runReactWizard(options: WizardOptions): Promise<void> {\n printWelcome({\n wizardName: 'PostHog React Wizard',\n });\n\n const aiConsent = await askForAIConsent(options);\n\n if (!aiConsent) {\n await abort(\n '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',\n 0,\n );\n }\n\n const cloudRegion = options.cloudRegion ?? (await askForCloudRegion());\n\n const typeScriptDetected = isUsingTypeScript(options);\n\n await confirmContinueIfNoOrDirtyGitRepo(options);\n\n const packageJson = await getPackageDotJson(options);\n\n await ensurePackageIsInstalled(packageJson, 'react', 'React');\n\n const reactVersion = getPackageVersion('react', packageJson);\n\n if (reactVersion) {\n analytics.setTag('react-version', reactVersion);\n }\n\n const { projectApiKey, wizardHash, host } = await getOrAskForProjectData({\n ...options,\n cloudRegion,\n });\n\n const sdkAlreadyInstalled = hasPackageInstalled('posthog-js', packageJson);\n\n analytics.setTag('sdk-already-installed', sdkAlreadyInstalled);\n\n const { packageManager: packageManagerFromInstallStep } =\n await installPackage({\n packageName: 'posthog-js',\n packageNameDisplayLabel: 'posthog-js',\n alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'],\n forceInstall: options.forceInstall,\n askBeforeUpdating: false,\n installDir: options.installDir,\n integration: Integration.react,\n });\n\n const relevantFiles = await getRelevantFilesForIntegration({\n installDir: options.installDir,\n integration: Integration.react,\n });\n\n const envVarPrefix = await detectEnvVarPrefix(options);\n\n const installationDocumentation = getReactDocumentation({\n host,\n language: typeScriptDetected ? 'typescript' : 'javascript',\n envVarPrefix,\n });\n\n clack.log.info(`Reviewing PostHog documentation for React`);\n\n const filesToChange = await getFilesToChange({\n integration: Integration.react,\n relevantFiles,\n documentation: installationDocumentation,\n wizardHash,\n cloudRegion,\n });\n\n await generateFileChangesForIntegration({\n integration: Integration.react,\n filesToChange,\n wizardHash,\n installDir: options.installDir,\n documentation: installationDocumentation,\n cloudRegion,\n });\n\n await addOrUpdateEnvironmentVariables({\n variables: {\n [envVarPrefix + 'POSTHOG_KEY']: projectApiKey,\n },\n installDir: options.installDir,\n integration: Integration.react,\n });\n\n const packageManagerForOutro =\n packageManagerFromInstallStep ?? (await getPackageManager(options));\n\n await runPrettierIfInstalled({\n installDir: options.installDir,\n integration: Integration.react,\n });\n\n await addEditorRules({\n installDir: options.installDir,\n rulesName: 'react-rules.md',\n integration: Integration.react,\n default: options.default,\n });\n\n clack.outro(`\n${chalk.green('Successfully installed PostHog!')} ${`\\n\\n${\n aiConsent\n ? `Note: This uses experimental AI to setup your project. It might have got it wrong, pleaes check!\\n`\n : ``\n }You should validate your setup by (re)starting your dev environment (e.g. ${chalk.cyan(\n `${packageManagerForOutro.runScriptCommand} dev`,\n )})`}\n\n${chalk.dim(`If you encounter any issues, let us know here: ${ISSUES_URL}`)}`);\n\n await analytics.shutdown('success');\n}\n"]}
package/dist/src/run.d.ts DELETED
@@ -1,12 +0,0 @@
1
- import type { CloudRegion } from './utils/types';
2
- import { Integration } from './lib/constants';
3
- type Args = {
4
- integration?: Integration;
5
- debug?: boolean;
6
- forceInstall?: boolean;
7
- installDir?: string;
8
- region?: CloudRegion;
9
- default?: boolean;
10
- };
11
- export declare function run(argv: Args): Promise<void>;
12
- export {};
package/dist/src/run.js DELETED
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.run = run;
7
- const clack_utils_1 = require("./utils/clack-utils");
8
- const nextjs_wizard_1 = require("./nextjs/nextjs-wizard");
9
- const constants_1 = require("./lib/constants");
10
- const environment_1 = require("./utils/environment");
11
- const clack_1 = __importDefault(require("./utils/clack"));
12
- const path_1 = __importDefault(require("path"));
13
- const config_1 = require("./lib/config");
14
- const react_wizard_1 = require("./react/react-wizard");
15
- const analytics_1 = require("./utils/analytics");
16
- async function run(argv) {
17
- await runWizard(argv);
18
- }
19
- async function runWizard(argv) {
20
- const finalArgs = {
21
- ...argv,
22
- ...(0, environment_1.readEnvironment)(),
23
- };
24
- const wizardOptions = {
25
- debug: finalArgs.debug ?? false,
26
- forceInstall: finalArgs.forceInstall ?? false,
27
- installDir: finalArgs.installDir
28
- ? path_1.default.join(process.cwd(), finalArgs.installDir)
29
- : process.cwd(),
30
- cloudRegion: finalArgs.region ?? undefined,
31
- default: finalArgs.default ?? false,
32
- };
33
- clack_1.default.intro(`Welcome to the PostHog setup wizard ✨`);
34
- const integration = finalArgs.integration ?? (await getIntegrationForSetup(wizardOptions));
35
- analytics_1.analytics.setTag('integration', integration);
36
- switch (integration) {
37
- case constants_1.Integration.nextjs:
38
- await (0, nextjs_wizard_1.runNextjsWizard)(wizardOptions);
39
- break;
40
- case constants_1.Integration.react:
41
- await (0, react_wizard_1.runReactWizard)(wizardOptions);
42
- break;
43
- default:
44
- clack_1.default.log.error('No setup wizard selected!');
45
- }
46
- }
47
- async function detectIntegration(options) {
48
- const integrationConfigs = Object.entries(config_1.INTEGRATION_CONFIG).sort(([a], [b]) => config_1.INTEGRATION_ORDER.indexOf(a) -
49
- config_1.INTEGRATION_ORDER.indexOf(b));
50
- for (const [integration, config] of integrationConfigs) {
51
- const detected = await config.detect(options);
52
- if (detected) {
53
- return integration;
54
- }
55
- }
56
- }
57
- async function getIntegrationForSetup(options) {
58
- const detectedIntegration = await detectIntegration(options);
59
- if (detectedIntegration) {
60
- clack_1.default.log.success(`Detected integration: ${(0, constants_1.getIntegrationDescription)(detectedIntegration)}`);
61
- return detectedIntegration;
62
- }
63
- const integration = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
64
- message: 'What do you want to set up?',
65
- options: [
66
- { value: constants_1.Integration.nextjs, label: 'Next.js' },
67
- { value: constants_1.Integration.react, label: 'React' },
68
- ],
69
- }));
70
- return integration;
71
- }
72
- //# sourceMappingURL=run.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"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","sourcesContent":["import { abortIfCancelled } from './utils/clack-utils';\n\nimport { runNextjsWizard } from './nextjs/nextjs-wizard';\nimport type { CloudRegion, WizardOptions } from './utils/types';\n\nimport { getIntegrationDescription, Integration } from './lib/constants';\nimport { readEnvironment } from './utils/environment';\nimport clack from './utils/clack';\nimport path from 'path';\nimport { INTEGRATION_CONFIG, INTEGRATION_ORDER } from './lib/config';\nimport { runReactWizard } from './react/react-wizard';\nimport { analytics } from './utils/analytics';\n\ntype Args = {\n integration?: Integration;\n debug?: boolean;\n forceInstall?: boolean;\n installDir?: string;\n region?: CloudRegion;\n default?: boolean;\n};\n\nexport async function run(argv: Args) {\n await runWizard(argv);\n}\n\nasync function runWizard(argv: Args) {\n const finalArgs = {\n ...argv,\n ...readEnvironment(),\n };\n\n const wizardOptions: WizardOptions = {\n debug: finalArgs.debug ?? false,\n forceInstall: finalArgs.forceInstall ?? false,\n installDir: finalArgs.installDir\n ? path.join(process.cwd(), finalArgs.installDir)\n : process.cwd(),\n cloudRegion: finalArgs.region ?? undefined,\n default: finalArgs.default ?? false,\n };\n\n clack.intro(`Welcome to the PostHog setup wizard ✨`);\n\n const integration =\n finalArgs.integration ?? (await getIntegrationForSetup(wizardOptions));\n\n analytics.setTag('integration', integration);\n\n switch (integration) {\n case Integration.nextjs:\n await runNextjsWizard(wizardOptions);\n break;\n case Integration.react:\n await runReactWizard(wizardOptions);\n break;\n\n default:\n clack.log.error('No setup wizard selected!');\n }\n}\n\nasync function detectIntegration(\n options: Pick<WizardOptions, 'installDir'>,\n): Promise<Integration | undefined> {\n const integrationConfigs = Object.entries(INTEGRATION_CONFIG).sort(\n ([a], [b]) =>\n INTEGRATION_ORDER.indexOf(a as Integration) -\n INTEGRATION_ORDER.indexOf(b as Integration),\n );\n\n for (const [integration, config] of integrationConfigs) {\n const detected = await config.detect(options);\n if (detected) {\n return integration as Integration;\n }\n }\n}\n\nasync function getIntegrationForSetup(\n options: Pick<WizardOptions, 'installDir'>,\n) {\n const detectedIntegration = await detectIntegration(options);\n\n if (detectedIntegration) {\n clack.log.success(\n `Detected integration: ${getIntegrationDescription(detectedIntegration)}`,\n );\n return detectedIntegration;\n }\n\n const integration: Integration = await abortIfCancelled(\n clack.select({\n message: 'What do you want to set up?',\n options: [\n { value: Integration.nextjs, label: 'Next.js' },\n { value: Integration.react, label: 'React' },\n ],\n }),\n );\n\n return integration;\n}\n"]}
@@ -1,2 +0,0 @@
1
- export declare function traceStep<T>(step: string, callback: () => T): T;
2
- export declare function updateProgress(step: string): void;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.traceStep = traceStep;
4
- exports.updateProgress = updateProgress;
5
- const analytics_1 = require("./utils/analytics");
6
- function traceStep(step, callback) {
7
- updateProgress(step);
8
- return callback();
9
- }
10
- function updateProgress(step) {
11
- analytics_1.analytics.setTag('progress', step);
12
- }
13
- //# sourceMappingURL=telemetry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":";;AAEA,8BAGC;AAED,wCAEC;AATD,iDAA8C;AAE9C,SAAgB,SAAS,CAAI,IAAY,EAAE,QAAiB;IAC1D,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC;AAED,SAAgB,cAAc,CAAC,IAAY;IACzC,qBAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC","sourcesContent":["import { analytics } from './utils/analytics';\n\nexport function traceStep<T>(step: string, callback: () => T): T {\n updateProgress(step);\n return callback();\n}\n\nexport function updateProgress(step: string) {\n analytics.setTag('progress', step);\n}\n"]}
@@ -1,12 +0,0 @@
1
- export declare class Analytics {
2
- private client;
3
- private tags;
4
- private distinctId?;
5
- private anonymousId;
6
- constructor();
7
- setDistinctId(distinctId: string): void;
8
- setTag(key: string, value: string | boolean | number | null | undefined): void;
9
- capture(eventName: string, properties?: Record<string, unknown>): void;
10
- shutdown(status: 'success' | 'error' | 'cancelled'): Promise<void>;
11
- }
12
- export declare const analytics: Analytics;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.analytics = exports.Analytics = void 0;
4
- const posthog_node_1 = require("posthog-node");
5
- const constants_1 = require("../lib/constants");
6
- const uuid_1 = require("uuid");
7
- class Analytics {
8
- client;
9
- tags = {};
10
- distinctId;
11
- anonymousId;
12
- constructor() {
13
- this.client = new posthog_node_1.PostHog(constants_1.ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY, {
14
- host: constants_1.ANALYTICS_HOST_URL,
15
- flushAt: 1,
16
- flushInterval: 0,
17
- });
18
- this.tags = {};
19
- this.anonymousId = (0, uuid_1.v4)();
20
- this.distinctId = undefined;
21
- }
22
- setDistinctId(distinctId) {
23
- this.distinctId = distinctId;
24
- this.client.alias({
25
- distinctId,
26
- alias: this.anonymousId,
27
- });
28
- }
29
- setTag(key, value) {
30
- this.tags[key] = value;
31
- }
32
- capture(eventName, properties) {
33
- this.client.capture({
34
- distinctId: this.distinctId ?? this.anonymousId,
35
- event: eventName,
36
- properties: {
37
- ...this.tags,
38
- ...properties,
39
- },
40
- });
41
- }
42
- async shutdown(status) {
43
- if (Object.keys(this.tags).length === 0) {
44
- return;
45
- }
46
- this.client.capture({
47
- distinctId: this.distinctId ?? this.anonymousId,
48
- event: 'setup wizard finished',
49
- properties: {
50
- status,
51
- tags: this.tags,
52
- },
53
- });
54
- await this.client.shutdown();
55
- }
56
- }
57
- exports.Analytics = Analytics;
58
- exports.analytics = new Analytics();
59
- //# sourceMappingURL=analytics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../../src/utils/analytics.ts"],"names":[],"mappings":";;;AAAA,+CAAuC;AACvC,gDAG0B;AAC1B,+BAAoC;AACpC,MAAa,SAAS;IACZ,MAAM,CAAU;IAChB,IAAI,GACV,EAAE,CAAC;IACG,UAAU,CAAU;IACpB,WAAW,CAAS;IAE5B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,sBAAO,CAAC,sDAA0C,EAAE;YACpE,IAAI,EAAE,8BAAkB;YACxB,OAAO,EAAE,CAAC;YACV,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAEf,IAAI,CAAC,WAAW,GAAG,IAAA,SAAM,GAAE,CAAC;QAE5B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAED,aAAa,CAAC,UAAkB;QAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAChB,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,WAAW;SACxB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,KAAmD;QACrE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,OAAO,CAAC,SAAiB,EAAE,UAAoC;QAC7D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAClB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;YAC/C,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE;gBACV,GAAG,IAAI,CAAC,IAAI;gBACZ,GAAG,UAAU;aACd;SACF,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAyC;QACtD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAClB,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW;YAC/C,KAAK,EAAE,uBAAuB;YAC9B,UAAU,EAAE;gBACV,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC/B,CAAC;CACF;AA5DD,8BA4DC;AAEY,QAAA,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC","sourcesContent":["import { PostHog } from 'posthog-node';\nimport {\n ANALYTICS_HOST_URL,\n ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY,\n} from '../lib/constants';\nimport { v4 as uuidv4 } from 'uuid';\nexport class Analytics {\n private client: PostHog;\n private tags: Record<string, string | boolean | number | null | undefined> =\n {};\n private distinctId?: string;\n private anonymousId: string;\n\n constructor() {\n this.client = new PostHog(ANALYTICS_POSTHOG_PUBLIC_PROJECT_WRITE_KEY, {\n host: ANALYTICS_HOST_URL,\n flushAt: 1,\n flushInterval: 0,\n });\n\n this.tags = {};\n\n this.anonymousId = uuidv4();\n\n this.distinctId = undefined;\n }\n\n setDistinctId(distinctId: string) {\n this.distinctId = distinctId;\n this.client.alias({\n distinctId,\n alias: this.anonymousId,\n });\n }\n\n setTag(key: string, value: string | boolean | number | null | undefined) {\n this.tags[key] = value;\n }\n\n capture(eventName: string, properties?: Record<string, unknown>) {\n this.client.capture({\n distinctId: this.distinctId ?? this.anonymousId,\n event: eventName,\n properties: {\n ...this.tags,\n ...properties,\n },\n });\n }\n\n async shutdown(status: 'success' | 'error' | 'cancelled') {\n if (Object.keys(this.tags).length === 0) {\n return;\n }\n\n this.client.capture({\n distinctId: this.distinctId ?? this.anonymousId,\n event: 'setup wizard finished',\n properties: {\n status,\n tags: this.tags,\n },\n });\n\n await this.client.shutdown();\n }\n}\n\nexport const analytics = new Analytics();\n"]}
@@ -1,2 +0,0 @@
1
- export declare function executeSync(command: string): string;
2
- export declare function execute(command: string): Promise<string>;