@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.
- package/README.md +2 -1
- package/dist/bin.js +14 -1
- package/dist/bin.js.map +1 -1
- package/dist/src/__tests__/run.test.js +5 -5
- package/dist/src/__tests__/run.test.js.map +1 -1
- package/dist/src/android/android-wizard-agent.d.ts +6 -0
- package/dist/src/android/android-wizard-agent.js +140 -0
- package/dist/src/android/android-wizard-agent.js.map +1 -0
- package/dist/src/android/utils.d.ts +11 -0
- package/dist/src/android/utils.js +97 -0
- package/dist/src/android/utils.js.map +1 -0
- package/dist/src/angular/angular-wizard-agent.d.ts +4 -0
- package/dist/src/angular/angular-wizard-agent.js +67 -0
- package/dist/src/angular/angular-wizard-agent.js.map +1 -0
- package/dist/src/angular/utils.d.ts +4 -0
- package/dist/src/angular/utils.js +9 -0
- package/dist/src/angular/utils.js.map +1 -0
- package/dist/src/astro/astro-wizard-agent.d.ts +7 -0
- package/dist/src/astro/astro-wizard-agent.js +102 -0
- package/dist/src/astro/astro-wizard-agent.js.map +1 -0
- package/dist/src/astro/utils.d.ts +17 -0
- package/dist/src/astro/utils.js +163 -0
- package/dist/src/astro/utils.js.map +1 -0
- package/dist/src/django/django-wizard-agent.d.ts +8 -5
- package/dist/src/django/django-wizard-agent.js +62 -51
- package/dist/src/django/django-wizard-agent.js.map +1 -1
- package/dist/src/django/utils.d.ts +1 -1
- package/dist/src/django/utils.js +3 -22
- package/dist/src/django/utils.js.map +1 -1
- package/dist/src/fastapi/fastapi-wizard-agent.d.ts +7 -0
- package/dist/src/fastapi/fastapi-wizard-agent.js +217 -0
- package/dist/src/fastapi/fastapi-wizard-agent.js.map +1 -0
- package/dist/src/fastapi/utils.d.ts +26 -0
- package/dist/src/fastapi/utils.js +258 -0
- package/dist/src/fastapi/utils.js.map +1 -0
- package/dist/src/flask/flask-wizard-agent.d.ts +8 -5
- package/dist/src/flask/flask-wizard-agent.js +67 -51
- package/dist/src/flask/flask-wizard-agent.js.map +1 -1
- package/dist/src/flask/utils.d.ts +1 -1
- package/dist/src/flask/utils.js +3 -22
- package/dist/src/flask/utils.js.map +1 -1
- package/dist/src/laravel/laravel-wizard-agent.d.ts +10 -5
- package/dist/src/laravel/laravel-wizard-agent.js +50 -53
- package/dist/src/laravel/laravel-wizard-agent.js.map +1 -1
- package/dist/src/laravel/utils.d.ts +1 -1
- package/dist/src/laravel/utils.js +3 -22
- package/dist/src/laravel/utils.js.map +1 -1
- package/dist/src/lib/__tests__/agent-interface.test.js +1 -0
- package/dist/src/lib/__tests__/agent-interface.test.js.map +1 -1
- package/dist/src/lib/agent-interface.d.ts +4 -1
- package/dist/src/lib/agent-interface.js +36 -3
- package/dist/src/lib/agent-interface.js.map +1 -1
- package/dist/src/lib/agent-runner.js +69 -6
- package/dist/src/lib/agent-runner.js.map +1 -1
- package/dist/src/lib/api.d.ts +4 -4
- package/dist/src/lib/constants.d.ts +15 -14
- package/dist/src/lib/constants.js +17 -40
- package/dist/src/lib/constants.js.map +1 -1
- package/dist/src/lib/env-file-tools.d.ts +11 -0
- package/dist/src/lib/env-file-tools.js +154 -0
- package/dist/src/lib/env-file-tools.js.map +1 -0
- package/dist/src/lib/framework-config.d.ts +34 -16
- package/dist/src/lib/framework-config.js.map +1 -1
- package/dist/src/lib/registry.d.ts +3 -0
- package/dist/src/lib/registry.js +41 -0
- package/dist/src/lib/registry.js.map +1 -0
- package/dist/src/nextjs/nextjs-wizard-agent.d.ts +7 -5
- package/dist/src/nextjs/nextjs-wizard-agent.js +16 -79
- package/dist/src/nextjs/nextjs-wizard-agent.js.map +1 -1
- package/dist/src/nextjs/utils.d.ts +1 -1
- package/dist/src/nextjs/utils.js +3 -22
- package/dist/src/nextjs/utils.js.map +1 -1
- package/dist/src/nuxt/nuxt-wizard-agent.d.ts +6 -0
- package/dist/src/nuxt/nuxt-wizard-agent.js +77 -0
- package/dist/src/nuxt/nuxt-wizard-agent.js.map +1 -0
- package/dist/src/python/python-wizard-agent.d.ts +7 -0
- package/dist/src/python/python-wizard-agent.js +269 -0
- package/dist/src/python/python-wizard-agent.js.map +1 -0
- package/dist/src/python/utils.d.ts +28 -0
- package/dist/src/python/utils.js +147 -0
- package/dist/src/python/utils.js.map +1 -0
- package/dist/src/react-native/react-native-wizard-agent.d.ts +7 -0
- package/dist/src/react-native/react-native-wizard-agent.js +91 -0
- package/dist/src/react-native/react-native-wizard-agent.js.map +1 -0
- package/dist/src/react-native/utils.d.ts +8 -0
- package/dist/src/react-native/utils.js +31 -0
- package/dist/src/react-native/utils.js.map +1 -0
- package/dist/src/react-router/react-router-wizard-agent.d.ts +7 -5
- package/dist/src/react-router/react-router-wizard-agent.js +18 -80
- package/dist/src/react-router/react-router-wizard-agent.js.map +1 -1
- package/dist/src/react-router/utils.d.ts +1 -1
- package/dist/src/react-router/utils.js +3 -21
- package/dist/src/react-router/utils.js.map +1 -1
- package/dist/src/run.d.ts +1 -0
- package/dist/src/run.js +28 -76
- package/dist/src/run.js.map +1 -1
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +6 -6
- package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +6 -6
- package/dist/src/svelte/svelte-wizard-agent.d.ts +4 -0
- package/dist/src/svelte/svelte-wizard-agent.js +60 -0
- package/dist/src/svelte/svelte-wizard-agent.js.map +1 -0
- package/dist/src/swift/swift-wizard-agent.d.ts +7 -0
- package/dist/src/swift/swift-wizard-agent.js +141 -0
- package/dist/src/swift/swift-wizard-agent.js.map +1 -0
- package/dist/src/swift/utils.d.ts +8 -0
- package/dist/src/swift/utils.js +105 -0
- package/dist/src/swift/utils.js.map +1 -0
- package/dist/src/tanstack-router/tanstack-router-wizard-agent.d.ts +7 -0
- package/dist/src/tanstack-router/tanstack-router-wizard-agent.js +93 -0
- package/dist/src/tanstack-router/tanstack-router-wizard-agent.js.map +1 -0
- package/dist/src/tanstack-router/utils.d.ts +17 -0
- package/dist/src/tanstack-router/utils.js +192 -0
- package/dist/src/tanstack-router/utils.js.map +1 -0
- package/dist/src/tanstack-start/tanstack-start-wizard-agent.d.ts +4 -0
- package/dist/src/tanstack-start/tanstack-start-wizard-agent.js +66 -0
- package/dist/src/tanstack-start/tanstack-start-wizard-agent.js.map +1 -0
- package/dist/src/tanstack-start/utils.d.ts +4 -0
- package/dist/src/tanstack-start/utils.js +9 -0
- package/dist/src/tanstack-start/utils.js.map +1 -0
- package/dist/src/utils/__tests__/semver.test.d.ts +1 -0
- package/dist/src/utils/__tests__/semver.test.js +117 -0
- package/dist/src/utils/__tests__/semver.test.js.map +1 -0
- package/dist/src/utils/clack-utils.js +3 -5
- package/dist/src/utils/clack-utils.js.map +1 -1
- package/dist/src/utils/debug.d.ts +2 -0
- package/dist/src/utils/debug.js +17 -5
- package/dist/src/utils/debug.js.map +1 -1
- package/dist/src/utils/file-utils.d.ts +1 -31
- package/dist/src/utils/file-utils.js +0 -163
- package/dist/src/utils/file-utils.js.map +1 -1
- package/dist/src/utils/semver.d.ts +16 -0
- package/dist/src/utils/semver.js +37 -0
- package/dist/src/utils/semver.js.map +1 -1
- package/dist/src/utils/types.d.ts +4 -0
- package/dist/src/utils/types.js.map +1 -1
- package/dist/src/vue/vue-wizard-agent.d.ts +4 -0
- package/dist/src/vue/vue-wizard-agent.js +64 -0
- package/dist/src/vue/vue-wizard-agent.js.map +1 -0
- package/package.json +1 -1
- package/dist/src/astro/astro-wizard.d.ts +0 -2
- package/dist/src/astro/astro-wizard.js +0 -89
- package/dist/src/astro/astro-wizard.js.map +0 -1
- package/dist/src/astro/docs.d.ts +0 -4
- package/dist/src/astro/docs.js +0 -101
- package/dist/src/astro/docs.js.map +0 -1
- package/dist/src/lib/config.d.ts +0 -104
- package/dist/src/lib/config.js +0 -368
- package/dist/src/lib/config.js.map +0 -1
- package/dist/src/lib/messages.d.ts +0 -16
- package/dist/src/lib/messages.js +0 -66
- package/dist/src/lib/messages.js.map +0 -1
- package/dist/src/lib/prompts.d.ts +0 -16
- package/dist/src/lib/prompts.js +0 -83
- package/dist/src/lib/prompts.js.map +0 -1
- package/dist/src/react/docs.d.ts +0 -4
- package/dist/src/react/docs.js +0 -49
- package/dist/src/react/docs.js.map +0 -1
- package/dist/src/react/react-wizard.d.ts +0 -2
- package/dist/src/react/react-wizard.js +0 -121
- package/dist/src/react/react-wizard.js.map +0 -1
- package/dist/src/react-native/docs.d.ts +0 -5
- package/dist/src/react-native/docs.js +0 -31
- package/dist/src/react-native/docs.js.map +0 -1
- package/dist/src/react-native/react-native-wizard.d.ts +0 -2
- package/dist/src/react-native/react-native-wizard.js +0 -128
- package/dist/src/react-native/react-native-wizard.js.map +0 -1
- package/dist/src/svelte/docs.d.ts +0 -3
- package/dist/src/svelte/docs.js +0 -111
- package/dist/src/svelte/docs.js.map +0 -1
- package/dist/src/svelte/svelte-wizard.d.ts +0 -2
- package/dist/src/svelte/svelte-wizard.js +0 -121
- package/dist/src/svelte/svelte-wizard.js.map +0 -1
- package/dist/src/utils/errors.d.ts +0 -3
- package/dist/src/utils/errors.js +0 -11
- package/dist/src/utils/errors.js.map +0 -1
- package/dist/src/utils/query.d.ts +0 -11
- package/dist/src/utils/query.js +0 -115
- package/dist/src/utils/query.js.map +0 -1
package/dist/src/react/docs.js
DELETED
|
@@ -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,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,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,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"]}
|
package/dist/src/svelte/docs.js
DELETED
|
@@ -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"]}
|