@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
|
@@ -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.runSvelteWizard = runSvelteWizard;
|
|
8
|
-
const clack_utils_1 = require("../utils/clack-utils");
|
|
9
|
-
const package_json_1 = require("../utils/package-json");
|
|
10
|
-
const clack_1 = __importDefault(require("../utils/clack"));
|
|
11
|
-
const constants_1 = require("../lib/constants");
|
|
12
|
-
const docs_1 = require("./docs");
|
|
13
|
-
const analytics_1 = require("../utils/analytics");
|
|
14
|
-
const file_utils_1 = require("../utils/file-utils");
|
|
15
|
-
const clack_utils_2 = require("../utils/clack-utils");
|
|
16
|
-
const add_editor_rules_1 = require("../steps/add-editor-rules");
|
|
17
|
-
const messages_1 = require("../lib/messages");
|
|
18
|
-
const steps_1 = require("../steps");
|
|
19
|
-
async function runSvelteWizard(options) {
|
|
20
|
-
(0, clack_utils_1.printWelcome)({
|
|
21
|
-
wizardName: 'PostHog Svelte wizard',
|
|
22
|
-
});
|
|
23
|
-
const aiConsent = await (0, clack_utils_1.askForAIConsent)(options);
|
|
24
|
-
if (!aiConsent) {
|
|
25
|
-
await (0, clack_utils_1.abort)('The Svelte wizard requires AI to get setup right now. Please view the docs to setup Svelte manually instead: https://posthog.com/docs/libraries/svelte', 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, '@sveltejs/kit', '@sveltejs/kit');
|
|
32
|
-
const svelteVersion = (0, package_json_1.getPackageVersion)('@sveltejs/kit', packageJson);
|
|
33
|
-
if (svelteVersion) {
|
|
34
|
-
analytics_1.analytics.setTag('svelte-version', svelteVersion);
|
|
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 { packageManager: packageManagerFromInstallStep } = await (0, clack_utils_1.installPackage)({
|
|
43
|
-
packageName: 'posthog-js',
|
|
44
|
-
packageNameDisplayLabel: 'posthog-js',
|
|
45
|
-
alreadyInstalled: !!packageJson?.dependencies?.['posthog-js'],
|
|
46
|
-
forceInstall: options.forceInstall,
|
|
47
|
-
askBeforeUpdating: false,
|
|
48
|
-
installDir: options.installDir,
|
|
49
|
-
integration: constants_1.Integration.svelte,
|
|
50
|
-
});
|
|
51
|
-
await (0, clack_utils_1.installPackage)({
|
|
52
|
-
packageName: 'posthog-node',
|
|
53
|
-
packageNameDisplayLabel: 'posthog-node',
|
|
54
|
-
packageManager: packageManagerFromInstallStep,
|
|
55
|
-
alreadyInstalled: !!packageJson?.dependencies?.['posthog-node'],
|
|
56
|
-
forceInstall: options.forceInstall,
|
|
57
|
-
askBeforeUpdating: false,
|
|
58
|
-
installDir: options.installDir,
|
|
59
|
-
integration: constants_1.Integration.svelte,
|
|
60
|
-
});
|
|
61
|
-
const relevantFiles = await (0, file_utils_1.getRelevantFilesForIntegration)({
|
|
62
|
-
installDir: options.installDir,
|
|
63
|
-
integration: constants_1.Integration.svelte,
|
|
64
|
-
});
|
|
65
|
-
const installationDocumentation = (0, docs_1.getSvelteDocumentation)({
|
|
66
|
-
language: typeScriptDetected ? 'typescript' : 'javascript',
|
|
67
|
-
});
|
|
68
|
-
clack_1.default.log.info(`Reviewing PostHog documentation for Svelte`);
|
|
69
|
-
const filesToChange = await (0, file_utils_1.getFilesToChange)({
|
|
70
|
-
integration: constants_1.Integration.svelte,
|
|
71
|
-
relevantFiles,
|
|
72
|
-
documentation: installationDocumentation,
|
|
73
|
-
accessToken,
|
|
74
|
-
cloudRegion,
|
|
75
|
-
projectId,
|
|
76
|
-
});
|
|
77
|
-
await (0, file_utils_1.generateFileChangesForIntegration)({
|
|
78
|
-
integration: constants_1.Integration.svelte,
|
|
79
|
-
filesToChange,
|
|
80
|
-
accessToken,
|
|
81
|
-
installDir: options.installDir,
|
|
82
|
-
documentation: installationDocumentation,
|
|
83
|
-
cloudRegion,
|
|
84
|
-
projectId,
|
|
85
|
-
});
|
|
86
|
-
const { relativeEnvFilePath, addedEnvVariables } = await (0, steps_1.addOrUpdateEnvironmentVariablesStep)({
|
|
87
|
-
variables: {
|
|
88
|
-
['PUBLIC_POSTHOG_KEY']: projectApiKey,
|
|
89
|
-
['PUBLIC_POSTHOG_HOST']: host,
|
|
90
|
-
},
|
|
91
|
-
installDir: options.installDir,
|
|
92
|
-
integration: constants_1.Integration.svelte,
|
|
93
|
-
});
|
|
94
|
-
const packageManagerForOutro = packageManagerFromInstallStep ?? (await (0, clack_utils_1.getPackageManager)(options));
|
|
95
|
-
await (0, steps_1.runPrettierStep)({
|
|
96
|
-
installDir: options.installDir,
|
|
97
|
-
integration: constants_1.Integration.svelte,
|
|
98
|
-
});
|
|
99
|
-
const addedEditorRules = await (0, add_editor_rules_1.addEditorRulesStep)({
|
|
100
|
-
installDir: options.installDir,
|
|
101
|
-
rulesName: 'svelte-rules.md',
|
|
102
|
-
integration: constants_1.Integration.svelte,
|
|
103
|
-
});
|
|
104
|
-
await (0, steps_1.addMCPServerToClientsStep)({
|
|
105
|
-
cloudRegion,
|
|
106
|
-
integration: constants_1.Integration.svelte,
|
|
107
|
-
ci: options.ci,
|
|
108
|
-
});
|
|
109
|
-
const outroMessage = (0, messages_1.getOutroMessage)({
|
|
110
|
-
options,
|
|
111
|
-
integration: constants_1.Integration.svelte,
|
|
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=svelte-wizard.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"svelte-wizard.js","sourceRoot":"","sources":["../../../src/svelte/svelte-wizard.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;AAkC9B,0CAuIC;AAvKD,sDAW8B;AAC9B,wDAA+E;AAC/E,2DAAmC;AACnC,gDAA+C;AAC/C,iCAAgD;AAChD,kDAA+C;AAC/C,oDAI6B;AAE7B,sDAAyD;AACzD,gEAA+D;AAC/D,8CAAkD;AAClD,oCAIkB;AAEX,KAAK,UAAU,eAAe,CAAC,OAAsB;IAC1D,IAAA,0BAAY,EAAC;QACX,UAAU,EAAE,uBAAuB;KACpC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAEjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAA,mBAAK,EACT,wJAAwJ,EACxJ,CAAC,CACF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,IAAA,+BAAiB,GAAE,CAAC,CAAC;IAEvE,MAAM,kBAAkB,GAAG,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,IAAA,+CAAiC,EAAC,OAAO,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC;IAErD,MAAM,IAAA,sCAAwB,EAAC,WAAW,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAE9E,MAAM,aAAa,GAAG,IAAA,gCAAiB,EAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAEtE,IAAI,aAAa,EAAE,CAAC;QAClB,qBAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,GACnD,MAAM,IAAA,oCAAsB,EAAC;QAC3B,GAAG,OAAO;QACV,WAAW;KACZ,CAAC,CAAC;IAEL,MAAM,mBAAmB,GAAG,IAAA,kCAAmB,EAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE3E,qBAAS,CAAC,MAAM,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;IAE/D,MAAM,EAAE,cAAc,EAAE,6BAA6B,EAAE,GACrD,MAAM,IAAA,4BAAc,EAAC;QACnB,WAAW,EAAE,YAAY;QACzB,uBAAuB,EAAE,YAAY;QACrC,gBAAgB,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,YAAY,CAAC;QAC7D,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,KAAK;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IAEL,MAAM,IAAA,4BAAc,EAAC;QACnB,WAAW,EAAE,cAAc;QAC3B,uBAAuB,EAAE,cAAc;QACvC,cAAc,EAAE,6BAA6B;QAC7C,gBAAgB,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,cAAc,CAAC;QAC/D,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,iBAAiB,EAAE,KAAK;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,IAAA,2CAA8B,EAAC;QACzD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IAEH,MAAM,yBAAyB,GAAG,IAAA,6BAAsB,EAAC;QACvD,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;KAC3D,CAAC,CAAC;IAEH,eAAK,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAE7D,MAAM,aAAa,GAAG,MAAM,IAAA,6BAAgB,EAAC;QAC3C,WAAW,EAAE,uBAAW,CAAC,MAAM;QAC/B,aAAa;QACb,aAAa,EAAE,yBAAyB;QACxC,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,IAAA,8CAAiC,EAAC;QACtC,WAAW,EAAE,uBAAW,CAAC,MAAM;QAC/B,aAAa;QACb,WAAW;QACX,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,aAAa,EAAE,yBAAyB;QACxC,WAAW;QACX,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAC9C,MAAM,IAAA,2CAAmC,EAAC;QACxC,SAAS,EAAE;YACT,CAAC,oBAAoB,CAAC,EAAE,aAAa;YACrC,CAAC,qBAAqB,CAAC,EAAE,IAAI;SAC9B;QACD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IAEL,MAAM,sBAAsB,GAC1B,6BAA6B,IAAI,CAAC,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC,CAAC;IAEtE,MAAM,IAAA,uBAAe,EAAC;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,uBAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,MAAM,IAAA,qCAAkB,EAAC;QAChD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,SAAS,EAAE,iBAAiB;QAC5B,WAAW,EAAE,uBAAW,CAAC,MAAM;KAChC,CAAC,CAAC;IAEH,MAAM,IAAA,iCAAyB,EAAC;QAC9B,WAAW;QACX,WAAW,EAAE,uBAAW,CAAC,MAAM;QAC/B,EAAE,EAAE,OAAO,CAAC,EAAE;KACf,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,0BAAe,EAAC;QACnC,OAAO;QACP,WAAW,EAAE,uBAAW,CAAC,MAAM;QAC/B,WAAW;QACX,gBAAgB;QAChB,cAAc,EAAE,sBAAsB;QACtC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;QACnE,eAAe,EAAE,EAAE;KACpB,CAAC,CAAC;IAEH,eAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAE1B,MAAM,qBAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC","sourcesContent":["/* eslint-disable max-lines */\n\nimport {\n abort,\n askForAIConsent,\n confirmContinueIfNoOrDirtyGitRepo,\n ensurePackageIsInstalled,\n getOrAskForProjectData,\n getPackageDotJson,\n getPackageManager,\n installPackage,\n isUsingTypeScript,\n printWelcome,\n} from '../utils/clack-utils';\nimport { getPackageVersion, hasPackageInstalled } from '../utils/package-json';\nimport clack from '../utils/clack';\nimport { Integration } from '../lib/constants';\nimport { getSvelteDocumentation } 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 { addEditorRulesStep } from '../steps/add-editor-rules';\nimport { getOutroMessage } from '../lib/messages';\nimport {\n addMCPServerToClientsStep,\n addOrUpdateEnvironmentVariablesStep,\n runPrettierStep,\n} from '../steps';\n\nexport async function runSvelteWizard(options: WizardOptions): Promise<void> {\n printWelcome({\n wizardName: 'PostHog Svelte wizard',\n });\n\n const aiConsent = await askForAIConsent(options);\n\n if (!aiConsent) {\n await abort(\n 'The Svelte wizard requires AI to get setup right now. Please view the docs to setup Svelte manually instead: https://posthog.com/docs/libraries/svelte',\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, '@sveltejs/kit', '@sveltejs/kit');\n\n const svelteVersion = getPackageVersion('@sveltejs/kit', packageJson);\n\n if (svelteVersion) {\n analytics.setTag('svelte-version', svelteVersion);\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.svelte,\n });\n\n await installPackage({\n packageName: 'posthog-node',\n packageNameDisplayLabel: 'posthog-node',\n packageManager: packageManagerFromInstallStep,\n alreadyInstalled: !!packageJson?.dependencies?.['posthog-node'],\n forceInstall: options.forceInstall,\n askBeforeUpdating: false,\n installDir: options.installDir,\n integration: Integration.svelte,\n });\n\n const relevantFiles = await getRelevantFilesForIntegration({\n installDir: options.installDir,\n integration: Integration.svelte,\n });\n\n const installationDocumentation = getSvelteDocumentation({\n language: typeScriptDetected ? 'typescript' : 'javascript',\n });\n\n clack.log.info(`Reviewing PostHog documentation for Svelte`);\n\n const filesToChange = await getFilesToChange({\n integration: Integration.svelte,\n relevantFiles,\n documentation: installationDocumentation,\n accessToken,\n cloudRegion,\n projectId,\n });\n\n await generateFileChangesForIntegration({\n integration: Integration.svelte,\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 ['PUBLIC_POSTHOG_KEY']: projectApiKey,\n ['PUBLIC_POSTHOG_HOST']: host,\n },\n installDir: options.installDir,\n integration: Integration.svelte,\n });\n\n const packageManagerForOutro =\n packageManagerFromInstallStep ?? (await getPackageManager(options));\n\n await runPrettierStep({\n installDir: options.installDir,\n integration: Integration.svelte,\n });\n\n const addedEditorRules = await addEditorRulesStep({\n installDir: options.installDir,\n rulesName: 'svelte-rules.md',\n integration: Integration.svelte,\n });\n\n await addMCPServerToClientsStep({\n cloudRegion,\n integration: Integration.svelte,\n ci: options.ci,\n });\n\n const outroMessage = getOutroMessage({\n options,\n integration: Integration.svelte,\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"]}
|
package/dist/src/utils/errors.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RateLimitError = void 0;
|
|
4
|
-
class RateLimitError extends Error {
|
|
5
|
-
constructor() {
|
|
6
|
-
super('Wizard usage limit reached.');
|
|
7
|
-
this.name = 'RateLimitError';
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.RateLimitError = RateLimitError;
|
|
11
|
-
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AALD,wCAKC","sourcesContent":["export class RateLimitError extends Error {\n constructor() {\n super('Wizard usage limit reached.');\n this.name = 'RateLimitError';\n }\n}\n"]}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { ZodSchema } from 'zod';
|
|
2
|
-
import type { AIModel, CloudRegion } from './types';
|
|
3
|
-
export interface QueryOptions<S> {
|
|
4
|
-
message: string;
|
|
5
|
-
model?: AIModel;
|
|
6
|
-
region: CloudRegion;
|
|
7
|
-
schema: ZodSchema<S>;
|
|
8
|
-
accessToken: string;
|
|
9
|
-
projectId: number;
|
|
10
|
-
}
|
|
11
|
-
export declare const query: <S>({ message, model, region, schema, accessToken, projectId: _, }: QueryOptions<S>) => Promise<S>;
|
package/dist/src/utils/query.js
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.query = void 0;
|
|
40
|
-
const axios_1 = __importDefault(require("axios"));
|
|
41
|
-
const zod_to_json_schema_1 = require("zod-to-json-schema");
|
|
42
|
-
const urls_1 = require("./urls");
|
|
43
|
-
const analytics_1 = require("./analytics");
|
|
44
|
-
const axios_2 = require("axios");
|
|
45
|
-
const debug_1 = require("./debug");
|
|
46
|
-
const errors_1 = require("./errors");
|
|
47
|
-
const crypto = __importStar(require("node:crypto"));
|
|
48
|
-
const generateTraceId = () => {
|
|
49
|
-
const randomBytes = crypto.randomBytes(32);
|
|
50
|
-
return crypto.createHash('sha256').update(randomBytes).digest('hex');
|
|
51
|
-
};
|
|
52
|
-
const TRACE_ID = generateTraceId();
|
|
53
|
-
const query = async ({ message, model = 'o4-mini', region, schema, accessToken, projectId: _, // TODO: Use this to switch the wizard query endpoint over to the new LLM Gateway
|
|
54
|
-
}) => {
|
|
55
|
-
const fullSchema = (0, zod_to_json_schema_1.zodToJsonSchema)(schema, 'schema');
|
|
56
|
-
const jsonSchema = fullSchema.definitions;
|
|
57
|
-
(0, debug_1.debug)('Full schema:', JSON.stringify(fullSchema, null, 2));
|
|
58
|
-
(0, debug_1.debug)('Query request:', {
|
|
59
|
-
url: `${(0, urls_1.getCloudUrlFromRegion)(region)}/api/wizard/query`,
|
|
60
|
-
accessToken,
|
|
61
|
-
message: message.substring(0, 100) + '...',
|
|
62
|
-
json_schema: { ...jsonSchema, name: 'schema', strict: true },
|
|
63
|
-
});
|
|
64
|
-
const response = await axios_1.default
|
|
65
|
-
.post(`${(0, urls_1.getCloudUrlFromRegion)(region)}/api/wizard/query`, {
|
|
66
|
-
message,
|
|
67
|
-
model,
|
|
68
|
-
json_schema: { ...jsonSchema, name: 'schema', strict: true },
|
|
69
|
-
}, {
|
|
70
|
-
headers: {
|
|
71
|
-
Authorization: `Bearer ${accessToken}`,
|
|
72
|
-
'X-PostHog-Trace-Id': TRACE_ID,
|
|
73
|
-
...(process.env.RECORD_FIXTURES === 'true'
|
|
74
|
-
? { 'X-PostHog-Wizard-Fixture-Generation': true }
|
|
75
|
-
: {}),
|
|
76
|
-
},
|
|
77
|
-
})
|
|
78
|
-
.catch((error) => {
|
|
79
|
-
(0, debug_1.debug)('Query error:', error);
|
|
80
|
-
if (error instanceof axios_2.AxiosError) {
|
|
81
|
-
analytics_1.analytics.captureException(error, {
|
|
82
|
-
response_status_code: error.response?.status,
|
|
83
|
-
message,
|
|
84
|
-
model,
|
|
85
|
-
json_schema: jsonSchema,
|
|
86
|
-
type: 'wizard_query_error',
|
|
87
|
-
});
|
|
88
|
-
if (error.response?.status === 429) {
|
|
89
|
-
throw new errors_1.RateLimitError();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
throw error;
|
|
93
|
-
});
|
|
94
|
-
(0, debug_1.debug)('Query response:', {
|
|
95
|
-
status: response.status,
|
|
96
|
-
data: response.data,
|
|
97
|
-
});
|
|
98
|
-
const validation = schema.safeParse(response.data.data);
|
|
99
|
-
if (!validation.success) {
|
|
100
|
-
(0, debug_1.debug)('Validation error:', validation.error);
|
|
101
|
-
throw new Error(`Invalid response from wizard: ${validation.error.message}`);
|
|
102
|
-
}
|
|
103
|
-
if (process.env.NODE_ENV === 'test') {
|
|
104
|
-
const { fixtureTracker } = await import('../../e2e-tests/mocks/fixture-tracker.js');
|
|
105
|
-
const requestBody = JSON.stringify({
|
|
106
|
-
message,
|
|
107
|
-
model,
|
|
108
|
-
json_schema: { ...jsonSchema, name: 'schema', strict: true },
|
|
109
|
-
});
|
|
110
|
-
fixtureTracker.saveQueryFixture(requestBody, validation.data);
|
|
111
|
-
}
|
|
112
|
-
return validation.data;
|
|
113
|
-
};
|
|
114
|
-
exports.query = query;
|
|
115
|
-
//# sourceMappingURL=query.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/utils/query.ts"],"names":[],"mappings":"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","sourcesContent":["import axios from 'axios';\nimport type { ZodSchema } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport type { AIModel, CloudRegion } from './types';\nimport { getCloudUrlFromRegion } from './urls';\nimport { analytics } from './analytics';\nimport { AxiosError } from 'axios';\nimport { debug } from './debug';\nimport { RateLimitError } from './errors';\nimport * as crypto from 'node:crypto';\n\nconst generateTraceId = () => {\n const randomBytes = crypto.randomBytes(32);\n return crypto.createHash('sha256').update(randomBytes).digest('hex');\n};\n\nconst TRACE_ID = generateTraceId();\n\nexport interface QueryOptions<S> {\n message: string;\n model?: AIModel;\n region: CloudRegion;\n schema: ZodSchema<S>;\n accessToken: string;\n projectId: number;\n}\n\nexport const query = async <S>({\n message,\n model = 'o4-mini',\n region,\n schema,\n accessToken,\n projectId: _, // TODO: Use this to switch the wizard query endpoint over to the new LLM Gateway\n}: QueryOptions<S>): Promise<S> => {\n const fullSchema = zodToJsonSchema(schema, 'schema');\n const jsonSchema = fullSchema.definitions;\n\n debug('Full schema:', JSON.stringify(fullSchema, null, 2));\n debug('Query request:', {\n url: `${getCloudUrlFromRegion(region)}/api/wizard/query`,\n accessToken,\n message: message.substring(0, 100) + '...',\n json_schema: { ...jsonSchema, name: 'schema', strict: true },\n });\n\n const response = await axios\n .post<{ data: unknown }>(\n `${getCloudUrlFromRegion(region)}/api/wizard/query`,\n {\n message,\n model,\n json_schema: { ...jsonSchema, name: 'schema', strict: true },\n },\n {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'X-PostHog-Trace-Id': TRACE_ID,\n ...(process.env.RECORD_FIXTURES === 'true'\n ? { 'X-PostHog-Wizard-Fixture-Generation': true }\n : {}),\n },\n },\n )\n .catch((error) => {\n debug('Query error:', error);\n\n if (error instanceof AxiosError) {\n analytics.captureException(error, {\n response_status_code: error.response?.status,\n message,\n model,\n json_schema: jsonSchema,\n type: 'wizard_query_error',\n });\n\n if (error.response?.status === 429) {\n throw new RateLimitError();\n }\n }\n\n throw error;\n });\n\n debug('Query response:', {\n status: response.status,\n data: response.data,\n });\n\n const validation = schema.safeParse(response.data.data);\n\n if (!validation.success) {\n debug('Validation error:', validation.error);\n throw new Error(\n `Invalid response from wizard: ${validation.error.message}`,\n );\n }\n\n if (process.env.NODE_ENV === 'test') {\n const { fixtureTracker } = await import(\n '../../e2e-tests/mocks/fixture-tracker.js'\n );\n\n const requestBody = JSON.stringify({\n message,\n model,\n json_schema: { ...jsonSchema, name: 'schema', strict: true },\n });\n\n fixtureTracker.saveQueryFixture(requestBody, validation.data);\n }\n\n return validation.data;\n};\n"]}
|