next-openapi-gen 0.7.4 → 0.7.6

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.
@@ -49,6 +49,22 @@ function getDocsPage(ui, outputFile) {
49
49
  }
50
50
  return DocsComponent(outputFile);
51
51
  }
52
+ function getDocsPageInstallFlags(ui, packageManager) {
53
+ let installFlags = "";
54
+ if (ui === "swagger") {
55
+ // @temp: swagger-ui-react does not support React 19 now.
56
+ if (packageManager === "pnpm") {
57
+ installFlags = "--no-strict-peer-dependencies";
58
+ }
59
+ else if (packageManager === "yarn") {
60
+ installFlags = ""; // flag for legacy peer deps is not needed for yarn
61
+ }
62
+ else {
63
+ installFlags = "--legacy-peer-deps";
64
+ }
65
+ }
66
+ return installFlags;
67
+ }
52
68
  function getDocsPageDependencies(ui) {
53
69
  let deps = [];
54
70
  if (ui === "scalar") {
@@ -85,8 +101,9 @@ async function installDependencies(ui) {
85
101
  const packageManager = await getPackageManager();
86
102
  const installCmd = `${packageManager} ${packageManager === "npm" ? "install" : "add"}`;
87
103
  const deps = getDocsPageDependencies(ui);
104
+ const flags = getDocsPageInstallFlags(ui, packageManager);
88
105
  spinner.succeed(`Installing ${deps} dependencies...`);
89
- const resp = await execPromise(`${installCmd} ${deps}`);
106
+ const resp = await execPromise(`${installCmd} ${deps} ${flags}`);
90
107
  spinner.succeed(`Successfully installed ${deps}.`);
91
108
  }
92
109
  function extendOpenApiTemplate(spec, options) {
@@ -1,8 +1,4 @@
1
- export const swaggerDeps = [
2
- "swagger-ui",
3
- "swagger-ui-react",
4
- "--legacy-peer-deps", // @temp: swagger-ui-react does not support React 19 now.
5
- ];
1
+ export const swaggerDeps = ["swagger-ui", "swagger-ui-react"];
6
2
  export function SwaggerUI(outputFile) {
7
3
  return `
8
4
  import "swagger-ui-react/swagger-ui.css";
@@ -265,6 +265,8 @@ export class RouteProcessor {
265
265
  relativePath = relativePath.replace(/\/route\.tsx?$/, "");
266
266
  // Convert directory separators to URL path format
267
267
  relativePath = relativePath.replaceAll("\\", "/");
268
+ // Remove Next.js route groups (folders in parentheses like (authenticated), (marketing))
269
+ relativePath = relativePath.replace(/\/\([^)]+\)/g, "");
268
270
  // Convert Next.js dynamic route syntax to OpenAPI parameter syntax
269
271
  relativePath = relativePath.replace(/\/\[([^\]]+)\]/g, "/{$1}");
270
272
  // Handle catch-all routes ([...param])
@@ -277,6 +279,7 @@ export class RouteProcessor {
277
279
  .replace(/route\.tsx?$/, "")
278
280
  .replaceAll("\\", "/")
279
281
  .replace(/\/$/, "")
282
+ .replace(/\/\([^)]+\)/g, "") // Remove route groups for pages router too
280
283
  .replace(/\/\[([^\]]+)\]/g, "/{$1}") // Replace [param] with {param}
281
284
  .replace(/\/\[\.\.\.(.*)\]/g, "/{$1}"); // Replace [...param] with {param}
282
285
  }
@@ -87,7 +87,7 @@ export default {
87
87
  },
88
88
  apiDir: "./src/app/api",
89
89
  schemaDir: "./src",
90
- schemaType: "zod",
90
+ schemaType: "zod", // or "typescript"
91
91
  docsUrl: "api-docs",
92
92
  ui: "scalar",
93
93
  outputFile: "openapi.json",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-openapi-gen",
3
- "version": "0.7.4",
3
+ "version": "0.7.6",
4
4
  "description": "Automatically generate OpenAPI 3.0 documentation from Next.js projects, with support for Zod schemas and TypeScript types.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",