pathpida
Version:
TypeScript friendly pages and static path generator for Next.js
51 lines (46 loc) • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createNextTemplate = void 0;
const parseAppDir_1 = require("./parseAppDir");
const parsePagesDir_1 = require("./parsePagesDir");
const createNextTemplate = (input, output, ignorePath, appDir, pageExtensions = ['tsx', 'ts', 'jsx', 'js']) => {
const appDirData = appDir
? (0, parseAppDir_1.parseAppDir)(appDir.input, output, ignorePath)
: { imports: [], text: '' };
const pagesDir = input
? (0, parsePagesDir_1.parsePagesDir)(input, output, ignorePath, pageExtensions)
: { imports: [], text: '' };
const imports = [...appDirData.imports, ...pagesDir.imports];
return `${imports.join('\n')}${imports.length ? '\n\n' : ''}${appDir
? `const buildSuffix = (url?: {
query?: Record<string, string | number | boolean | Array<string | number | boolean>>,
hash?: string
}) => {
const query = url?.query;
const hash = url?.hash;
if (!query && !hash) return '';
const search = (() => {
if (!query) return '';
const params = new URLSearchParams();
Object.entries(query).forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach((item) =>
params.append(key, String(item))
);
} else {
params.set(key, String(value));
}
});
return \`?\${params.toString()}\`;
})();
return \`\${search}\${hash ? \`#\${hash}\` : ''}\`;
};
`
: ''}export const pagesPath = {
${appDirData.text}${appDirData.text && pagesDir.text ? ',\n' : ''}${pagesDir.text}
};
export type PagesPath = typeof pagesPath;
`;
};
exports.createNextTemplate = createNextTemplate;
//# sourceMappingURL=createNextTemplate.js.map