@posthog/wizard
Version:
The PostHog wizard helps you to configure your project
85 lines • 3.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getNextJsRouterName = exports.IGNORE_PATTERNS = exports.NextJsRouter = void 0;
exports.getNextJsVersionBucket = getNextJsVersionBucket;
exports.getNextJsRouter = getNextJsRouter;
const semver_1 = require("semver");
const fast_glob_1 = __importDefault(require("fast-glob"));
const clack_utils_1 = require("../utils/clack-utils");
const clack_1 = __importDefault(require("../utils/clack"));
const constants_1 = require("../lib/constants");
function getNextJsVersionBucket(version) {
if (!version) {
return 'none';
}
try {
const minVer = (0, semver_1.minVersion)(version);
if (!minVer) {
return 'invalid';
}
const majorVersion = (0, semver_1.major)(minVer);
if (majorVersion >= 11) {
return `${majorVersion}.x`;
}
return '<11.0.0';
}
catch {
return 'unknown';
}
}
var NextJsRouter;
(function (NextJsRouter) {
NextJsRouter["APP_ROUTER"] = "app-router";
NextJsRouter["PAGES_ROUTER"] = "pages-router";
})(NextJsRouter || (exports.NextJsRouter = NextJsRouter = {}));
exports.IGNORE_PATTERNS = [
'**/node_modules/**',
'**/dist/**',
'**/build/**',
'**/public/**',
'**/.next/**',
];
async function getNextJsRouter({ installDir, }) {
const pagesMatches = await (0, fast_glob_1.default)('**/pages/_app.@(ts|tsx|js|jsx)', {
dot: true,
cwd: installDir,
ignore: exports.IGNORE_PATTERNS,
});
const hasPagesDir = pagesMatches.length > 0;
const appMatches = await (0, fast_glob_1.default)('**/app/**/layout.@(ts|tsx|js|jsx)', {
dot: true,
cwd: installDir,
ignore: exports.IGNORE_PATTERNS,
});
const hasAppDir = appMatches.length > 0;
if (hasPagesDir && !hasAppDir) {
clack_1.default.log.info(`Detected ${(0, exports.getNextJsRouterName)(NextJsRouter.PAGES_ROUTER)} 📃`);
return NextJsRouter.PAGES_ROUTER;
}
if (hasAppDir && !hasPagesDir) {
clack_1.default.log.info(`Detected ${(0, exports.getNextJsRouterName)(NextJsRouter.APP_ROUTER)} 📱`);
return NextJsRouter.APP_ROUTER;
}
const result = await (0, clack_utils_1.abortIfCancelled)(clack_1.default.select({
message: 'What router are you using?',
options: [
{
label: (0, exports.getNextJsRouterName)(NextJsRouter.APP_ROUTER),
value: NextJsRouter.APP_ROUTER,
},
{
label: (0, exports.getNextJsRouterName)(NextJsRouter.PAGES_ROUTER),
value: NextJsRouter.PAGES_ROUTER,
},
],
}), constants_1.Integration.nextjs);
return result;
}
const getNextJsRouterName = (router) => {
return router === NextJsRouter.APP_ROUTER ? 'app router' : 'pages router';
};
exports.getNextJsRouterName = getNextJsRouterName;
//# sourceMappingURL=utils.js.map