@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.
Files changed (106) hide show
  1. package/package.json +1 -1
  2. package/dist/bin.d.ts +0 -2
  3. package/dist/bin.js +0 -28
  4. package/dist/bin.js.map +0 -1
  5. package/dist/src/lib/config.d.ts +0 -49
  6. package/dist/src/lib/config.js +0 -85
  7. package/dist/src/lib/config.js.map +0 -1
  8. package/dist/src/lib/constants.d.ts +0 -24
  9. package/dist/src/lib/constants.js +0 -46
  10. package/dist/src/lib/constants.js.map +0 -1
  11. package/dist/src/lib/messages.d.ts +0 -10
  12. package/dist/src/lib/messages.js +0 -37
  13. package/dist/src/lib/messages.js.map +0 -1
  14. package/dist/src/lib/prompts.d.ts +0 -16
  15. package/dist/src/lib/prompts.js +0 -83
  16. package/dist/src/lib/prompts.js.map +0 -1
  17. package/dist/src/nextjs/docs.d.ts +0 -8
  18. package/dist/src/nextjs/docs.js +0 -257
  19. package/dist/src/nextjs/docs.js.map +0 -1
  20. package/dist/src/nextjs/nextjs-wizard.d.ts +0 -2
  21. package/dist/src/nextjs/nextjs-wizard.js +0 -121
  22. package/dist/src/nextjs/nextjs-wizard.js.map +0 -1
  23. package/dist/src/nextjs/utils.d.ts +0 -9
  24. package/dist/src/nextjs/utils.js +0 -83
  25. package/dist/src/nextjs/utils.js.map +0 -1
  26. package/dist/src/react/docs.d.ts +0 -4
  27. package/dist/src/react/docs.js +0 -46
  28. package/dist/src/react/docs.js.map +0 -1
  29. package/dist/src/react/react-wizard.d.ts +0 -2
  30. package/dist/src/react/react-wizard.js +0 -105
  31. package/dist/src/react/react-wizard.js.map +0 -1
  32. package/dist/src/react-native/docs.d.ts +0 -5
  33. package/dist/src/react-native/docs.js +0 -31
  34. package/dist/src/react-native/docs.js.map +0 -1
  35. package/dist/src/react-native/react-native-wizard.d.ts +0 -2
  36. package/dist/src/react-native/react-native-wizard.js +0 -123
  37. package/dist/src/react-native/react-native-wizard.js.map +0 -1
  38. package/dist/src/run.d.ts +0 -13
  39. package/dist/src/run.js +0 -83
  40. package/dist/src/run.js.map +0 -1
  41. package/dist/src/svelte/docs.d.ts +0 -3
  42. package/dist/src/svelte/docs.js +0 -110
  43. package/dist/src/svelte/docs.js.map +0 -1
  44. package/dist/src/svelte/svelte-wizard.d.ts +0 -2
  45. package/dist/src/svelte/svelte-wizard.js +0 -113
  46. package/dist/src/svelte/svelte-wizard.js.map +0 -1
  47. package/dist/src/telemetry.d.ts +0 -2
  48. package/dist/src/telemetry.js +0 -13
  49. package/dist/src/telemetry.js.map +0 -1
  50. package/dist/src/utils/analytics.d.ts +0 -12
  51. package/dist/src/utils/analytics.js +0 -59
  52. package/dist/src/utils/analytics.js.map +0 -1
  53. package/dist/src/utils/bash.d.ts +0 -2
  54. package/dist/src/utils/bash.js +0 -54
  55. package/dist/src/utils/bash.js.map +0 -1
  56. package/dist/src/utils/clack-utils.d.ts +0 -184
  57. package/dist/src/utils/clack-utils.js +0 -683
  58. package/dist/src/utils/clack-utils.js.map +0 -1
  59. package/dist/src/utils/clack.d.ts +0 -2
  60. package/dist/src/utils/clack.js +0 -9
  61. package/dist/src/utils/clack.js.map +0 -1
  62. package/dist/src/utils/debug.d.ts +0 -2
  63. package/dist/src/utils/debug.js +0 -22
  64. package/dist/src/utils/debug.js.map +0 -1
  65. package/dist/src/utils/environment.d.ts +0 -9
  66. package/dist/src/utils/environment.js +0 -164
  67. package/dist/src/utils/environment.js.map +0 -1
  68. package/dist/src/utils/file-utils.d.ts +0 -29
  69. package/dist/src/utils/file-utils.js +0 -177
  70. package/dist/src/utils/file-utils.js.map +0 -1
  71. package/dist/src/utils/logging.d.ts +0 -9
  72. package/dist/src/utils/logging.js +0 -50
  73. package/dist/src/utils/logging.js.map +0 -1
  74. package/dist/src/utils/package-json.d.ts +0 -25
  75. package/dist/src/utils/package-json.js +0 -27
  76. package/dist/src/utils/package-json.js.map +0 -1
  77. package/dist/src/utils/package-manager.d.ts +0 -21
  78. package/dist/src/utils/package-manager.js +0 -208
  79. package/dist/src/utils/package-manager.js.map +0 -1
  80. package/dist/src/utils/query.d.ts +0 -8
  81. package/dist/src/utils/query.js +0 -27
  82. package/dist/src/utils/query.js.map +0 -1
  83. package/dist/src/utils/rules/add-editor-rules.d.ts +0 -9
  84. package/dist/src/utils/rules/add-editor-rules.js +0 -90
  85. package/dist/src/utils/rules/add-editor-rules.js.map +0 -1
  86. package/dist/src/utils/rules/add-editor-rules.ts +0 -86
  87. package/dist/src/utils/rules/next-rules.md +0 -9
  88. package/dist/src/utils/rules/react-native-rules.md +0 -7
  89. package/dist/src/utils/rules/react-rules.md +0 -7
  90. package/dist/src/utils/rules/svelte-rules.md +0 -7
  91. package/dist/src/utils/rules/universal.md +0 -20
  92. package/dist/src/utils/semver.d.ts +0 -5
  93. package/dist/src/utils/semver.js +0 -25
  94. package/dist/src/utils/semver.js.map +0 -1
  95. package/dist/src/utils/string.d.ts +0 -1
  96. package/dist/src/utils/string.js +0 -9
  97. package/dist/src/utils/string.js.map +0 -1
  98. package/dist/src/utils/types.d.ts +0 -48
  99. package/dist/src/utils/types.js +0 -3
  100. package/dist/src/utils/types.js.map +0 -1
  101. package/dist/src/utils/urls.d.ts +0 -4
  102. package/dist/src/utils/urls.js +0 -35
  103. package/dist/src/utils/urls.js.map +0 -1
  104. package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
  105. package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
  106. 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":"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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 { 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,5 +0,0 @@
1
- export declare const getReactNativeDocumentation: ({ language, host, projectApiKey, }: {
2
- language: "typescript" | "javascript";
3
- host: string;
4
- projectApiKey: string;
5
- }) => string;
@@ -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,2 +0,0 @@
1
- import type { WizardOptions } from '../utils/types';
2
- export declare function runReactNativeWizard(options: WizardOptions): Promise<void>;
@@ -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":";AAAA,8BAA8B;;;;;AA+B9B,oDA4IC;AAzKD,sDAY8B;AAC9B,wDAA+E;AAC/E,2DAAmC;AACnC,gDAA+C;AAC/C,iCAAqD;AACrD,kDAA+C;AAC/C,oDAI6B;AAE7B,sDAAyD;AACzD,sEAAiE;AACjE,8DAAgD;AAChD,8CAAkD;AAE3C,KAAK,UAAU,oBAAoB,CACxC,OAAsB;IAEtB,IAAA,0BAAY,EAAC;QACX,UAAU,EAAE,6BAA6B;KAC1C,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAA,mBAAK,EACT,0KAA0K,EAC1K,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,cAAc,EAAE,cAAc,CAAC,CAAC;IAE5E,MAAM,kBAAkB,GAAG,IAAA,gCAAiB,EAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE1E,IAAI,kBAAkB,EAAE,CAAC;QACvB,qBAAS,CAAC,MAAM,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IAC/D,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,WAAW,GAAG,IAAA,kCAAmB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE7D,IAAI,WAAW,EAAE,CAAC;QAChB,qBAAS,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACxC,qBAAS,CAAC,MAAM,CAAC,cAAc,EAAE,IAAA,gCAAiB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;IAEpE,MAAM,iBAAiB,GAAG,WAAW;QACnC,CAAC,CAAC;YACE,sBAAsB;YACtB,qCAAqC;YACrC,kBAAkB;YAClB,kBAAkB;YAClB,aAAa;YACb,mBAAmB;SACpB;QACH,CAAC,CAAC;YACE,sBAAsB;YACtB,2CAA2C;YAC3C,0BAA0B;YAC1B,uBAAuB;SACxB,CAAC;IAEN,KAAK,MAAM,WAAW,IAAI,iBAAiB,EAAE,CAAC;QAC5C,MAAM,IAAA,4BAAc,EAAC;YACnB,WAAW;YACX,uBAAuB,EAAE,WAAW;YACpC,gBAAgB,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC;YAC5D,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,iBAAiB,EAAE,KAAK;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,uBAAW,CAAC,WAAW;YACpC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,sBAAI,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,IAAA,2CAA8B,EAAC;QACzD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,WAAW;KACrC,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,IAAA,kCAA2B,EAAC;QAC5D,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;QAC1D,IAAI;QACJ,aAAa;KACd,CAAC,CAAC;IAEH,eAAK,CAAC,GAAG,CAAC,IAAI,CACZ,uCACE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cACzB,EAAE,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAgB,EAAC;QAC3C,WAAW,EAAE,uBAAW,CAAC,WAAW;QACpC,aAAa;QACb,aAAa,EAAE,yBAAyB;QACxC,UAAU;QACV,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,IAAA,8CAAiC,EAAC;QACtC,WAAW,EAAE,uBAAW,CAAC,WAAW;QACpC,aAAa;QACb,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,yBAAyB;QACxC,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,IAAA,oCAAsB,EAAC;QAC3B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,WAAW;KACrC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,IAAA,iCAAc,EAAC;QAC5C,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,uBAAW,CAAC,WAAW;QACpC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,MAAM,IAAA,+BAAiB,EAAC;QACrD,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC;QACnC,OAAO;QACP,WAAW,EAAE,uBAAW,CAAC,WAAW;QACpC,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 { 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
@@ -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';\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"]}
@@ -1,3 +0,0 @@
1
- export declare const getSvelteDocumentation: ({ language, }: {
2
- language: "typescript" | "javascript";
3
- }) => string;
@@ -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"]}
@@ -1,2 +0,0 @@
1
- import type { WizardOptions } from '../utils/types';
2
- export declare function runSvelteWizard(options: WizardOptions): Promise<void>;