@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.
- package/README.md +21 -15
- package/package.json +1 -1
- package/dist/bin.d.ts +0 -2
- package/dist/bin.js +0 -28
- package/dist/bin.js.map +0 -1
- package/dist/src/lib/config.d.ts +0 -21
- package/dist/src/lib/config.js +0 -49
- package/dist/src/lib/config.js.map +0 -1
- package/dist/src/lib/constants.d.ts +0 -22
- package/dist/src/lib/constants.js +0 -40
- package/dist/src/lib/constants.js.map +0 -1
- package/dist/src/lib/prompts.d.ts +0 -16
- package/dist/src/lib/prompts.js +0 -80
- package/dist/src/lib/prompts.js.map +0 -1
- package/dist/src/nextjs/docs.d.ts +0 -8
- package/dist/src/nextjs/docs.js +0 -257
- package/dist/src/nextjs/docs.js.map +0 -1
- package/dist/src/nextjs/nextjs-wizard.d.ts +0 -2
- package/dist/src/nextjs/nextjs-wizard.js +0 -117
- package/dist/src/nextjs/nextjs-wizard.js.map +0 -1
- package/dist/src/nextjs/utils.d.ts +0 -9
- package/dist/src/nextjs/utils.js +0 -83
- package/dist/src/nextjs/utils.js.map +0 -1
- package/dist/src/react/docs.d.ts +0 -5
- package/dist/src/react/docs.js +0 -43
- package/dist/src/react/docs.js.map +0 -1
- package/dist/src/react/react-wizard.d.ts +0 -2
- package/dist/src/react/react-wizard.js +0 -103
- package/dist/src/react/react-wizard.js.map +0 -1
- package/dist/src/run.d.ts +0 -12
- package/dist/src/run.js +0 -72
- package/dist/src/run.js.map +0 -1
- package/dist/src/telemetry.d.ts +0 -2
- package/dist/src/telemetry.js +0 -13
- package/dist/src/telemetry.js.map +0 -1
- package/dist/src/utils/analytics.d.ts +0 -12
- package/dist/src/utils/analytics.js +0 -59
- package/dist/src/utils/analytics.js.map +0 -1
- package/dist/src/utils/bash.d.ts +0 -2
- package/dist/src/utils/bash.js +0 -54
- package/dist/src/utils/bash.js.map +0 -1
- package/dist/src/utils/clack-utils.d.ts +0 -184
- package/dist/src/utils/clack-utils.js +0 -678
- package/dist/src/utils/clack-utils.js.map +0 -1
- package/dist/src/utils/clack.d.ts +0 -2
- package/dist/src/utils/clack.js +0 -9
- package/dist/src/utils/clack.js.map +0 -1
- package/dist/src/utils/debug.d.ts +0 -2
- package/dist/src/utils/debug.js +0 -22
- package/dist/src/utils/debug.js.map +0 -1
- package/dist/src/utils/environment.d.ts +0 -9
- package/dist/src/utils/environment.js +0 -164
- package/dist/src/utils/environment.js.map +0 -1
- package/dist/src/utils/file-utils.d.ts +0 -29
- package/dist/src/utils/file-utils.js +0 -177
- package/dist/src/utils/file-utils.js.map +0 -1
- package/dist/src/utils/logging.d.ts +0 -9
- package/dist/src/utils/logging.js +0 -50
- package/dist/src/utils/logging.js.map +0 -1
- package/dist/src/utils/package-json.d.ts +0 -25
- package/dist/src/utils/package-json.js +0 -27
- package/dist/src/utils/package-json.js.map +0 -1
- package/dist/src/utils/package-manager.d.ts +0 -20
- package/dist/src/utils/package-manager.js +0 -187
- package/dist/src/utils/package-manager.js.map +0 -1
- package/dist/src/utils/query.d.ts +0 -8
- package/dist/src/utils/query.js +0 -27
- package/dist/src/utils/query.js.map +0 -1
- package/dist/src/utils/rules/add-editor-rules.d.ts +0 -9
- package/dist/src/utils/rules/add-editor-rules.js +0 -88
- package/dist/src/utils/rules/add-editor-rules.js.map +0 -1
- package/dist/src/utils/rules/add-editor-rules.ts +0 -82
- package/dist/src/utils/rules/next-rules.md +0 -9
- package/dist/src/utils/rules/react-rules.md +0 -7
- package/dist/src/utils/rules/universal.md +0 -20
- package/dist/src/utils/semver.d.ts +0 -5
- package/dist/src/utils/semver.js +0 -25
- package/dist/src/utils/semver.js.map +0 -1
- package/dist/src/utils/string.d.ts +0 -1
- package/dist/src/utils/string.js +0 -9
- package/dist/src/utils/string.js.map +0 -1
- package/dist/src/utils/types.d.ts +0 -44
- package/dist/src/utils/types.js +0 -3
- package/dist/src/utils/types.js.map +0 -1
- package/dist/src/utils/urls.d.ts +0 -4
- package/dist/src/utils/urls.js +0 -35
- package/dist/src/utils/urls.js.map +0 -1
- package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
- package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
- package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
|
@@ -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";
|
package/dist/src/nextjs/utils.js
DELETED
|
@@ -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"]}
|
package/dist/src/react/docs.d.ts
DELETED
package/dist/src/react/docs.js
DELETED
|
@@ -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,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
|
package/dist/src/run.js.map
DELETED
|
@@ -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"]}
|
package/dist/src/telemetry.d.ts
DELETED
package/dist/src/telemetry.js
DELETED
|
@@ -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"]}
|
package/dist/src/utils/bash.d.ts
DELETED