@omer-x/next-openapi-json-generator 1.2.0 → 1.2.1
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 +32 -8
- package/dist/index.js +32 -8
- package/package.json +1 -1
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(
|
|
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(
|
|
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
|
|