@posthog/wizard
Version:
The PostHog wizard helps you to configure your project
75 lines • 2.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isNonInteractiveEnvironment = isNonInteractiveEnvironment;
exports.readEnvironment = readEnvironment;
exports.detectEnvVarPrefix = detectEnvVarPrefix;
const read_env_1 = __importDefault(require("read-env"));
const clack_utils_1 = require("./clack-utils");
const fast_glob_1 = __importDefault(require("fast-glob"));
const constants_1 = require("../lib/constants");
function isNonInteractiveEnvironment() {
if (constants_1.IS_DEV) {
return false;
}
if (!process.stdout.isTTY || !process.stderr.isTTY) {
return true;
}
return false;
}
function readEnvironment() {
const result = (0, read_env_1.default)('POSTHOG_WIZARD');
return result;
}
async function detectEnvVarPrefix(options) {
const packageJson = await (0, clack_utils_1.getPackageDotJson)(options);
const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
const has = (name) => name in deps;
const hasAnyFile = async (patterns) => {
const matches = await (0, fast_glob_1.default)(patterns, {
cwd: options.installDir,
absolute: false,
onlyFiles: true,
ignore: ['**/node_modules/**'],
});
return matches.length > 0;
};
// --- Next.js
if (has('next') || (await hasAnyFile(['**/next.config.{js,ts,mjs,cjs}']))) {
return 'NEXT_PUBLIC_';
}
// --- Create React App
if (has('react-scripts') ||
has('create-react-app') ||
(await hasAnyFile(['**/config-overrides.js']))) {
return 'REACT_APP_';
}
// --- Vite (vanilla, TanStack, Solid, etc.)
// Note: Vite does not need PUBLIC_ but we use it to follow the docs, to improve the chances of an LLM getting it right.
if (has('vite') || (await hasAnyFile(['**/vite.config.{js,ts,mjs,cjs}']))) {
return 'VITE_PUBLIC_';
}
// --- SvelteKit
if (has('@sveltejs/kit') ||
(await hasAnyFile(['**/svelte.config.{js,ts}']))) {
return 'PUBLIC_';
}
// --- TanStack Start (uses Vite)
if (has('@tanstack/start') ||
(await hasAnyFile(['**/tanstack.config.{js,ts}']))) {
return 'VITE_PUBLIC_';
}
// --- SolidStart (uses Vite)
if (has('solid-start') || (await hasAnyFile(['**/solid.config.{js,ts}']))) {
return 'VITE_PUBLIC_';
}
// --- Astro
if (has('astro') || (await hasAnyFile(['**/astro.config.{js,ts,mjs}']))) {
return 'PUBLIC_';
}
// We default to Vite if we can't detect a specific framework, since it's the most commonly used.
return 'VITE_PUBLIC_';
}
//# sourceMappingURL=environment.js.map