@posthog/wizard 1.31.1 → 1.32.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 (183) hide show
  1. package/README.md +2 -1
  2. package/dist/bin.js +14 -1
  3. package/dist/bin.js.map +1 -1
  4. package/dist/src/__tests__/run.test.js +5 -5
  5. package/dist/src/__tests__/run.test.js.map +1 -1
  6. package/dist/src/android/android-wizard-agent.d.ts +6 -0
  7. package/dist/src/android/android-wizard-agent.js +140 -0
  8. package/dist/src/android/android-wizard-agent.js.map +1 -0
  9. package/dist/src/android/utils.d.ts +11 -0
  10. package/dist/src/android/utils.js +97 -0
  11. package/dist/src/android/utils.js.map +1 -0
  12. package/dist/src/angular/angular-wizard-agent.d.ts +4 -0
  13. package/dist/src/angular/angular-wizard-agent.js +67 -0
  14. package/dist/src/angular/angular-wizard-agent.js.map +1 -0
  15. package/dist/src/angular/utils.d.ts +4 -0
  16. package/dist/src/angular/utils.js +9 -0
  17. package/dist/src/angular/utils.js.map +1 -0
  18. package/dist/src/astro/astro-wizard-agent.d.ts +7 -0
  19. package/dist/src/astro/astro-wizard-agent.js +102 -0
  20. package/dist/src/astro/astro-wizard-agent.js.map +1 -0
  21. package/dist/src/astro/utils.d.ts +17 -0
  22. package/dist/src/astro/utils.js +163 -0
  23. package/dist/src/astro/utils.js.map +1 -0
  24. package/dist/src/django/django-wizard-agent.d.ts +8 -5
  25. package/dist/src/django/django-wizard-agent.js +62 -51
  26. package/dist/src/django/django-wizard-agent.js.map +1 -1
  27. package/dist/src/django/utils.d.ts +1 -1
  28. package/dist/src/django/utils.js +3 -22
  29. package/dist/src/django/utils.js.map +1 -1
  30. package/dist/src/fastapi/fastapi-wizard-agent.d.ts +7 -0
  31. package/dist/src/fastapi/fastapi-wizard-agent.js +217 -0
  32. package/dist/src/fastapi/fastapi-wizard-agent.js.map +1 -0
  33. package/dist/src/fastapi/utils.d.ts +26 -0
  34. package/dist/src/fastapi/utils.js +258 -0
  35. package/dist/src/fastapi/utils.js.map +1 -0
  36. package/dist/src/flask/flask-wizard-agent.d.ts +8 -5
  37. package/dist/src/flask/flask-wizard-agent.js +67 -51
  38. package/dist/src/flask/flask-wizard-agent.js.map +1 -1
  39. package/dist/src/flask/utils.d.ts +1 -1
  40. package/dist/src/flask/utils.js +3 -22
  41. package/dist/src/flask/utils.js.map +1 -1
  42. package/dist/src/laravel/laravel-wizard-agent.d.ts +10 -5
  43. package/dist/src/laravel/laravel-wizard-agent.js +50 -53
  44. package/dist/src/laravel/laravel-wizard-agent.js.map +1 -1
  45. package/dist/src/laravel/utils.d.ts +1 -1
  46. package/dist/src/laravel/utils.js +3 -22
  47. package/dist/src/laravel/utils.js.map +1 -1
  48. package/dist/src/lib/__tests__/agent-interface.test.js +1 -0
  49. package/dist/src/lib/__tests__/agent-interface.test.js.map +1 -1
  50. package/dist/src/lib/agent-interface.d.ts +4 -1
  51. package/dist/src/lib/agent-interface.js +36 -3
  52. package/dist/src/lib/agent-interface.js.map +1 -1
  53. package/dist/src/lib/agent-runner.js +69 -6
  54. package/dist/src/lib/agent-runner.js.map +1 -1
  55. package/dist/src/lib/api.d.ts +4 -4
  56. package/dist/src/lib/constants.d.ts +15 -14
  57. package/dist/src/lib/constants.js +17 -40
  58. package/dist/src/lib/constants.js.map +1 -1
  59. package/dist/src/lib/env-file-tools.d.ts +11 -0
  60. package/dist/src/lib/env-file-tools.js +154 -0
  61. package/dist/src/lib/env-file-tools.js.map +1 -0
  62. package/dist/src/lib/framework-config.d.ts +34 -16
  63. package/dist/src/lib/framework-config.js.map +1 -1
  64. package/dist/src/lib/registry.d.ts +3 -0
  65. package/dist/src/lib/registry.js +41 -0
  66. package/dist/src/lib/registry.js.map +1 -0
  67. package/dist/src/nextjs/nextjs-wizard-agent.d.ts +7 -5
  68. package/dist/src/nextjs/nextjs-wizard-agent.js +16 -79
  69. package/dist/src/nextjs/nextjs-wizard-agent.js.map +1 -1
  70. package/dist/src/nextjs/utils.d.ts +1 -1
  71. package/dist/src/nextjs/utils.js +3 -22
  72. package/dist/src/nextjs/utils.js.map +1 -1
  73. package/dist/src/nuxt/nuxt-wizard-agent.d.ts +6 -0
  74. package/dist/src/nuxt/nuxt-wizard-agent.js +77 -0
  75. package/dist/src/nuxt/nuxt-wizard-agent.js.map +1 -0
  76. package/dist/src/python/python-wizard-agent.d.ts +7 -0
  77. package/dist/src/python/python-wizard-agent.js +269 -0
  78. package/dist/src/python/python-wizard-agent.js.map +1 -0
  79. package/dist/src/python/utils.d.ts +28 -0
  80. package/dist/src/python/utils.js +147 -0
  81. package/dist/src/python/utils.js.map +1 -0
  82. package/dist/src/react-native/react-native-wizard-agent.d.ts +7 -0
  83. package/dist/src/react-native/react-native-wizard-agent.js +91 -0
  84. package/dist/src/react-native/react-native-wizard-agent.js.map +1 -0
  85. package/dist/src/react-native/utils.d.ts +8 -0
  86. package/dist/src/react-native/utils.js +31 -0
  87. package/dist/src/react-native/utils.js.map +1 -0
  88. package/dist/src/react-router/react-router-wizard-agent.d.ts +7 -5
  89. package/dist/src/react-router/react-router-wizard-agent.js +18 -80
  90. package/dist/src/react-router/react-router-wizard-agent.js.map +1 -1
  91. package/dist/src/react-router/utils.d.ts +1 -1
  92. package/dist/src/react-router/utils.js +3 -21
  93. package/dist/src/react-router/utils.js.map +1 -1
  94. package/dist/src/run.d.ts +1 -0
  95. package/dist/src/run.js +28 -76
  96. package/dist/src/run.js.map +1 -1
  97. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +6 -6
  98. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +6 -6
  99. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +6 -6
  100. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +6 -6
  101. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +6 -6
  102. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +6 -6
  103. package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +6 -6
  104. package/dist/src/svelte/svelte-wizard-agent.d.ts +4 -0
  105. package/dist/src/svelte/svelte-wizard-agent.js +60 -0
  106. package/dist/src/svelte/svelte-wizard-agent.js.map +1 -0
  107. package/dist/src/swift/swift-wizard-agent.d.ts +7 -0
  108. package/dist/src/swift/swift-wizard-agent.js +141 -0
  109. package/dist/src/swift/swift-wizard-agent.js.map +1 -0
  110. package/dist/src/swift/utils.d.ts +8 -0
  111. package/dist/src/swift/utils.js +105 -0
  112. package/dist/src/swift/utils.js.map +1 -0
  113. package/dist/src/tanstack-router/tanstack-router-wizard-agent.d.ts +7 -0
  114. package/dist/src/tanstack-router/tanstack-router-wizard-agent.js +93 -0
  115. package/dist/src/tanstack-router/tanstack-router-wizard-agent.js.map +1 -0
  116. package/dist/src/tanstack-router/utils.d.ts +17 -0
  117. package/dist/src/tanstack-router/utils.js +192 -0
  118. package/dist/src/tanstack-router/utils.js.map +1 -0
  119. package/dist/src/tanstack-start/tanstack-start-wizard-agent.d.ts +4 -0
  120. package/dist/src/tanstack-start/tanstack-start-wizard-agent.js +66 -0
  121. package/dist/src/tanstack-start/tanstack-start-wizard-agent.js.map +1 -0
  122. package/dist/src/tanstack-start/utils.d.ts +4 -0
  123. package/dist/src/tanstack-start/utils.js +9 -0
  124. package/dist/src/tanstack-start/utils.js.map +1 -0
  125. package/dist/src/utils/__tests__/semver.test.d.ts +1 -0
  126. package/dist/src/utils/__tests__/semver.test.js +117 -0
  127. package/dist/src/utils/__tests__/semver.test.js.map +1 -0
  128. package/dist/src/utils/clack-utils.js +3 -5
  129. package/dist/src/utils/clack-utils.js.map +1 -1
  130. package/dist/src/utils/debug.d.ts +2 -0
  131. package/dist/src/utils/debug.js +17 -5
  132. package/dist/src/utils/debug.js.map +1 -1
  133. package/dist/src/utils/file-utils.d.ts +1 -31
  134. package/dist/src/utils/file-utils.js +0 -163
  135. package/dist/src/utils/file-utils.js.map +1 -1
  136. package/dist/src/utils/semver.d.ts +16 -0
  137. package/dist/src/utils/semver.js +37 -0
  138. package/dist/src/utils/semver.js.map +1 -1
  139. package/dist/src/utils/types.d.ts +4 -0
  140. package/dist/src/utils/types.js.map +1 -1
  141. package/dist/src/vue/vue-wizard-agent.d.ts +4 -0
  142. package/dist/src/vue/vue-wizard-agent.js +64 -0
  143. package/dist/src/vue/vue-wizard-agent.js.map +1 -0
  144. package/package.json +1 -1
  145. package/dist/src/astro/astro-wizard.d.ts +0 -2
  146. package/dist/src/astro/astro-wizard.js +0 -89
  147. package/dist/src/astro/astro-wizard.js.map +0 -1
  148. package/dist/src/astro/docs.d.ts +0 -4
  149. package/dist/src/astro/docs.js +0 -101
  150. package/dist/src/astro/docs.js.map +0 -1
  151. package/dist/src/lib/config.d.ts +0 -104
  152. package/dist/src/lib/config.js +0 -368
  153. package/dist/src/lib/config.js.map +0 -1
  154. package/dist/src/lib/messages.d.ts +0 -16
  155. package/dist/src/lib/messages.js +0 -66
  156. package/dist/src/lib/messages.js.map +0 -1
  157. package/dist/src/lib/prompts.d.ts +0 -16
  158. package/dist/src/lib/prompts.js +0 -83
  159. package/dist/src/lib/prompts.js.map +0 -1
  160. package/dist/src/react/docs.d.ts +0 -4
  161. package/dist/src/react/docs.js +0 -49
  162. package/dist/src/react/docs.js.map +0 -1
  163. package/dist/src/react/react-wizard.d.ts +0 -2
  164. package/dist/src/react/react-wizard.js +0 -121
  165. package/dist/src/react/react-wizard.js.map +0 -1
  166. package/dist/src/react-native/docs.d.ts +0 -5
  167. package/dist/src/react-native/docs.js +0 -31
  168. package/dist/src/react-native/docs.js.map +0 -1
  169. package/dist/src/react-native/react-native-wizard.d.ts +0 -2
  170. package/dist/src/react-native/react-native-wizard.js +0 -128
  171. package/dist/src/react-native/react-native-wizard.js.map +0 -1
  172. package/dist/src/svelte/docs.d.ts +0 -3
  173. package/dist/src/svelte/docs.js +0 -111
  174. package/dist/src/svelte/docs.js.map +0 -1
  175. package/dist/src/svelte/svelte-wizard.d.ts +0 -2
  176. package/dist/src/svelte/svelte-wizard.js +0 -121
  177. package/dist/src/svelte/svelte-wizard.js.map +0 -1
  178. package/dist/src/utils/errors.d.ts +0 -3
  179. package/dist/src/utils/errors.js +0 -11
  180. package/dist/src/utils/errors.js.map +0 -1
  181. package/dist/src/utils/query.d.ts +0 -11
  182. package/dist/src/utils/query.js +0 -115
  183. package/dist/src/utils/query.js.map +0 -1
@@ -1,49 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getReactDocumentation = void 0;
4
- const getReactDocumentation = ({ language, envVarPrefix, }) => {
5
- const apiKeyText = envVarPrefix === 'VITE_PUBLIC_'
6
- ? 'import.meta.env.VITE_PUBLIC_POSTHOG_KEY'
7
- : `process.env.${envVarPrefix}POSTHOG_KEY`;
8
- const hostText = envVarPrefix === 'VITE_PUBLIC_'
9
- ? 'import.meta.env.VITE_PUBLIC_POSTHOG_HOST'
10
- : `process.env.${envVarPrefix}POSTHOG_HOST`;
11
- return `
12
- ==============================
13
- FILE: {index / App}.${language === 'typescript' ? 'tsx' : 'jsx'} (wherever the root of the app is)
14
- LOCATION: Wherever the root of the app is
15
- ==============================
16
- Changes:
17
- - Add the PostHogProvider to the root of the app in the provider tree.
18
- - Make sure to include the defaults: '2025-05-24' option in the init call.
19
-
20
- Example:
21
- --------------------------------------------------
22
- import React from 'react';
23
- import ReactDOM from 'react-dom/client';
24
- import App from './App';
25
-
26
- import { PostHogProvider} from 'posthog-js/react'
27
-
28
- const root = ReactDOM.createRoot(document.getElementById('root'));
29
-
30
- root.render(
31
- <React.StrictMode>
32
- <PostHogProvider
33
- apiKey={${apiKeyText}}
34
- options={{
35
- api_host: ${hostText},
36
- defaults: '2025-05-24',
37
- capture_exceptions: true, // This enables capturing exceptions using Error Tracking, set to false if you don't want this
38
- debug: ${envVarPrefix === 'VITE_PUBLIC_'
39
- ? 'import.meta.env.MODE === "development"'
40
- : 'process.env.NODE_ENV === "development"'},
41
- }}
42
- >
43
- <App />
44
- </PostHogProvider>
45
- </React.StrictMode>
46
- --------------------------------------------------`;
47
- };
48
- exports.getReactDocumentation = getReactDocumentation;
49
- //# sourceMappingURL=docs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../../src/react/docs.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,EACpC,QAAQ,EACR,YAAY,GAIb,EAAE,EAAE;IACH,MAAM,UAAU,GACd,YAAY,KAAK,cAAc;QAC7B,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,eAAe,YAAY,aAAa,CAAC;IAE/C,MAAM,QAAQ,GACZ,YAAY,KAAK,cAAc;QAC7B,CAAC,CAAC,0CAA0C;QAC5C,CAAC,CAAC,eAAe,YAAY,cAAc,CAAC;IAEhD,OAAO;;sBAGL,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KACtC;;;;;;;;;;;;;;;;;;;;gBAoBc,UAAU;;oBAEN,QAAQ;;;iBAIlB,YAAY,KAAK,cAAc;QAC7B,CAAC,CAAC,wCAAwC;QAC1C,CAAC,CAAC,wCACN;;;;;;mDAM2C,CAAC;AACpD,CAAC,CAAC;AAzDW,QAAA,qBAAqB,yBAyDhC","sourcesContent":["export const getReactDocumentation = ({\n language,\n envVarPrefix,\n}: {\n language: 'typescript' | 'javascript';\n envVarPrefix: string;\n}) => {\n const apiKeyText =\n envVarPrefix === 'VITE_PUBLIC_'\n ? 'import.meta.env.VITE_PUBLIC_POSTHOG_KEY'\n : `process.env.${envVarPrefix}POSTHOG_KEY`;\n\n const hostText =\n envVarPrefix === 'VITE_PUBLIC_'\n ? 'import.meta.env.VITE_PUBLIC_POSTHOG_HOST'\n : `process.env.${envVarPrefix}POSTHOG_HOST`;\n\n return `\n==============================\nFILE: {index / App}.${\n language === 'typescript' ? 'tsx' : 'jsx'\n } (wherever the root of the app is)\nLOCATION: Wherever the root of the app is\n==============================\nChanges:\n- Add the PostHogProvider to the root of the app in the provider tree.\n- Make sure to include the defaults: '2025-05-24' option in the init call.\n\nExample:\n--------------------------------------------------\nimport React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport App from './App';\n\nimport { PostHogProvider} from 'posthog-js/react'\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\n\nroot.render(\n <React.StrictMode>\n <PostHogProvider\n apiKey={${apiKeyText}}\n options={{\n api_host: ${hostText},\n defaults: '2025-05-24',\n capture_exceptions: true, // This enables capturing exceptions using Error Tracking, set to false if you don't want this\n debug: ${\n envVarPrefix === 'VITE_PUBLIC_'\n ? 'import.meta.env.MODE === \"development\"'\n : 'process.env.NODE_ENV === \"development\"'\n },\n }}\n >\n <App />\n </PostHogProvider>\n </React.StrictMode>\n--------------------------------------------------`;\n};\n"]}
@@ -1,2 +0,0 @@
1
- import type { WizardOptions } from '../utils/types';
2
- export declare function runReactWizard(options: WizardOptions): Promise<void>;
@@ -1,121 +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 messages_1 = require("../lib/messages");
18
- const steps_1 = require("../steps");
19
- const upload_environment_variables_1 = require("../steps/upload-environment-variables");
20
- async function runReactWizard(options) {
21
- (0, clack_utils_1.printWelcome)({
22
- wizardName: 'PostHog React wizard',
23
- });
24
- const aiConsent = await (0, clack_utils_1.askForAIConsent)(options);
25
- if (!aiConsent) {
26
- 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);
27
- }
28
- const cloudRegion = options.cloudRegion ?? (await (0, clack_utils_2.askForCloudRegion)());
29
- const typeScriptDetected = (0, clack_utils_1.isUsingTypeScript)(options);
30
- await (0, clack_utils_1.confirmContinueIfNoOrDirtyGitRepo)(options);
31
- const packageJson = await (0, clack_utils_1.getPackageDotJson)(options);
32
- await (0, clack_utils_1.ensurePackageIsInstalled)(packageJson, 'react', 'React');
33
- const reactVersion = (0, package_json_1.getPackageVersion)('react', packageJson);
34
- if (reactVersion) {
35
- analytics_1.analytics.setTag('react-version', reactVersion);
36
- }
37
- const { projectApiKey, accessToken, host, projectId } = await (0, clack_utils_1.getOrAskForProjectData)({
38
- ...options,
39
- cloudRegion,
40
- });
41
- const sdkAlreadyInstalled = (0, package_json_1.hasPackageInstalled)('posthog-js', packageJson);
42
- analytics_1.analytics.setTag('sdk-already-installed', sdkAlreadyInstalled);
43
- const { packageManager: packageManagerFromInstallStep } = await (0, clack_utils_1.installPackage)({
44
- packageName: 'posthog-js',
45
- packageNameDisplayLabel: 'posthog-js',
46
- alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'],
47
- forceInstall: options.forceInstall,
48
- askBeforeUpdating: false,
49
- installDir: options.installDir,
50
- integration: constants_1.Integration.react,
51
- });
52
- const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({
53
- installDir: options.installDir,
54
- integration: constants_1.Integration.react,
55
- });
56
- const envVarPrefix = await (0, environment_1.detectEnvVarPrefix)(options);
57
- const installationDocumentation = (0, docs_1.getReactDocumentation)({
58
- language: typeScriptDetected ? 'typescript' : 'javascript',
59
- envVarPrefix,
60
- });
61
- clack_1.default.log.info(`Reviewing PostHog documentation for React`);
62
- const filesToChange = await (0, file_utils_1.getFilesToChange)({
63
- integration: constants_1.Integration.react,
64
- relevantFiles,
65
- documentation: installationDocumentation,
66
- accessToken,
67
- cloudRegion,
68
- projectId,
69
- });
70
- await (0, file_utils_1.generateFileChangesForIntegration)({
71
- integration: constants_1.Integration.react,
72
- filesToChange,
73
- accessToken,
74
- installDir: options.installDir,
75
- documentation: installationDocumentation,
76
- cloudRegion,
77
- projectId,
78
- });
79
- const { relativeEnvFilePath, addedEnvVariables } = await (0, steps_1.addOrUpdateEnvironmentVariablesStep)({
80
- variables: {
81
- [envVarPrefix + 'POSTHOG_KEY']: projectApiKey,
82
- [envVarPrefix + 'POSTHOG_HOST']: host,
83
- },
84
- installDir: options.installDir,
85
- integration: constants_1.Integration.react,
86
- });
87
- const packageManagerForOutro = packageManagerFromInstallStep ?? (await (0, clack_utils_1.getPackageManager)(options));
88
- await (0, steps_1.runPrettierStep)({
89
- installDir: options.installDir,
90
- integration: constants_1.Integration.react,
91
- });
92
- const addedEditorRules = await (0, steps_1.addEditorRulesStep)({
93
- installDir: options.installDir,
94
- rulesName: 'react-rules.md',
95
- integration: constants_1.Integration.react,
96
- });
97
- const uploadedEnvVars = await (0, upload_environment_variables_1.uploadEnvironmentVariablesStep)({
98
- [envVarPrefix + 'POSTHOG_KEY']: projectApiKey,
99
- [envVarPrefix + 'POSTHOG_HOST']: host,
100
- }, {
101
- integration: constants_1.Integration.react,
102
- options,
103
- });
104
- await (0, steps_1.addMCPServerToClientsStep)({
105
- cloudRegion,
106
- integration: constants_1.Integration.react,
107
- ci: options.ci,
108
- });
109
- const outroMessage = (0, messages_1.getOutroMessage)({
110
- options,
111
- integration: constants_1.Integration.react,
112
- cloudRegion,
113
- addedEditorRules,
114
- packageManager: packageManagerForOutro,
115
- envFileChanged: addedEnvVariables ? relativeEnvFilePath : undefined,
116
- uploadedEnvVars,
117
- });
118
- clack_1.default.outro(outroMessage);
119
- await analytics_1.analytics.shutdown('success');
120
- }
121
- //# 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} 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 { detectEnvVarPrefix } 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 { getOutroMessage } from '../lib/messages';\nimport {\n addEditorRulesStep,\n addMCPServerToClientsStep,\n addOrUpdateEnvironmentVariablesStep,\n runPrettierStep,\n} from '../steps';\nimport { uploadEnvironmentVariablesStep } from '../steps/upload-environment-variables';\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, accessToken, host, projectId } =\n 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 accessToken,\n cloudRegion,\n projectId,\n });\n\n await generateFileChangesForIntegration({\n integration: Integration.react,\n filesToChange,\n accessToken,\n installDir: options.installDir,\n documentation: installationDocumentation,\n cloudRegion,\n projectId,\n });\n\n const { relativeEnvFilePath, addedEnvVariables } =\n await addOrUpdateEnvironmentVariablesStep({\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 runPrettierStep({\n installDir: options.installDir,\n integration: Integration.react,\n });\n\n const addedEditorRules = await addEditorRulesStep({\n installDir: options.installDir,\n rulesName: 'react-rules.md',\n integration: Integration.react,\n });\n\n const uploadedEnvVars = await uploadEnvironmentVariablesStep(\n {\n [envVarPrefix + 'POSTHOG_KEY']: projectApiKey,\n [envVarPrefix + 'POSTHOG_HOST']: host,\n },\n {\n integration: Integration.react,\n options,\n },\n );\n\n await addMCPServerToClientsStep({\n cloudRegion,\n integration: Integration.react,\n ci: options.ci,\n });\n\n const outroMessage = getOutroMessage({\n options,\n integration: Integration.react,\n cloudRegion,\n addedEditorRules,\n packageManager: packageManagerForOutro,\n envFileChanged: addedEnvVariables ? relativeEnvFilePath : undefined,\n uploadedEnvVars,\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,128 +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 steps_1 = require("../steps");
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, accessToken, host, projectId } = 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
- accessToken,
90
- cloudRegion,
91
- projectId,
92
- });
93
- await (0, file_utils_1.generateFileChangesForIntegration)({
94
- integration: constants_1.Integration.reactNative,
95
- filesToChange,
96
- accessToken,
97
- installDir: options.installDir,
98
- documentation: installationDocumentation,
99
- cloudRegion,
100
- projectId,
101
- });
102
- await (0, steps_1.runPrettierStep)({
103
- installDir: options.installDir,
104
- integration: constants_1.Integration.reactNative,
105
- });
106
- const addedEditorRules = await (0, steps_1.addEditorRulesStep)({
107
- installDir: options.installDir,
108
- rulesName: 'react-native-rules.md',
109
- integration: constants_1.Integration.reactNative,
110
- });
111
- await (0, steps_1.addMCPServerToClientsStep)({
112
- cloudRegion,
113
- integration: constants_1.Integration.reactNative,
114
- ci: options.ci,
115
- });
116
- const packageManagerForOutro = await (0, clack_utils_1.getPackageManager)(options);
117
- const outroMessage = (0, messages_1.getOutroMessage)({
118
- options,
119
- integration: constants_1.Integration.reactNative,
120
- cloudRegion,
121
- addedEditorRules,
122
- packageManager: packageManagerForOutro,
123
- uploadedEnvVars: [],
124
- });
125
- clack_1.default.outro(outroMessage);
126
- await analytics_1.analytics.shutdown('success');
127
- }
128
- //# 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} 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 {\n addEditorRulesStep,\n addMCPServerToClientsStep,\n runPrettierStep,\n} from '../steps';\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, accessToken, host, projectId } =\n 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 accessToken,\n cloudRegion,\n projectId,\n });\n\n await generateFileChangesForIntegration({\n integration: Integration.reactNative,\n filesToChange,\n accessToken,\n installDir: options.installDir,\n documentation: installationDocumentation,\n cloudRegion,\n projectId,\n });\n\n await runPrettierStep({\n installDir: options.installDir,\n integration: Integration.reactNative,\n });\n\n const addedEditorRules = await addEditorRulesStep({\n installDir: options.installDir,\n rulesName: 'react-native-rules.md',\n integration: Integration.reactNative,\n });\n\n await addMCPServerToClientsStep({\n cloudRegion,\n integration: Integration.reactNative,\n ci: options.ci,\n });\n\n const packageManagerForOutro = await getPackageManager(options);\n\n const outroMessage = getOutroMessage({\n options,\n integration: Integration.reactNative,\n cloudRegion,\n addedEditorRules,\n packageManager: packageManagerForOutro,\n uploadedEnvVars: [],\n });\n\n clack.outro(outroMessage);\n\n await analytics.shutdown('success');\n}\n"]}
@@ -1,3 +0,0 @@
1
- export declare const getSvelteDocumentation: ({ language, }: {
2
- language: "typescript" | "javascript";
3
- }) => string;
@@ -1,111 +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
- capture_exceptions: true, // This enables capturing exceptions using Error Tracking, set to false if you don't want this
28
- }
29
- )
30
- }
31
- return
32
- };
33
- --------------------------------------------------
34
-
35
- ==============================
36
- File: Root layout .svelte file (e.g routes/+layout.svelte)
37
- LOCATION: Usually placed at the root of the app (e.g src/routes/+layout.svelte)
38
- ==============================
39
- Changes:
40
- - Add pageview & pageleave tracking to the layout
41
-
42
- Example:
43
- --------------------------------------------------
44
- <script>
45
- import { browser } from '$app/environment';
46
- import { beforeNavigate, afterNavigate } from '$app/navigation';
47
- import posthog from 'posthog-js'
48
-
49
- if (browser) {
50
- beforeNavigate(() => posthog.capture('$pageleave'));
51
- afterNavigate(() => posthog.capture('$pageview'));
52
- }
53
- </script>
54
- --------------------------------------------------
55
-
56
- ==============================
57
- File: PostHog server initializion
58
- LOCATION: With other server-side code, e.g. src/lib/server/posthog${language === 'typescript' ? '.ts' : '.js'}
59
- ==============================
60
- Changes:
61
- - Initialize a PostHog client for the server using posthog-node that can be used in other server-side code
62
- Example:
63
- --------------------------------------------------
64
- import posthog, { PostHog } from 'posthog-node';
65
- import { PUBLIC_POSTHOG_KEY, PUBLIC_POSTHOG_HOST } from '$env/static/public';
66
-
67
- let _client: PostHog | null = null;
68
-
69
- export function getPostHogClient() {
70
- if (!_client) {
71
- _client = new posthog.PostHog(PUBLIC_POSTHOG_KEY, {
72
- host: PUBLIC_POSTHOG_HOST,
73
- });
74
- }
75
- return _client;
76
- }
77
- --------------------------------------------------
78
-
79
- ==============================
80
- FILE: Svelte Config (e.g svelte.config.js)
81
- LOCATION: Wherever the root of the app is
82
- ==============================
83
- Changes:
84
- - Set config to not use relative asset paths
85
-
86
- Example:
87
- --------------------------------------------------
88
- import adapter from '@sveltejs/adapter-auto';
89
- import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
90
-
91
- /** @type {import('@sveltejs/kit').Config} */
92
- const config = {
93
- // Consult https://svelte.dev/docs/kit/integrations
94
- // for more information about preprocessors
95
- preprocess: vitePreprocess(),
96
-
97
- kit: {
98
- // ...
99
- paths: {
100
- relative: false, // Required for PostHog session replay to work correctly
101
- },
102
- // ...
103
- }
104
- };
105
-
106
- export default config;
107
-
108
- --------------------------------------------------`;
109
- };
110
- exports.getSvelteDocumentation = getSvelteDocumentation;
111
- //# 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oEAmDE,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDAkDiD,CAAC;AACpD,CAAC,CAAC;AAnHW,QAAA,sBAAsB,0BAmHjC","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 capture_exceptions: true, // This enables capturing exceptions using Error Tracking, set to false if you don't want this\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>;