@posthog/wizard 0.6.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/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 -49
- package/dist/src/lib/config.js +0 -85
- package/dist/src/lib/config.js.map +0 -1
- package/dist/src/lib/constants.d.ts +0 -24
- package/dist/src/lib/constants.js +0 -46
- package/dist/src/lib/constants.js.map +0 -1
- package/dist/src/lib/messages.d.ts +0 -10
- package/dist/src/lib/messages.js +0 -37
- package/dist/src/lib/messages.js.map +0 -1
- package/dist/src/lib/prompts.d.ts +0 -16
- package/dist/src/lib/prompts.js +0 -83
- 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 -121
- 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 -4
- package/dist/src/react/docs.js +0 -46
- 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 -105
- package/dist/src/react/react-wizard.js.map +0 -1
- package/dist/src/react-native/docs.d.ts +0 -5
- package/dist/src/react-native/docs.js +0 -31
- package/dist/src/react-native/docs.js.map +0 -1
- package/dist/src/react-native/react-native-wizard.d.ts +0 -2
- package/dist/src/react-native/react-native-wizard.js +0 -123
- package/dist/src/react-native/react-native-wizard.js.map +0 -1
- package/dist/src/run.d.ts +0 -13
- package/dist/src/run.js +0 -83
- package/dist/src/run.js.map +0 -1
- package/dist/src/svelte/docs.d.ts +0 -3
- package/dist/src/svelte/docs.js +0 -110
- package/dist/src/svelte/docs.js.map +0 -1
- package/dist/src/svelte/svelte-wizard.d.ts +0 -2
- package/dist/src/svelte/svelte-wizard.js +0 -113
- package/dist/src/svelte/svelte-wizard.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 -683
- 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 -21
- package/dist/src/utils/package-manager.js +0 -208
- 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 -90
- package/dist/src/utils/rules/add-editor-rules.js.map +0 -1
- package/dist/src/utils/rules/add-editor-rules.ts +0 -86
- package/dist/src/utils/rules/next-rules.md +0 -9
- package/dist/src/utils/rules/react-native-rules.md +0 -7
- package/dist/src/utils/rules/react-rules.md +0 -7
- package/dist/src/utils/rules/svelte-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 -48
- 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,105 +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 clack_utils_1 = require("../utils/clack-utils");
|
|
9
|
-
const package_json_1 = require("../utils/package-json");
|
|
10
|
-
const clack_1 = __importDefault(require("../utils/clack"));
|
|
11
|
-
const constants_1 = require("../lib/constants");
|
|
12
|
-
const docs_1 = require("./docs");
|
|
13
|
-
const analytics_1 = require("../utils/analytics");
|
|
14
|
-
const environment_1 = require("../utils/environment");
|
|
15
|
-
const file_utils_1 = require("../utils/file-utils");
|
|
16
|
-
const clack_utils_2 = require("../utils/clack-utils");
|
|
17
|
-
const add_editor_rules_1 = require("../utils/rules/add-editor-rules");
|
|
18
|
-
const messages_1 = require("../lib/messages");
|
|
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
|
-
language: typeScriptDetected ? 'typescript' : 'javascript',
|
|
58
|
-
envVarPrefix,
|
|
59
|
-
});
|
|
60
|
-
clack_1.default.log.info(`Reviewing PostHog documentation for React`);
|
|
61
|
-
const filesToChange = await (0, file_utils_1.getFilesToChange)({
|
|
62
|
-
integration: constants_1.Integration.react,
|
|
63
|
-
relevantFiles,
|
|
64
|
-
documentation: installationDocumentation,
|
|
65
|
-
wizardHash,
|
|
66
|
-
cloudRegion,
|
|
67
|
-
});
|
|
68
|
-
await (0, file_utils_1.generateFileChangesForIntegration)({
|
|
69
|
-
integration: constants_1.Integration.react,
|
|
70
|
-
filesToChange,
|
|
71
|
-
wizardHash,
|
|
72
|
-
installDir: options.installDir,
|
|
73
|
-
documentation: installationDocumentation,
|
|
74
|
-
cloudRegion,
|
|
75
|
-
});
|
|
76
|
-
await (0, environment_1.addOrUpdateEnvironmentVariables)({
|
|
77
|
-
variables: {
|
|
78
|
-
[envVarPrefix + 'POSTHOG_KEY']: projectApiKey,
|
|
79
|
-
[envVarPrefix + 'POSTHOG_HOST']: host,
|
|
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
|
-
const addedEditorRules = 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
|
-
const outroMessage = (0, messages_1.getOutroMessage)({
|
|
96
|
-
options,
|
|
97
|
-
integration: constants_1.Integration.react,
|
|
98
|
-
cloudRegion,
|
|
99
|
-
addedEditorRules,
|
|
100
|
-
packageManager: packageManagerForOutro,
|
|
101
|
-
});
|
|
102
|
-
clack_1.default.outro(outroMessage);
|
|
103
|
-
await analytics_1.analytics.shutdown('success');
|
|
104
|
-
}
|
|
105
|
-
//# sourceMappingURL=react-wizard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-wizard.js","sourceRoot":"","sources":["../../../src/react/react-wizard.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;AAkC9B,wCAoHC;AApJD,sDAY8B;AAC9B,wDAA+E;AAC/E,2DAAmC;AACnC,gDAA+C;AAC/C,iCAA+C;AAC/C,kDAA+C;AAC/C,sDAG8B;AAC9B,oDAI6B;AAE7B,sDAAyD;AACzD,sEAAiE;AACjE,8CAAkD;AAE3C,KAAK,UAAU,cAAc,CAAC,OAAsB;IACzD,IAAA,0BAAY,EAAC;QACX,UAAU,EAAE,sBAAsB;KACnC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAA,mBAAK,EACT,qJAAqJ,EACrJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,IAAA,+BAAiB,GAAE,CAAC,CAAC;IAEvE,MAAM,kBAAkB,GAAG,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,IAAA,+CAAiC,EAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;IAErD,MAAM,IAAA,sCAAwB,EAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,IAAA,gCAAiB,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAE7D,IAAI,YAAY,EAAE,CAAC;QACjB,qBAAS,CAAC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,oCAAsB,EAAC;QACvE,GAAG,OAAO;QACV,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAA,kCAAmB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE3E,qBAAS,CAAC,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;IAE/D,MAAM,EAAE,cAAc,EAAE,6BAA6B,EAAE,GACrD,MAAM,IAAA,4BAAc,EAAC;QACnB,WAAW,EAAE,YAAY;QACzB,uBAAuB,EAAE,YAAY;QACrC,gBAAgB,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC;QAC7D,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,KAAK;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,KAAK;KAC/B,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,MAAM,IAAA,2CAA8B,EAAC;QACzD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,KAAK;KAC/B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,IAAA,gCAAkB,EAAC,OAAO,CAAC,CAAC;IAEvD,MAAM,yBAAyB,GAAG,IAAA,4BAAqB,EAAC;QACtD,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;QAC1D,YAAY;KACb,CAAC,CAAC;IAEH,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAE5D,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAgB,EAAC;QAC3C,WAAW,EAAE,uBAAW,CAAC,KAAK;QAC9B,aAAa;QACb,aAAa,EAAE,yBAAyB;QACxC,UAAU;QACV,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,IAAA,8CAAiC,EAAC;QACtC,WAAW,EAAE,uBAAW,CAAC,KAAK;QAC9B,aAAa;QACb,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,yBAAyB;QACxC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,IAAA,6CAA+B,EAAC;QACpC,SAAS,EAAE;YACT,CAAC,YAAY,GAAG,aAAa,CAAC,EAAE,aAAa;YAC7C,CAAC,YAAY,GAAG,cAAc,CAAC,EAAE,IAAI;SACtC;QACD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,KAAK;KAC/B,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAC1B,6BAA6B,IAAI,CAAC,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;IAEtE,MAAM,IAAA,oCAAsB,EAAC;QAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,KAAK;KAC/B,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,IAAA,iCAAc,EAAC;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,uBAAW,CAAC,KAAK;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC;QACnC,OAAO;QACP,WAAW,EAAE,uBAAW,CAAC,KAAK;QAC9B,WAAW;QACX,gBAAgB;QAChB,cAAc,EAAE,sBAAsB;KACvC,CAAC,CAAC;IAEH,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE1B,MAAM,qBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC","sourcesContent":["/* eslint-disable max-lines */\n\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 } 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';\nimport { getOutroMessage } from '../lib/messages';\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 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 [envVarPrefix + 'POSTHOG_HOST']: host,\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 const addedEditorRules = await addEditorRules({\n installDir: options.installDir,\n rulesName: 'react-rules.md',\n integration: Integration.react,\n default: options.default,\n });\n\n const outroMessage = getOutroMessage({\n options,\n integration: Integration.react,\n cloudRegion,\n addedEditorRules,\n packageManager: packageManagerForOutro,\n });\n\n clack.outro(outroMessage);\n\n await analytics.shutdown('success');\n}\n"]}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getReactNativeDocumentation = void 0;
|
|
4
|
-
const getReactNativeDocumentation = ({ language, host, projectApiKey, }) => {
|
|
5
|
-
return `
|
|
6
|
-
==============================
|
|
7
|
-
FILE: Modify the entrypoint for the app code
|
|
8
|
-
LOCATION: Usually app/_layout.${language === 'typescript' ? 'tsx' : 'jsx'}, app/index.${language === 'typescript' ? 'ts' : 'js'}, App.${language === 'typescript' ? 'tsx' : 'jsx'} or something similar. There is only one entrypoint file, so you should edit the existing one.
|
|
9
|
-
==============================
|
|
10
|
-
Changes:
|
|
11
|
-
- Add the PostHogProvider to the root of the app in the provider tree. If other providers are already present, add it in a suitable location.
|
|
12
|
-
|
|
13
|
-
Example (with the correct API key and host):
|
|
14
|
-
--------------------------------------------------
|
|
15
|
-
import { PostHogProvider } from 'posthog-react-native'
|
|
16
|
-
...
|
|
17
|
-
|
|
18
|
-
export function MyApp() {
|
|
19
|
-
return (
|
|
20
|
-
<PostHogProvider apiKey="${projectApiKey}" options={{
|
|
21
|
-
host: '${host}',
|
|
22
|
-
enableSessionReplay: true,
|
|
23
|
-
}} autocapture>
|
|
24
|
-
...
|
|
25
|
-
</PostHogProvider>
|
|
26
|
-
)
|
|
27
|
-
}
|
|
28
|
-
--------------------------------------------------`;
|
|
29
|
-
};
|
|
30
|
-
exports.getReactNativeDocumentation = getReactNativeDocumentation;
|
|
31
|
-
//# sourceMappingURL=docs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/react-native/docs.ts"],"names":[],"mappings":";;;AAAO,MAAM,2BAA2B,GAAG,CAAC,EAC1C,QAAQ,EACR,IAAI,EACJ,aAAa,GAKd,EAAE,EAAE;IACH,OAAO;;;gCAIL,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KACtC,eAAe,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SACpD,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KACtC;;;;;;;;;;;;mCAYiC,aAAa;qBAC3B,IAAI;;;;;;;mDAO0B,CAAC;AACpD,CAAC,CAAC;AArCW,QAAA,2BAA2B,+BAqCtC","sourcesContent":["export const getReactNativeDocumentation = ({\n language,\n host,\n projectApiKey,\n}: {\n language: 'typescript' | 'javascript';\n host: string;\n projectApiKey: string;\n}) => {\n return `\n==============================\nFILE: Modify the entrypoint for the app code\nLOCATION: Usually app/_layout.${\n language === 'typescript' ? 'tsx' : 'jsx'\n }, app/index.${language === 'typescript' ? 'ts' : 'js'}, App.${\n language === 'typescript' ? 'tsx' : 'jsx'\n } or something similar. There is only one entrypoint file, so you should edit the existing one.\n==============================\nChanges:\n- Add the PostHogProvider to the root of the app in the provider tree. If other providers are already present, add it in a suitable location.\n\nExample (with the correct API key and host):\n--------------------------------------------------\nimport { PostHogProvider } from 'posthog-react-native'\n...\n\nexport function MyApp() {\n return (\n <PostHogProvider apiKey=\"${projectApiKey}\" options={{\n host: '${host}', \n enableSessionReplay: true,\n }} autocapture>\n ...\n </PostHogProvider>\n )\n}\n--------------------------------------------------`;\n};\n"]}
|
|
@@ -1,123 +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.runReactNativeWizard = runReactNativeWizard;
|
|
8
|
-
const clack_utils_1 = require("../utils/clack-utils");
|
|
9
|
-
const package_json_1 = require("../utils/package-json");
|
|
10
|
-
const clack_1 = __importDefault(require("../utils/clack"));
|
|
11
|
-
const constants_1 = require("../lib/constants");
|
|
12
|
-
const docs_1 = require("./docs");
|
|
13
|
-
const analytics_1 = require("../utils/analytics");
|
|
14
|
-
const file_utils_1 = require("../utils/file-utils");
|
|
15
|
-
const clack_utils_2 = require("../utils/clack-utils");
|
|
16
|
-
const add_editor_rules_1 = require("../utils/rules/add-editor-rules");
|
|
17
|
-
const package_manager_1 = require("../utils/package-manager");
|
|
18
|
-
const messages_1 = require("../lib/messages");
|
|
19
|
-
async function runReactNativeWizard(options) {
|
|
20
|
-
(0, clack_utils_1.printWelcome)({
|
|
21
|
-
wizardName: 'PostHog React Native Wizard',
|
|
22
|
-
});
|
|
23
|
-
const aiConsent = await (0, clack_utils_1.askForAIConsent)(options);
|
|
24
|
-
if (!aiConsent) {
|
|
25
|
-
await (0, clack_utils_1.abort)('The React Native wizard requires AI to get setup right now. Please view the docs to setup React Native manually instead: https://posthog.com/docs/libraries/react-native', 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-native', 'React Native');
|
|
32
|
-
const reactNativeVersion = (0, package_json_1.getPackageVersion)('react-native', packageJson);
|
|
33
|
-
if (reactNativeVersion) {
|
|
34
|
-
analytics_1.analytics.setTag('react-native-version', reactNativeVersion);
|
|
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 isUsingExpo = (0, package_json_1.hasPackageInstalled)('expo', packageJson);
|
|
43
|
-
if (isUsingExpo) {
|
|
44
|
-
analytics_1.analytics.setTag('is-using-expo', true);
|
|
45
|
-
analytics_1.analytics.setTag('expo-version', (0, package_json_1.getPackageVersion)('expo', packageJson));
|
|
46
|
-
}
|
|
47
|
-
clack_1.default.log.info(`Detected ${isUsingExpo ? 'Expo' : 'React Native'}`);
|
|
48
|
-
const packagesToInstall = isUsingExpo
|
|
49
|
-
? [
|
|
50
|
-
'posthog-react-native',
|
|
51
|
-
'posthog-react-native-session-replay',
|
|
52
|
-
'expo-file-system',
|
|
53
|
-
'expo-application',
|
|
54
|
-
'expo-device',
|
|
55
|
-
'expo-localization',
|
|
56
|
-
]
|
|
57
|
-
: [
|
|
58
|
-
'posthog-react-native',
|
|
59
|
-
'@react-native-async-storage/async-storage',
|
|
60
|
-
'react-native-device-info',
|
|
61
|
-
'react-native-localize',
|
|
62
|
-
];
|
|
63
|
-
for (const packageName of packagesToInstall) {
|
|
64
|
-
await (0, clack_utils_1.installPackage)({
|
|
65
|
-
packageName,
|
|
66
|
-
packageNameDisplayLabel: packageName,
|
|
67
|
-
alreadyInstalled: !!packageJson?.dependencies?.[packageName],
|
|
68
|
-
forceInstall: options.forceInstall,
|
|
69
|
-
askBeforeUpdating: false,
|
|
70
|
-
installDir: options.installDir,
|
|
71
|
-
integration: constants_1.Integration.reactNative,
|
|
72
|
-
packageManager: isUsingExpo ? package_manager_1.EXPO : undefined,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({
|
|
76
|
-
installDir: options.installDir,
|
|
77
|
-
integration: constants_1.Integration.reactNative,
|
|
78
|
-
});
|
|
79
|
-
const installationDocumentation = (0, docs_1.getReactNativeDocumentation)({
|
|
80
|
-
language: typeScriptDetected ? 'typescript' : 'javascript',
|
|
81
|
-
host,
|
|
82
|
-
projectApiKey,
|
|
83
|
-
});
|
|
84
|
-
clack_1.default.log.info(`Reviewing PostHog documentation for ${isUsingExpo ? 'Expo' : 'React Native'}`);
|
|
85
|
-
const filesToChange = await (0, file_utils_1.getFilesToChange)({
|
|
86
|
-
integration: constants_1.Integration.reactNative,
|
|
87
|
-
relevantFiles,
|
|
88
|
-
documentation: installationDocumentation,
|
|
89
|
-
wizardHash,
|
|
90
|
-
cloudRegion,
|
|
91
|
-
});
|
|
92
|
-
await (0, file_utils_1.generateFileChangesForIntegration)({
|
|
93
|
-
integration: constants_1.Integration.reactNative,
|
|
94
|
-
filesToChange,
|
|
95
|
-
wizardHash,
|
|
96
|
-
installDir: options.installDir,
|
|
97
|
-
documentation: installationDocumentation,
|
|
98
|
-
cloudRegion,
|
|
99
|
-
});
|
|
100
|
-
await (0, clack_utils_1.runPrettierIfInstalled)({
|
|
101
|
-
installDir: options.installDir,
|
|
102
|
-
integration: constants_1.Integration.reactNative,
|
|
103
|
-
});
|
|
104
|
-
const addedEditorRules = await (0, add_editor_rules_1.addEditorRules)({
|
|
105
|
-
installDir: options.installDir,
|
|
106
|
-
rulesName: 'react-native-rules.md',
|
|
107
|
-
integration: constants_1.Integration.reactNative,
|
|
108
|
-
default: options.default,
|
|
109
|
-
});
|
|
110
|
-
const packageManagerForOutro = await (0, clack_utils_1.getPackageManager)({
|
|
111
|
-
installDir: options.installDir,
|
|
112
|
-
});
|
|
113
|
-
const outroMessage = (0, messages_1.getOutroMessage)({
|
|
114
|
-
options,
|
|
115
|
-
integration: constants_1.Integration.reactNative,
|
|
116
|
-
cloudRegion,
|
|
117
|
-
addedEditorRules,
|
|
118
|
-
packageManager: packageManagerForOutro,
|
|
119
|
-
});
|
|
120
|
-
clack_1.default.outro(outroMessage);
|
|
121
|
-
await analytics_1.analytics.shutdown('success');
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=react-native-wizard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-native-wizard.js","sourceRoot":"","sources":["../../../src/react-native/react-native-wizard.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable max-lines */\n\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 } from '../lib/constants';\nimport { getReactNativeDocumentation } from './docs';\nimport { analytics } from '../utils/analytics';\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';\nimport { EXPO } from '../utils/package-manager';\nimport { getOutroMessage } from '../lib/messages';\n\nexport async function runReactNativeWizard(\n options: WizardOptions,\n): Promise<void> {\n printWelcome({\n wizardName: 'PostHog React Native Wizard',\n });\n\n const aiConsent = await askForAIConsent(options);\n\n if (!aiConsent) {\n await abort(\n 'The React Native wizard requires AI to get setup right now. Please view the docs to setup React Native manually instead: https://posthog.com/docs/libraries/react-native',\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-native', 'React Native');\n\n const reactNativeVersion = getPackageVersion('react-native', packageJson);\n\n if (reactNativeVersion) {\n analytics.setTag('react-native-version', reactNativeVersion);\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 isUsingExpo = hasPackageInstalled('expo', packageJson);\n\n if (isUsingExpo) {\n analytics.setTag('is-using-expo', true);\n analytics.setTag('expo-version', getPackageVersion('expo', packageJson));\n }\n\n clack.log.info(`Detected ${isUsingExpo ? 'Expo' : 'React Native'}`);\n\n const packagesToInstall = isUsingExpo\n ? [\n 'posthog-react-native',\n 'posthog-react-native-session-replay',\n 'expo-file-system',\n 'expo-application',\n 'expo-device',\n 'expo-localization',\n ]\n : [\n 'posthog-react-native',\n '@react-native-async-storage/async-storage',\n 'react-native-device-info',\n 'react-native-localize',\n ];\n\n for (const packageName of packagesToInstall) {\n await installPackage({\n packageName,\n packageNameDisplayLabel: packageName,\n alreadyInstalled: !!packageJson?.dependencies?.[packageName],\n forceInstall: options.forceInstall,\n askBeforeUpdating: false,\n installDir: options.installDir,\n integration: Integration.reactNative,\n packageManager: isUsingExpo ? EXPO : undefined,\n });\n }\n\n const relevantFiles = await getRelevantFilesForIntegration({\n installDir: options.installDir,\n integration: Integration.reactNative,\n });\n\n const installationDocumentation = getReactNativeDocumentation({\n language: typeScriptDetected ? 'typescript' : 'javascript',\n host,\n projectApiKey,\n });\n\n clack.log.info(\n `Reviewing PostHog documentation for ${\n isUsingExpo ? 'Expo' : 'React Native'\n }`,\n );\n\n const filesToChange = await getFilesToChange({\n integration: Integration.reactNative,\n relevantFiles,\n documentation: installationDocumentation,\n wizardHash,\n cloudRegion,\n });\n\n await generateFileChangesForIntegration({\n integration: Integration.reactNative,\n filesToChange,\n wizardHash,\n installDir: options.installDir,\n documentation: installationDocumentation,\n cloudRegion,\n });\n\n await runPrettierIfInstalled({\n installDir: options.installDir,\n integration: Integration.reactNative,\n });\n\n const addedEditorRules = await addEditorRules({\n installDir: options.installDir,\n rulesName: 'react-native-rules.md',\n integration: Integration.reactNative,\n default: options.default,\n });\n\n const packageManagerForOutro = await getPackageManager({\n installDir: options.installDir,\n });\n\n const outroMessage = getOutroMessage({\n options,\n integration: Integration.reactNative,\n cloudRegion,\n addedEditorRules,\n packageManager: packageManagerForOutro,\n });\n\n clack.outro(outroMessage);\n\n await analytics.shutdown('success');\n}\n"]}
|
package/dist/src/run.d.ts
DELETED
|
@@ -1,13 +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
|
-
signup?: boolean;
|
|
11
|
-
};
|
|
12
|
-
export declare function run(argv: Args): Promise<void>;
|
|
13
|
-
export {};
|
package/dist/src/run.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.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
|
-
const svelte_wizard_1 = require("./svelte/svelte-wizard");
|
|
17
|
-
const react_native_wizard_1 = require("./react-native/react-native-wizard");
|
|
18
|
-
async function run(argv) {
|
|
19
|
-
await runWizard(argv);
|
|
20
|
-
}
|
|
21
|
-
async function runWizard(argv) {
|
|
22
|
-
const finalArgs = {
|
|
23
|
-
...argv,
|
|
24
|
-
...(0, environment_1.readEnvironment)(),
|
|
25
|
-
};
|
|
26
|
-
const wizardOptions = {
|
|
27
|
-
debug: finalArgs.debug ?? false,
|
|
28
|
-
forceInstall: finalArgs.forceInstall ?? false,
|
|
29
|
-
installDir: finalArgs.installDir
|
|
30
|
-
? path_1.default.join(process.cwd(), finalArgs.installDir)
|
|
31
|
-
: process.cwd(),
|
|
32
|
-
cloudRegion: finalArgs.region ?? undefined,
|
|
33
|
-
default: finalArgs.default ?? false,
|
|
34
|
-
signup: finalArgs.signup ?? false,
|
|
35
|
-
};
|
|
36
|
-
clack_1.default.intro(`Welcome to the PostHog setup wizard ✨`);
|
|
37
|
-
const integration = finalArgs.integration ?? (await getIntegrationForSetup(wizardOptions));
|
|
38
|
-
analytics_1.analytics.setTag('integration', integration);
|
|
39
|
-
switch (integration) {
|
|
40
|
-
case constants_1.Integration.nextjs:
|
|
41
|
-
await (0, nextjs_wizard_1.runNextjsWizard)(wizardOptions);
|
|
42
|
-
break;
|
|
43
|
-
case constants_1.Integration.react:
|
|
44
|
-
await (0, react_wizard_1.runReactWizard)(wizardOptions);
|
|
45
|
-
break;
|
|
46
|
-
case constants_1.Integration.svelte:
|
|
47
|
-
await (0, svelte_wizard_1.runSvelteWizard)(wizardOptions);
|
|
48
|
-
break;
|
|
49
|
-
case constants_1.Integration.reactNative:
|
|
50
|
-
await (0, react_native_wizard_1.runReactNativeWizard)(wizardOptions);
|
|
51
|
-
break;
|
|
52
|
-
default:
|
|
53
|
-
clack_1.default.log.error('No setup wizard selected!');
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
async function detectIntegration(options) {
|
|
57
|
-
const integrationConfigs = Object.entries(config_1.INTEGRATION_CONFIG).sort(([a], [b]) => config_1.INTEGRATION_ORDER.indexOf(a) -
|
|
58
|
-
config_1.INTEGRATION_ORDER.indexOf(b));
|
|
59
|
-
for (const [integration, config] of integrationConfigs) {
|
|
60
|
-
const detected = await config.detect(options);
|
|
61
|
-
if (detected) {
|
|
62
|
-
return integration;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
async function getIntegrationForSetup(options) {
|
|
67
|
-
const detectedIntegration = await detectIntegration(options);
|
|
68
|
-
if (detectedIntegration) {
|
|
69
|
-
clack_1.default.log.success(`Detected integration: ${(0, constants_1.getIntegrationDescription)(detectedIntegration)}`);
|
|
70
|
-
return detectedIntegration;
|
|
71
|
-
}
|
|
72
|
-
const integration = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
|
|
73
|
-
message: 'What do you want to set up?',
|
|
74
|
-
options: [
|
|
75
|
-
{ value: constants_1.Integration.nextjs, label: 'Next.js' },
|
|
76
|
-
{ value: constants_1.Integration.react, label: 'React' },
|
|
77
|
-
{ value: constants_1.Integration.svelte, label: 'Svelte' },
|
|
78
|
-
{ value: constants_1.Integration.reactNative, label: 'React Native' },
|
|
79
|
-
],
|
|
80
|
-
}));
|
|
81
|
-
return integration;
|
|
82
|
-
}
|
|
83
|
-
//# 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":";;;;;AAyBA,kBAEC;AA3BD,qDAAuD;AAEvD,0DAAyD;AAGzD,+CAAyE;AACzE,qDAAsD;AACtD,0DAAkC;AAClC,gDAAwB;AACxB,yCAAqE;AACrE,uDAAsD;AACtD,iDAA8C;AAC9C,0DAAyD;AACzD,4EAA0E;AAYnE,KAAK,UAAU,GAAG,CAAC,IAAU;IAClC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAU;IACjC,MAAM,SAAS,GAAG;QAChB,GAAG,IAAI;QACP,GAAG,IAAA,6BAAe,GAAE;KACrB,CAAC;IAEF,MAAM,aAAa,GAAkB;QACnC,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,KAAK;QAC/B,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,KAAK;QAC7C,UAAU,EAAE,SAAS,CAAC,UAAU;YAC9B,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC;YAChD,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QACjB,WAAW,EAAE,SAAS,CAAC,MAAM,IAAI,SAAS;QAC1C,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,KAAK;QACnC,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK;KAClC,CAAC;IAEF,eAAK,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAErD,MAAM,WAAW,GACf,SAAS,CAAC,WAAW,IAAI,CAAC,MAAM,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC;IAEzE,qBAAS,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAE7C,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,uBAAW,CAAC,MAAM;YACrB,MAAM,IAAA,+BAAe,EAAC,aAAa,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,uBAAW,CAAC,KAAK;YACpB,MAAM,IAAA,6BAAc,EAAC,aAAa,CAAC,CAAC;YACpC,MAAM;QACR,KAAK,uBAAW,CAAC,MAAM;YACrB,MAAM,IAAA,+BAAe,EAAC,aAAa,CAAC,CAAC;YACrC,MAAM;QACR,KAAK,uBAAW,CAAC,WAAW;YAC1B,MAAM,IAAA,0CAAoB,EAAC,aAAa,CAAC,CAAC;YAC1C,MAAM;QACR;YACE,eAAK,CAAC,GAAG,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAA0C;IAE1C,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,2BAAkB,CAAC,CAAC,IAAI,CAChE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACX,0BAAiB,CAAC,OAAO,CAAC,CAAgB,CAAC;QAC3C,0BAAiB,CAAC,OAAO,CAAC,CAAgB,CAAC,CAC9C,CAAC;IAEF,KAAK,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,WAA0B,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAA0C;IAE1C,MAAM,mBAAmB,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE7D,IAAI,mBAAmB,EAAE,CAAC;QACxB,eAAK,CAAC,GAAG,CAAC,OAAO,CACf,yBAAyB,IAAA,qCAAyB,EAAC,mBAAmB,CAAC,EAAE,CAC1E,CAAC;QACF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,WAAW,GAAgB,MAAM,IAAA,8BAAgB,EACrD,eAAK,CAAC,MAAM,CAAC;QACX,OAAO,EAAE,6BAA6B;QACtC,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,uBAAW,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE;YAC/C,EAAE,KAAK,EAAE,uBAAW,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;YAC5C,EAAE,KAAK,EAAE,uBAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE;YAC9C,EAAE,KAAK,EAAE,uBAAW,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE;SAC1D;KACF,CAAC,CACH,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC","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';\nimport { runSvelteWizard } from './svelte/svelte-wizard';\nimport { runReactNativeWizard } from './react-native/react-native-wizard';\n\ntype Args = {\n integration?: Integration;\n debug?: boolean;\n forceInstall?: boolean;\n installDir?: string;\n region?: CloudRegion;\n default?: boolean;\n signup?: 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 signup: finalArgs.signup ?? 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 case Integration.svelte:\n await runSvelteWizard(wizardOptions);\n break;\n case Integration.reactNative:\n await runReactNativeWizard(wizardOptions);\n break;\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 { value: Integration.svelte, label: 'Svelte' },\n { value: Integration.reactNative, label: 'React Native' },\n ],\n }),\n );\n\n return integration;\n}\n"]}
|
package/dist/src/svelte/docs.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSvelteDocumentation = void 0;
|
|
4
|
-
const getSvelteDocumentation = ({ language, }) => {
|
|
5
|
-
return `
|
|
6
|
-
==============================
|
|
7
|
-
FILE: Root layout.${language === 'typescript' ? 'ts' : 'js'} file (e.g routes/+layout.${language === 'typescript' ? 'ts' : 'js'})
|
|
8
|
-
LOCATION: Usually placed at the root of the app (e.g src/routes/+layout.${language === 'typescript' ? 'ts' : 'js'})
|
|
9
|
-
==============================
|
|
10
|
-
Changes:
|
|
11
|
-
- Add a load function to initialize PostHog, checking if the browser is available to make sure it only initializes on the client
|
|
12
|
-
Example:
|
|
13
|
-
--------------------------------------------------
|
|
14
|
-
import posthog from 'posthog-js'
|
|
15
|
-
import { browser } from '$app/environment';
|
|
16
|
-
import { PUBLIC_POSTHOG_KEY } from '$env/static/public';
|
|
17
|
-
|
|
18
|
-
export const load = async () => {
|
|
19
|
-
|
|
20
|
-
if (browser) {
|
|
21
|
-
posthog.init(
|
|
22
|
-
PUBLIC_POSTHOG_KEY,
|
|
23
|
-
{
|
|
24
|
-
api_host: PUBLIC_POSTHOG_HOST,
|
|
25
|
-
capture_pageview: false,
|
|
26
|
-
capture_pageleave: false
|
|
27
|
-
}
|
|
28
|
-
)
|
|
29
|
-
}
|
|
30
|
-
return
|
|
31
|
-
};
|
|
32
|
-
--------------------------------------------------
|
|
33
|
-
|
|
34
|
-
==============================
|
|
35
|
-
File: Root layout .svelte file (e.g routes/+layout.svelte)
|
|
36
|
-
LOCATION: Usually placed at the root of the app (e.g src/routes/+layout.svelte)
|
|
37
|
-
==============================
|
|
38
|
-
Changes:
|
|
39
|
-
- Add pageview & pageleave tracking to the layout
|
|
40
|
-
|
|
41
|
-
Example:
|
|
42
|
-
--------------------------------------------------
|
|
43
|
-
<script>
|
|
44
|
-
import { browser } from '$app/environment';
|
|
45
|
-
import { beforeNavigate, afterNavigate } from '$app/navigation';
|
|
46
|
-
import posthog from 'posthog-js'
|
|
47
|
-
|
|
48
|
-
if (browser) {
|
|
49
|
-
beforeNavigate(() => posthog.capture('$pageleave'));
|
|
50
|
-
afterNavigate(() => posthog.capture('$pageview'));
|
|
51
|
-
}
|
|
52
|
-
</script>
|
|
53
|
-
--------------------------------------------------
|
|
54
|
-
|
|
55
|
-
==============================
|
|
56
|
-
File: PostHog server initializion
|
|
57
|
-
LOCATION: With other server-side code, e.g. src/lib/server/posthog${language === 'typescript' ? '.ts' : '.js'}
|
|
58
|
-
==============================
|
|
59
|
-
Changes:
|
|
60
|
-
- Initialize a PostHog client for the server using posthog-node that can be used in other server-side code
|
|
61
|
-
Example:
|
|
62
|
-
--------------------------------------------------
|
|
63
|
-
import posthog, { PostHog } from 'posthog-node';
|
|
64
|
-
import { PUBLIC_POSTHOG_KEY, PUBLIC_POSTHOG_HOST } from '$env/static/public';
|
|
65
|
-
|
|
66
|
-
let _client: PostHog | null = null;
|
|
67
|
-
|
|
68
|
-
export function getPostHogClient() {
|
|
69
|
-
if (!_client) {
|
|
70
|
-
_client = new posthog.PostHog(PUBLIC_POSTHOG_KEY, {
|
|
71
|
-
host: PUBLIC_POSTHOG_HOST,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
return _client;
|
|
75
|
-
}
|
|
76
|
-
--------------------------------------------------
|
|
77
|
-
|
|
78
|
-
==============================
|
|
79
|
-
FILE: Svelte Config (e.g svelte.config.js)
|
|
80
|
-
LOCATION: Wherever the root of the app is
|
|
81
|
-
==============================
|
|
82
|
-
Changes:
|
|
83
|
-
- Set config to not use relative asset paths
|
|
84
|
-
|
|
85
|
-
Example:
|
|
86
|
-
--------------------------------------------------
|
|
87
|
-
import adapter from '@sveltejs/adapter-auto';
|
|
88
|
-
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
|
89
|
-
|
|
90
|
-
/** @type {import('@sveltejs/kit').Config} */
|
|
91
|
-
const config = {
|
|
92
|
-
// Consult https://svelte.dev/docs/kit/integrations
|
|
93
|
-
// for more information about preprocessors
|
|
94
|
-
preprocess: vitePreprocess(),
|
|
95
|
-
|
|
96
|
-
kit: {
|
|
97
|
-
// ...
|
|
98
|
-
paths: {
|
|
99
|
-
relative: false, // Required for PostHog session replay to work correctly
|
|
100
|
-
},
|
|
101
|
-
// ...
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export default config;
|
|
106
|
-
|
|
107
|
-
--------------------------------------------------`;
|
|
108
|
-
};
|
|
109
|
-
exports.getSvelteDocumentation = getSvelteDocumentation;
|
|
110
|
-
//# sourceMappingURL=docs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/svelte/docs.ts"],"names":[],"mappings":";;;AAAO,MAAM,sBAAsB,GAAG,CAAC,EACrC,QAAQ,GAGT,EAAE,EAAE;IACH,OAAO;;oBAGL,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IACrC,6BAA6B,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;0EAElE,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IACrC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAkDE,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAkDiD,CAAC;AACpD,CAAC,CAAC;AAlHW,QAAA,sBAAsB,0BAkHjC","sourcesContent":["export const getSvelteDocumentation = ({\n language,\n}: {\n language: 'typescript' | 'javascript';\n}) => {\n return `\n==============================\nFILE: Root layout.${\n language === 'typescript' ? 'ts' : 'js'\n } file (e.g routes/+layout.${language === 'typescript' ? 'ts' : 'js'})\nLOCATION: Usually placed at the root of the app (e.g src/routes/+layout.${\n language === 'typescript' ? 'ts' : 'js'\n })\n==============================\nChanges:\n- Add a load function to initialize PostHog, checking if the browser is available to make sure it only initializes on the client\nExample:\n--------------------------------------------------\nimport posthog from 'posthog-js'\nimport { browser } from '$app/environment';\nimport { PUBLIC_POSTHOG_KEY } from '$env/static/public';\n\nexport const load = async () => {\n\n if (browser) {\n posthog.init(\n PUBLIC_POSTHOG_KEY,\n {\n api_host: PUBLIC_POSTHOG_HOST,\n capture_pageview: false,\n capture_pageleave: false\n }\n )\n }\n return\n};\n--------------------------------------------------\n\n==============================\nFile: Root layout .svelte file (e.g routes/+layout.svelte)\nLOCATION: Usually placed at the root of the app (e.g src/routes/+layout.svelte)\n==============================\nChanges:\n- Add pageview & pageleave tracking to the layout\n\nExample:\n--------------------------------------------------\n<script>\n import { browser } from '$app/environment';\n import { beforeNavigate, afterNavigate } from '$app/navigation';\n import posthog from 'posthog-js'\n\n if (browser) {\n beforeNavigate(() => posthog.capture('$pageleave'));\n afterNavigate(() => posthog.capture('$pageview'));\n }\n</script>\n--------------------------------------------------\n\n==============================\nFile: PostHog server initializion\nLOCATION: With other server-side code, e.g. src/lib/server/posthog${\n language === 'typescript' ? '.ts' : '.js'\n }\n==============================\nChanges:\n- Initialize a PostHog client for the server using posthog-node that can be used in other server-side code\nExample:\n--------------------------------------------------\nimport posthog, { PostHog } from 'posthog-node';\nimport { PUBLIC_POSTHOG_KEY, PUBLIC_POSTHOG_HOST } from '$env/static/public';\n\nlet _client: PostHog | null = null;\n\nexport function getPostHogClient() {\n if (!_client) {\n _client = new posthog.PostHog(PUBLIC_POSTHOG_KEY, {\n host: PUBLIC_POSTHOG_HOST,\n });\n }\n return _client;\n}\n--------------------------------------------------\n\n==============================\nFILE: Svelte Config (e.g svelte.config.js)\nLOCATION: Wherever the root of the app is\n==============================\nChanges:\n- Set config to not use relative asset paths\n\nExample:\n--------------------------------------------------\nimport adapter from '@sveltejs/adapter-auto';\nimport { vitePreprocess } from '@sveltejs/vite-plugin-svelte';\n\n/** @type {import('@sveltejs/kit').Config} */\nconst config = {\n\t// Consult https://svelte.dev/docs/kit/integrations\n\t// for more information about preprocessors\n\tpreprocess: vitePreprocess(),\n\n\tkit: {\n // ...\n paths: {\n relative: false, // Required for PostHog session replay to work correctly\n },\n // ...\n\t}\n};\n\nexport default config;\n\n--------------------------------------------------`;\n};\n"]}
|