@omer-x/next-openapi-json-generator 0.1.1 → 0.1.3
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/core/next.d.ts +1 -1
- package/dist/core/route.d.ts +2 -3
- package/dist/core/schema.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/core/next.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export declare function findAppFolderPath(): Promise<string | null>;
|
|
2
|
-
export declare function getRouteExports(routePath: string): Promise<Record<string, {
|
|
2
|
+
export declare function getRouteExports(routePath: string, schemas: Record<string, unknown>): Promise<Record<string, {
|
|
3
3
|
apiData?: unknown;
|
|
4
4
|
} | undefined>>;
|
package/dist/core/route.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { PathsObject } from "@omer-x/openapi-types/
|
|
2
|
-
type RouteRecord = {
|
|
1
|
+
import type { PathsObject } from "@omer-x/openapi-types/paths";
|
|
2
|
+
export type RouteRecord = {
|
|
3
3
|
method: string;
|
|
4
4
|
path: string;
|
|
5
5
|
apiData: object;
|
|
6
6
|
};
|
|
7
7
|
export declare function createRouteRecord(method: string, filePath: string, rootPath: string, apiData: unknown): RouteRecord;
|
|
8
8
|
export declare function bundlePaths(source: RouteRecord[]): PathsObject;
|
|
9
|
-
export {};
|
package/dist/core/schema.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { SchemaObject } from "@omer-x/openapi-types/
|
|
1
|
+
import type { SchemaObject } from "@omer-x/openapi-types/schema";
|
|
2
2
|
import type { ZodType } from "zod";
|
|
3
3
|
export declare function bundleSchemas(schemas: Record<string, ZodType>): Record<string, SchemaObject>;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var __webpack_modules__={489:function(e,t,r){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{c(n.next(e))}catch(e){a(e)}}function u(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(c){return function(u){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,n=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getDirectoryItems=t.directoryExists=void 0;var i=r(896),u=a(r(943)),c=a(r(760));t.directoryExists=function(e){return n(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,u.default.access(e,i.constants.F_OK)];case 1:return t.sent(),[2,!0];case 2:return t.sent(),[2,!1];case 3:return[2]}}))}))},t.getDirectoryItems=function e(t,r){return n(this,void 0,void 0,(function(){var n,a,i,s,l,p,f;return o(this,(function(o){switch(o.label){case 0:return n=[],[4,u.default.readdir(t)];case 1:a=o.sent(),i=0,s=a,o.label=2;case 2:return i<s.length?(l=s[i],p=c.default.resolve(t,l),[4,u.default.stat(p)]):[3,7];case 3:return o.sent().isDirectory()?[4,e(p,r)]:[3,5];case 4:return f=o.sent(),n.push.apply(n,f),[3,6];case 5:l===r&&n.push(p),o.label=6;case 6:return i++,[3,2];case 7:return[2,n]}}))}))}},37:function(__unused_webpack_module,exports,__webpack_require__){var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{c(n.next(e))}catch(e){a(e)}}function u(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}c((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(c){return function(u){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,n=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}},__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getRouteExports=exports.findAppFolderPath=void 0;var promises_1=__importDefault(__webpack_require__(455)),node_path_1=__importDefault(__webpack_require__(760)),dir_1=__webpack_require__(489),transpile_1=__webpack_require__(380);function findAppFolderPath(){return __awaiter(this,void 0,void 0,(function(){var e,t;return __generator(this,(function(r){switch(r.label){case 0:return e=node_path_1.default.resolve(process.cwd(),"src","app"),[4,(0,dir_1.directoryExists)(e)];case 1:return r.sent()?[2,e]:(t=node_path_1.default.resolve(process.cwd(),"app"),[4,(0,dir_1.directoryExists)(t)]);case 2:return r.sent()?[2,t]:[2,null]}}))}))}function advancedEval(code){try{return eval(code)}catch(e){if(e instanceof ReferenceError){var refName=e.message.replace("is not defined","").trim();return advancedEval(code.replace(new RegExp("\\b".concat(refName,"\\b"),"g"),'"'.concat(refName,'"')))}throw e}}function getRouteExports(e){return __awaiter(this,void 0,void 0,(function(){var t;return __generator(this,(function(r){switch(r.label){case 0:return[4,promises_1.default.readFile(e,"utf-8")];case 1:return t=r.sent(),[2,advancedEval((0,transpile_1.transpile)(t))]}}))}))}exports.findAppFolderPath=findAppFolderPath,exports.getRouteExports=getRouteExports},683:function(e,t){var r=this&&this.__assign||function(){return r=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},r.apply(this,arguments)};function n(e,t){return e.replace(t,"").replace("[","{").replace("]","}").replace("/route.ts","")}Object.defineProperty(t,"__esModule",{value:!0}),t.bundlePaths=t.createRouteRecord=void 0,t.createRouteRecord=function(e,t,r,o){return{method:e.toLocaleLowerCase(),path:n(t,r),apiData:o}},t.bundlePaths=function(e){return e.sort((function(e,t){return e.path.localeCompare(t.path)})),e.reduce((function(e,t){var n,o;return r(r({},e),((n={})[t.path]=r(r({},e[t.path]),((o={})[t.method]=r({},t.apiData),o)),n))}),{})}},363:function(e,t,r){var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bundleSchemas=void 0;var a=o(r(106));t.bundleSchemas=function(e){return Object.keys(e).reduce((function(t,r){var o;return n(n({},t),((o={})[r]=(0,a.default)(e[r],{target:"openApi3"}),o))}),{})}},380:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.transpile=void 0;var n=r(899);t.transpile=function(e){var t=["import createRoute from '@omer-x/next-openapi-route-handler'","import z from 'zod';",function(e){var t=["GET","POST","PUT","PATCH","DELETE"],r=t.map((function(e){return"exports.".concat(e," = void 0;\n")})),n="module.exports = { ".concat(t.map((function(e){return"".concat(e,": exports.").concat(e)})).join(", ")," }");return"".concat(r,"\n").concat(e,"\n").concat(n)}(function(e){return e.replace(/^import\s.+\sfrom\s.+;$/gm,"").trim()}(e))];return(0,n.transpile)(t.join("\n"))}},156:function(e,t,r){var n=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{c(n.next(e))}catch(e){a(e)}}function u(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,u)}c((n=n.apply(e,t||[])).next())}))},o=this&&this.__generator||function(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function u(u){return function(c){return function(u){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,u[0]&&(i=0)),i;)try{if(r=1,n&&(o=2&u[0]?n.return:u[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,u[1])).done)return o;switch(n=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,n=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){i.label=u[1];break}if(6===u[0]&&i.label<o[1]){i.label=o[1],o=u;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(u);break}o[2]&&i.ops.pop(),i.trys.pop();continue}u=t.call(e,i)}catch(e){u=[6,e],n=0}finally{r=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}([u,c])}}},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=a(r(386)),u=r(489),c=r(37),s=r(683),l=r(363);t.default=function(e){return n(this,void 0,void 0,(function(){var t,r,n,a,p,f,_,d,h,b,v,y,w;return o(this,(function(o){switch(o.label){case 0:return[4,(0,c.findAppFolderPath)()];case 1:if(!(t=o.sent()))throw new Error("This is not a Next.js application!");return[4,(0,u.getDirectoryItems)(t,"route.ts")];case 2:r=o.sent(),n=[],a=0,p=r,o.label=3;case 3:return a<p.length?(f=p[a],[4,(0,c.getRouteExports)(f)]):[3,6];case 4:for(_=o.sent(),d=0,h=Object.entries(_);d<h.length;d++)b=h[d],v=b[0],(y=b[1])&&y.apiData&&n.push((0,s.createRouteRecord)(v.toLocaleLowerCase(),f,t,y.apiData));o.label=5;case 5:return a++,[3,3];case 6:return[2,{openapi:"3.1.0",info:{title:(w=(0,i.default)()).serviceName,version:w.version},paths:(0,s.bundlePaths)(n),components:{schemas:(0,l.bundleSchemas)(e)},tags:[]}]}}))}))}},899:e=>{e.exports=require("typescript")},106:e=>{e.exports=require("zod-to-json-schema")},896:e=>{e.exports=require("fs")},943:e=>{e.exports=require("fs/promises")},455:e=>{e.exports=require("node:fs/promises")},760:e=>{e.exports=require("node:path")},386:(e,t,r)=>{r.r(t),r.d(t,{default:()=>i});const n=require("node:fs");var o=r(760);function a(e){const t=e.match(/^@([^/]+)\//);return t?`@${t[1]}`:null}function i(){const e=o.resolve(process.cwd(),"package.json"),t=n.readFileSync(e,"utf-8"),r=JSON.parse(t),i=r.name,u=function(e){return e.split("/").pop()??null}(i)??"unknown-package";return{scope:a(i),packageName:i,moduleName:u,serviceName:(c=u.replace(/-/g," "),c.split(" ").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),version:r.version};var c}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.exports}__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__=__webpack_require__(156);module.exports=__webpack_exports__})();
|
|
1
|
+
(()=>{"use strict";var __webpack_modules__={489:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getDirectoryItems=t.directoryExists=void 0;const a=r(896),s=o(r(943)),n=o(r(760));t.directoryExists=async function(e){try{return await s.default.access(e,a.constants.F_OK),!0}catch(e){return!1}},t.getDirectoryItems=async function e(t,r){const o=[],a=await s.default.readdir(t);for(const c of a){const a=n.default.resolve(t,c);if((await s.default.stat(a)).isDirectory()){const t=await e(a,r);o.push(...t)}else c===r&&o.push(a)}return o}},37:function(__unused_webpack_module,exports,__webpack_require__){var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getRouteExports=exports.findAppFolderPath=void 0;const promises_1=__importDefault(__webpack_require__(455)),node_path_1=__importDefault(__webpack_require__(760)),dir_1=__webpack_require__(489),transpile_1=__webpack_require__(380);async function findAppFolderPath(){const e=node_path_1.default.resolve(process.cwd(),"src","app");if(await(0,dir_1.directoryExists)(e))return e;const t=node_path_1.default.resolve(process.cwd(),"app");return await(0,dir_1.directoryExists)(t)?t:null}function injectSchemas(e,t){return e.replace(new RegExp(`\\b${t}\\.`,"g"),`global.schemas[${t}].`).replace(new RegExp(`\\b${t}\\b`,"g"),`"${t}"`)}async function getRouteExports(routePath,schemas){const content=await promises_1.default.readFile(routePath,"utf-8"),code=(0,transpile_1.transpile)(content),fixedCode=Object.keys(schemas).reduce(injectSchemas,code);global.schemas=schemas;const result=eval(fixedCode);return delete global.schemas,result}exports.findAppFolderPath=findAppFolderPath,exports.getRouteExports=getRouteExports},683:(e,t)=>{function r(e,t){return e.replace(t,"").replace("[","{").replace("]","}").replace("/route.ts","")}Object.defineProperty(t,"__esModule",{value:!0}),t.bundlePaths=t.createRouteRecord=void 0,t.createRouteRecord=function(e,t,o,a){return{method:e.toLocaleLowerCase(),path:r(t,o),apiData:a}},t.bundlePaths=function(e){return e.sort(((e,t)=>e.path.localeCompare(t.path))),e.reduce(((e,t)=>({...e,[t.path]:{...e[t.path],[t.method]:{...t.apiData}}})),{})}},363:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.bundleSchemas=void 0;const a=o(r(106));t.bundleSchemas=function(e){return Object.keys(e).reduce(((t,r)=>({...t,[r]:(0,a.default)(e[r],{target:"openApi3"})})),{})}},380:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.transpile=void 0;const o=r(899);t.transpile=function(e){const t=["import createRoute from '@omer-x/next-openapi-route-handler'","import z from 'zod';",function(e){const t=["GET","POST","PUT","PATCH","DELETE"];return`${t.map((e=>`exports.${e} = void 0;\n`))}\n${e}\nmodule.exports = { ${t.map((e=>`${e}: exports.${e}`)).join(", ")} }`}(function(e){return e.replace(/^import\s.+\sfrom\s.+;$/gm,"").trim()}(e))];return(0,o.transpile)(t.join("\n"))}},156:function(e,t,r){var o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const a=o(r(213)),s=r(489),n=r(37),c=r(683),i=r(363);t.default=async function(e){const t=await(0,n.findAppFolderPath)();if(!t)throw new Error("This is not a Next.js application!");const r=await(0,s.getDirectoryItems)(t,"route.ts"),o=[];for(const a of r){const r=await(0,n.getRouteExports)(a,e);for(const[e,s]of Object.entries(r))s&&s.apiData&&o.push((0,c.createRouteRecord)(e.toLocaleLowerCase(),a,t,s.apiData))}const u=(0,a.default)();return{openapi:"3.1.0",info:{title:u.serviceName,version:u.version},paths:(0,c.bundlePaths)(o),components:{schemas:(0,i.bundleSchemas)(e)},tags:[]}}},213:e=>{e.exports=require("@omer-x/package-metadata")},899:e=>{e.exports=require("typescript")},106:e=>{e.exports=require("zod-to-json-schema")},896:e=>{e.exports=require("fs")},943:e=>{e.exports=require("fs/promises")},455:e=>{e.exports=require("node:fs/promises")},760:e=>{e.exports=require("node:path")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.exports}var __webpack_exports__=__webpack_require__(156);module.exports=__webpack_exports__})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omer-x/next-openapi-json-generator",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "a Next.js plugin to generate OpenAPI documentation from route handlers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"next.js",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"dev": "webpack build --progress --mode=development --watch"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@omer-x/package-metadata": "^0.1.
|
|
42
|
+
"@omer-x/package-metadata": "^0.1.2",
|
|
43
43
|
"typescript": "^5.4.5",
|
|
44
44
|
"zod-to-json-schema": "^3.23.0"
|
|
45
45
|
},
|