@omer-x/next-openapi-json-generator 1.2.0 → 1.2.2

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/dist/index.cjs CHANGED
@@ -122,6 +122,33 @@ async function isDocumentedRoute(routePath2) {
122
122
  var import_promises3 = __toESM(require("fs/promises"), 1);
123
123
  var import_node_path2 = __toESM(require("path"), 1);
124
124
 
125
+ // src/core/injectSchemas.ts
126
+ function generateRandomString(length) {
127
+ return [...Array(length)].map(() => Math.random().toString(36)[2]).join("");
128
+ }
129
+ function preserveStrings(code2) {
130
+ let replacements = {};
131
+ const output = code2.replace(/(['"`])([^'`"]+)\1/g, (replacedString) => {
132
+ const replacementId = generateRandomString(32);
133
+ replacements = {
134
+ ...replacements,
135
+ [replacementId]: replacedString
136
+ };
137
+ return `<@~${replacementId}~@>`;
138
+ });
139
+ return { output, replacements };
140
+ }
141
+ function restoreStrings(code2, replacements) {
142
+ return code2.replace(/<@~(.*?)~@>/g, (_, replacementId) => {
143
+ return replacements[replacementId];
144
+ });
145
+ }
146
+ function injectSchemas(code2, refName) {
147
+ const { output: preservedCode, replacements } = preserveStrings(code2);
148
+ const preservedCodeWithSchemasInjected = preservedCode.replace(new RegExp(`\\b${refName}\\.`, "g"), `global.schemas[${refName}].`).replace(new RegExp(`\\b${refName}\\b`, "g"), `"${refName}"`);
149
+ return restoreStrings(preservedCodeWithSchemasInjected, replacements);
150
+ }
151
+
125
152
  // src/core/middleware.ts
126
153
  function detectMiddlewareName(code2) {
127
154
  const match = code2.match(/middleware:\s*(\w+)/);
@@ -130,9 +157,13 @@ function detectMiddlewareName(code2) {
130
157
 
131
158
  // src/core/transpile.ts
132
159
  var import_typescript = require("typescript");
160
+
161
+ // src/utils/removeImports.ts
133
162
  function removeImports(code2) {
134
- return code2.replace(/^import\s.+\sfrom\s.+;?$/gm, "").trim();
163
+ return code2.replace(/(^import\s+[^;]+;?$|^import\s+[^;]*\sfrom\s.+;?$)/gm, "").replace(/(^import\s+{[\s\S]+?}\s+from\s+["'][^"']+["'];?)/gm, "").trim();
135
164
  }
165
+
166
+ // src/core/transpile.ts
136
167
  function fixExports(code2) {
137
168
  const validMethods = ["GET", "POST", "PUT", "PATCH", "DELETE"];
138
169
  const exportFixer1 = validMethods.map((method) => `exports.${method} = void 0;
@@ -168,9 +199,6 @@ async function findAppFolderPath() {
168
199
  }
169
200
  return null;
170
201
  }
171
- function injectSchemas(code2, refName) {
172
- return code2.replace(new RegExp(`\\b${refName}\\.`, "g"), `global.schemas[${refName}].`).replace(new RegExp(`\\b${refName}\\b`, "g"), `"${refName}"`);
173
- }
174
202
  function safeEval(code, routePath) {
175
203
  try {
176
204
  return eval(code);
@@ -185,12 +213,8 @@ async function getRouteExports(routePath2, routeDefinerName, schemas) {
185
213
  const code2 = transpile(rawCode, routeDefinerName, middlewareName);
186
214
  const fixedCode = Object.keys(schemas).reduce(injectSchemas, code2);
187
215
  global.schemas = schemas;
188
- if (middlewareName) {
189
- }
190
216
  const result = safeEval(fixedCode, routePath2);
191
217
  delete global.schemas;
192
- if (middlewareName) {
193
- }
194
218
  return result;
195
219
  }
196
220
 
package/dist/index.js CHANGED
@@ -86,6 +86,33 @@ async function isDocumentedRoute(routePath2) {
86
86
  import fs3 from "node:fs/promises";
87
87
  import path2 from "node:path";
88
88
 
89
+ // src/core/injectSchemas.ts
90
+ function generateRandomString(length) {
91
+ return [...Array(length)].map(() => Math.random().toString(36)[2]).join("");
92
+ }
93
+ function preserveStrings(code2) {
94
+ let replacements = {};
95
+ const output = code2.replace(/(['"`])([^'`"]+)\1/g, (replacedString) => {
96
+ const replacementId = generateRandomString(32);
97
+ replacements = {
98
+ ...replacements,
99
+ [replacementId]: replacedString
100
+ };
101
+ return `<@~${replacementId}~@>`;
102
+ });
103
+ return { output, replacements };
104
+ }
105
+ function restoreStrings(code2, replacements) {
106
+ return code2.replace(/<@~(.*?)~@>/g, (_, replacementId) => {
107
+ return replacements[replacementId];
108
+ });
109
+ }
110
+ function injectSchemas(code2, refName) {
111
+ const { output: preservedCode, replacements } = preserveStrings(code2);
112
+ const preservedCodeWithSchemasInjected = preservedCode.replace(new RegExp(`\\b${refName}\\.`, "g"), `global.schemas[${refName}].`).replace(new RegExp(`\\b${refName}\\b`, "g"), `"${refName}"`);
113
+ return restoreStrings(preservedCodeWithSchemasInjected, replacements);
114
+ }
115
+
89
116
  // src/core/middleware.ts
90
117
  function detectMiddlewareName(code2) {
91
118
  const match = code2.match(/middleware:\s*(\w+)/);
@@ -94,9 +121,13 @@ function detectMiddlewareName(code2) {
94
121
 
95
122
  // src/core/transpile.ts
96
123
  import { transpile as tsTranspile } from "typescript";
124
+
125
+ // src/utils/removeImports.ts
97
126
  function removeImports(code2) {
98
- return code2.replace(/^import\s.+\sfrom\s.+;?$/gm, "").trim();
127
+ return code2.replace(/(^import\s+[^;]+;?$|^import\s+[^;]*\sfrom\s.+;?$)/gm, "").replace(/(^import\s+{[\s\S]+?}\s+from\s+["'][^"']+["'];?)/gm, "").trim();
99
128
  }
129
+
130
+ // src/core/transpile.ts
100
131
  function fixExports(code2) {
101
132
  const validMethods = ["GET", "POST", "PUT", "PATCH", "DELETE"];
102
133
  const exportFixer1 = validMethods.map((method) => `exports.${method} = void 0;
@@ -132,9 +163,6 @@ async function findAppFolderPath() {
132
163
  }
133
164
  return null;
134
165
  }
135
- function injectSchemas(code2, refName) {
136
- return code2.replace(new RegExp(`\\b${refName}\\.`, "g"), `global.schemas[${refName}].`).replace(new RegExp(`\\b${refName}\\b`, "g"), `"${refName}"`);
137
- }
138
166
  function safeEval(code, routePath) {
139
167
  try {
140
168
  return eval(code);
@@ -149,12 +177,8 @@ async function getRouteExports(routePath2, routeDefinerName, schemas) {
149
177
  const code2 = transpile(rawCode, routeDefinerName, middlewareName);
150
178
  const fixedCode = Object.keys(schemas).reduce(injectSchemas, code2);
151
179
  global.schemas = schemas;
152
- if (middlewareName) {
153
- }
154
180
  const result = safeEval(fixedCode, routePath2);
155
181
  delete global.schemas;
156
- if (middlewareName) {
157
- }
158
182
  return result;
159
183
  }
160
184
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omer-x/next-openapi-json-generator",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "a Next.js plugin to generate OpenAPI documentation from route handlers",
5
5
  "keywords": [
6
6
  "next.js",
@@ -45,15 +45,15 @@
45
45
  "build": "tsup"
46
46
  },
47
47
  "dependencies": {
48
- "@omer-x/package-metadata": "^1.0.0",
48
+ "@omer-x/package-metadata": "^1.0.2",
49
49
  "minimatch": "^10.0.1",
50
50
  "typescript": "^5.6.3",
51
51
  "zod-to-json-schema": "^3.23.5"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@omer-x/eslint-config": "^2.0.2",
55
- "@types/node": "^22.8.4",
56
- "eslint": "^9.13.0",
55
+ "@types/node": "^22.9.0",
56
+ "eslint": "^9.14.0",
57
57
  "semantic-release": "^24.2.0",
58
58
  "ts-jest": "^29.2.5",
59
59
  "ts-node": "^10.9.2",